Linux 在远程计算机上执行部分shell脚本

Linux 在远程计算机上执行部分shell脚本,linux,shell,ssh,Linux,Shell,Ssh,我通过shell脚本(通过在脚本中放置ssh命令)登录到远程机器。 在ssh命令之后,脚本的其余行将在当前机器上执行,而不是在远程机器上执行。如何使其余的shell脚本行在远程计算机上执行 假设这是我的剧本 ssh username@ip-address ls whoami ---- ssh之后的其余行应该在远程机器上执行,而不是在当前机器上执行。如何实现这一点?使用带有-t选项的ssh命令。例如: ssh -t myremotehost 'uptime' name@myremotehost

我通过shell脚本(通过在脚本中放置ssh命令)登录到远程机器。 在ssh命令之后,脚本的其余行将在当前机器上执行,而不是在远程机器上执行。如何使其余的shell脚本行在远程计算机上执行

假设这是我的剧本

ssh username@ip-address 
ls
whoami
----

ssh之后的其余行应该在远程机器上执行,而不是在当前机器上执行。如何实现这一点?

使用带有
-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.36

使用带有
-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.36

使用带有
-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.36

使用带有
-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.36

一种可能的解决方案是使用
herdeoc
,如下例所示:

$ ssh example.foo.com -- <<@@
> ls /etc/
> cat /etc/passwd
> @@
$ssh example.foo.com--cat/etc/passwd
> @@
基本上,第一行@@和最后一行@之间的所有内容都将在远程计算机上执行

也可以通过将文件内容读入变量来使用文件内容:

$ MYVAR=`cat ~/foo.txt`
$ ssh example.foo.com -- <<@@
> $MYVAR
> @@
$MYVAR=`cat~/foo.txt`
$ssh example.foo.com--@@
或者只需在heredoc内执行相同的操作:

$ ssh example.foo.com -- <<@@
> `cat ~/foo.txt`
> @@
$ssh example.foo.com--@@

一种可能的解决方案是使用
herdoc
,如下例所示:

$ ssh example.foo.com -- <<@@
> ls /etc/
> cat /etc/passwd
> @@
$ssh example.foo.com--cat/etc/passwd
> @@
基本上,第一行@@和最后一行@之间的所有内容都将在远程计算机上执行

也可以通过将文件内容读入变量来使用文件内容:

$ MYVAR=`cat ~/foo.txt`
$ ssh example.foo.com -- <<@@
> $MYVAR
> @@
$MYVAR=`cat~/foo.txt`
$ssh example.foo.com--@@
或者只需在heredoc内执行相同的操作:

$ ssh example.foo.com -- <<@@
> `cat ~/foo.txt`
> @@
$ssh example.foo.com--@@

一种可能的解决方案是使用
herdoc
,如下例所示:

$ ssh example.foo.com -- <<@@
> ls /etc/
> cat /etc/passwd
> @@
$ssh example.foo.com--cat/etc/passwd
> @@
基本上,第一行@@和最后一行@之间的所有内容都将在远程计算机上执行

也可以通过将文件内容读入变量来使用文件内容:

$ MYVAR=`cat ~/foo.txt`
$ ssh example.foo.com -- <<@@
> $MYVAR
> @@
$MYVAR=`cat~/foo.txt`
$ssh example.foo.com--@@
或者只需在heredoc内执行相同的操作:

$ ssh example.foo.com -- <<@@
> `cat ~/foo.txt`
> @@
$ssh example.foo.com--@@

一种可能的解决方案是使用
herdoc
,如下例所示:

$ ssh example.foo.com -- <<@@
> ls /etc/
> cat /etc/passwd
> @@
$ssh example.foo.com--cat/etc/passwd
> @@
基本上,第一行@@和最后一行@之间的所有内容都将在远程计算机上执行

也可以通过将文件内容读入变量来使用文件内容:

$ MYVAR=`cat ~/foo.txt`
$ ssh example.foo.com -- <<@@
> $MYVAR
> @@
$MYVAR=`cat~/foo.txt`
$ssh example.foo.com--@@
或者只需在heredoc内执行相同的操作:

$ ssh example.foo.com -- <<@@
> `cat ~/foo.txt`
> @@
$ssh example.foo.com--@@

是无密码登录

如果是,您可以使用管道在远程计算机上执行该语句

比如:


您的登录是无密码的

如果是,您可以使用管道在远程计算机上执行该语句

比如:


您的登录是无密码的

如果是,您可以使用管道在远程计算机上执行该语句

比如:


您的登录是无密码的

如果是,您可以使用管道在远程计算机上执行该语句

比如:


ssh-tuser@remotehost“正常运行时间” user@remotehost的密码: 23:35:33上升2:05,3个用户,平均负载:0.79、0.52、0.60 与远程服务器的连接已关闭


当您指定-t时,它将在远程计算机中打开终端并执行命令。

ssh-tuser@remotehost“正常运行时间” user@remotehost的密码: 23:35:33上升2:05,3个用户,平均负载:0.79、0.52、0.60 与远程服务器的连接已关闭


当您指定-t时,它将在远程计算机中打开终端并执行命令。

ssh-tuser@remotehost“正常运行时间” user@remotehost的密码: 23:35:33上升2:05,3个用户,平均负载:0.79、0.52、0.60 与远程服务器的连接已关闭


当您指定-t时,它将在远程计算机中打开终端并执行命令。

ssh-tuser@remotehost“正常运行时间” user@remotehost的密码: 23:35:33上升2:05,3个用户,平均负载:0.79、0.52、0.60 与远程服务器的连接已关闭


当您指定-t时,它会在远程机器中打开终端并执行命令。

可能重复的可能重复的可能重复的可能重复的可能重复的,例如,我有一些120-130行需要在远程机器上执行。那么,我如何将这些行作为参数传递给sshA Herdeoc仍然可以工作。如果这些行在另一个文件中,它可以读入一个变量,变量可以在herdoc中展开。考虑发出多个命令可能是更好的选择,第一个命令是在/tmp中将文件作为脚本向上推,第二个命令是执行它。那么,我如何将这些行作为参数传递给sshA Herdeoc仍然可以工作。如果这些行在另一个文件中,它可以读入一个变量,变量可以在herdoc中展开。考虑发出多个命令可能是更好的选择,第一个命令是在/tmp中将文件作为脚本向上推,第二个命令是执行它。那么,我如何将这些行作为参数传递给sshA Herdeoc仍然可以工作。如果这些行在另一个文件中,它可以读入一个变量,变量可以在herdoc中展开。考虑发出多个命令可能是更好的选择,第一个命令是在/tmp中将文件作为脚本向上推,第二个命令是执行它