I am logging into remote machine through shell script (by placing ssh command in script). After ssh command ,The remaining lines of the script are getting executed on the curre
Use ssh
command with -t
options. For example:
ssh -t myremotehost 'uptime'
name@myremotehost's password:
10:14:14 up 91 days, 21:20, 5 users, load average: 0.20, 0.35, 0.36
Is your login passwordless.
If yes, you can just use pipe to execute the statement on the remote machine
like:
cat myshellscript.sh | ssh blah@blah.com -q
One possible solution would be to use a heredoc
as in the following example:
$ ssh example.foo.com -- <<@@
> ls /etc/
> cat /etc/passwd
> @@
Basically everything between the @@ on the first line and the last line will be executed on the remote machine.
You could also use the contents of a file by either reading the contents of the file into a variable:
$ MYVAR=`cat ~/foo.txt`
$ ssh example.foo.com -- <<@@
> $MYVAR
> @@
or by simply performing the same action inside the heredoc:
$ ssh example.foo.com -- <<@@
> `cat ~/foo.txt`
> @@
ssh -t user@remotehost 'uptime' user@remotehost's password: 23:35:33 up 2:05, 3 users, load average: 0.79, 0.52, 0.60 Connection to remote closed.
When you specify -t, it opens the terminal in remote machine and execute the command.