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 current machine rather than remote machine. How to make the rest of shell script lines execute on remote machine.?
Lets say this is my script
ssh username@ip-address
ls
whoami
----
The rest of lines after ssh should execute on remote machine rather than the current machine. How to achieve this?
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.
Is your login passwordless.
If yes, you can just use pipe to execute the statement on the remote machine
like:
One possible solution would be to use a
heredoc
as in the following example: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:
or by simply performing the same action inside the heredoc:
Use
ssh
command with-t
options. For example: