How to have local shell variables in a ksh script seen on remove server in SSH block?
I have googled this and found many solutions, but none of them are working for me. I am in a korn shell, most others reference bsh, maybe that is the issue? Anyway, all I am trying to do is use a variable I have declared in my main script in a remote shell I am running through ssh.
So I have a script with code similar to this:
But filepath and filename are blank in the remote shell as they are declared locally. How do I get those values seen in the SSH block?
I have googled this and found many solutions, but none of them are working for me. I am in a korn shell, most others reference bsh, maybe that is the issue? Anyway, all I am trying to do is use a variable I have declared in my main script in a remote shell I am running through ssh.
So I have a script with code similar to this:
But filepath and filename are blank in the remote shell as they are declared locally. How do I get those values seen in the SSH block?
either:
or
Last edited by vgersh99; 06-21-2019 at 11:24 AM..
Reason: fixed double-quoting in the 2nd suggestion
Thanks but these don't work. Escaping the variables with a backslash does nothing - tried in double quotes also as in \"$var" and either way they are still blank in the SSH block. If I just say
and then echo $fn right afterwards either way it is blank.
I'm not really sure what you are trying to show in the second one. Yes I can declare a variable within the SSH part and use it there, but that doesn't help me. I need to be able to reference the variables I declared before I accessed the remote server.
--- Post updated at 09:18 AM ---
I've been playing around with it some more and here is something I've found that really stumps me. As I said, escaping it with the backslash does nothing. However if I use double quotes ONLY, it does, sort of:
If I say within the SSH block,
It returns nothing: fp =
However if use doublequotes:
echo fp = "$filepath"
This works, it displays fp = /xxx/yyy/zzz/
However, it still won't assign it to a local variable or work in an expression. So if I try this:
I get
Why is it that i can evaluate it in the echo statement but it won't assign it to the remote variable?
Last edited by RavinderSingh13; 06-21-2019 at 02:13 PM..
I think that code in unquoted here documents is problematic: too many levels of quoting.
In zsh you can chain two (or more) redirections
The first part EOT1 is unquoted and assigns the local variables to the remote variables.
Instead of directly feeding the login shell (where ssh might complain that a tty is missing) it is more correct to run an explicit /bin/sh (or /bin/bash)
Having this, with any standard shell you can pass the local variables as parameters
These 2 Users Gave Thanks to MadeInGermany For This Post:
Thank you for that MadeinGermany. The first way didn't work (maybe because I'm using korn shell) but the second one using /bin/sh -s $filepath $filename << 'ENDSSH' did the trick.
How to get variable values back from commands executing remotely via ssh.
So now I can not figure out how to return a value from within this SSH block. So as in the above discussion I can pass parameters from my local machine to the commands running on a remote machine via ssh:
Now I want to send a return code or messages that are produced on that remote machine and get those values back onto my local server where the code is running to decide what to do based on success or not on the remote server. I've searched and not found a solution that works to do this. (this is a korn shell by the way) How can I get variable values back from within that ENDSSH block?
local script:
cat > first.sh
cd /tmp
echo $PWD
echo `whoami`
cd /tmp/123
tar -cvf 789.tar 456
sleep 10
except script:
cat > first
#!/usr/bin/expect
set ip 10.5.15.20
set user "xyz123"
set password "123456"
set script first.sh
spawn sh -c "ssh $user@$ip bash < $script" (1 Reply)
Hello,
I need to create a shell script which will copy files - which are created on particular date and starting with particular name - to local windows XP machine.
Is this possible.?
Currently it is being done manually using winscp (1 Reply)
I need to run a local shell script on a remote machine. I am able to achieve that by executing the command
> ssh -qtt user@host < test.sh
However, when I try to pass arguments to test.sh it fails.
Any pointers would be appreciated. (7 Replies)
I have a script like this (Yes, I know the DAY6 number isn't right - I'm just testing at this point):
DAY0=`date -I`
DAY1=`date -I -d "1 day ago"`
DAY6=`date -I -d "2 days ago"`
if
then
ssh root@synology1 nohup rm -rf "/volume1/Fileserver/$DAY6"
fi
I've tested the line to remove the... (5 Replies)
Hi All,
In a Shell scriipt with a SQL block I want to issue a query against a local DB and a remote DB on a remote server. The shell script is running locally.
This is how I connect to the local server. But I want the query to reference remote table in the join. Question can I specify a... (1 Reply)
HI Unix Gurus,
I an stuck in an interesting issue, where I am trying to execute a script on remote server after ssh.
The script on remote server is interactive,. Whenever it is called it hangs where it expects input from terminal and I have to terminate it.
I have searched through fourm... (12 Replies)
Hi
newbeeeee alarm
i want to send a little script over ssh
this script mus download a report.tar then rename and move. the report name format is report_<host.with.dot>-10-09-20-11:55:25.tar
function remote_cmd_mv
{
_host=$1
ARCHROOTDIR='/tmp'
... (8 Replies)
Hi all,
Just like to ask if it is possible to do the following:
1. Have a shell script that calls ssh username@destinationhost
2. Upon successful verification, we ssh into the destination host and automatically use ksh to run a shell script that resides in the destination host. (Hopefully no... (8 Replies)
Greetings all,
I'm in the midst of writing a login component for a series of shell scripts. What my login script does is this:
1. Prompt for username and read in username
2. Prompt for destination host and read in destination host
3. run ssh username and destination host
4. After user keys... (0 Replies)
Hello,
I have a problem with trying to run a shell script that reads in user input, validates, and sets to a 'default' value if the input is not valid. I cannot get the portion of resetting to a default value to work. These lines are skipped, and the
value of x is still whatever the user... (1 Reply)