我通过shell脚本登录到远程机器(通过在脚本中放置ssh命令)。在ssh命令之后,脚本的其余行将在当前计算机上执行,而不是在远程计算机上执行。如何让其余的shell脚本行在远程机器上执行?
假设这是我的脚本
ssh username@ip-address
ls
whoami
----ssh之后的其余行应该在远程机器上执行,而不是在当前机器上执行。如何做到这一点?
发布于 2013-10-09 15:17:25
一种可能的解决方案是使用heredoc,如下例所示:
$ ssh example.foo.com -- <<@@
> ls /etc/
> cat /etc/passwd
> @@基本上,第一行和最后一行中的@@之间的所有内容都将在远程机器上执行。
您还可以通过将文件内容读取到变量中来使用文件内容:
$ MYVAR=`cat ~/foo.txt`
$ ssh example.foo.com -- <<@@
> $MYVAR
> @@或者只需在heredoc文档中执行相同的操作:
$ ssh example.foo.com -- <<@@
> `cat ~/foo.txt`
> @@发布于 2013-10-09 15:20:04
你的登录是无密码的。
如果是,则只需使用管道在远程计算机上执行该语句
像这样:
cat myshellscript.sh | ssh blah@blah.com -q发布于 2013-10-09 15:17:09
使用带有-t选项的ssh命令。例如:
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.36https://stackoverflow.com/questions/19265375
复制相似问题