我通过shell脚本登录远程机器(通过在脚本中放置ssh命令)。 在ssh命令之后,脚本的其余行将在当前计算机而不是远程计算机上执行。如何使其余的shell脚本行在远程机器上执行。?
让我们说这是我的剧本
ssh username@ip-address
ls
whoami
----
ssh之后的其余行应该在远程机器而不是当前机器上执行。怎么做到这一点?
答案 0 :(得分:2)
一种可能的解决方案是使用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`
> @@
答案 1 :(得分:1)
您的登录名是否无密码。
如果是,您可以使用管道来执行远程计算机上的语句
像:
cat myshellscript.sh | ssh blah@blah.com -q
答案 2 :(得分:0)
使用ssh
命令和-t
选项。例如:
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
答案 3 :(得分:0)
ssh -t user @ remotehost&#39;正常运行时间&#39; user @ remotehost&#39;密码: 23:35:33 up 2:05,3位用户,平均负载:0.79,0.52,0.60 连接到远程关闭。
指定-t时,它会打开远程机器中的终端并执行命令。