在本地机器上执行远程脚本

在本地机器上执行远程脚本

本地和远程机器都是Centos 7机器,当我从本地机器运行远程脚本时,该脚本位于/home/user_name/scripts目录中

我得到以下信息:

$ ssh [email protected] "bash -s" -- < scripts/machine-info.sh
-bash: scripts/machine-info.sh: No such file or directory

运行此命令会返回预期的结果:

$ ssh [email protected] 'scripts/machine-info.sh'
date is:  Thu Jul 25 01:43:35 CEST 2019
Hostname is:  linuxtb3
IP address is: 192.168.1.xx

$ ssh [email protected] 'bash -s -- < scripts/machine-info.sh'
date is:  Thu Jul 25 01:45:13 CEST 2019
Hostname is:  linuxtb3
IP address is: 192.168.1.xx

为什么这个命令会返回这个答案?

$ ssh [email protected] "bash -s" -- < scripts/machine-info.sh
-bash: scripts/machine-info.sh: No such file or directory

答案1

在你的指挥下

ssh [email protected] "bash -s" -- < scripts/machine-info.sh

重定向scripts/machine-info.sh发生在本地。这是对命令的重定向ssh,数据最终将到达远程bash -s进程的标准输入(如果文件在本地存在,但它不存在,这就是您收到错误的原因)。

在您显示的其他示例中,脚本是在远程计算机上访问的。

例如,在

ssh [email protected] 'bash -s -- < scripts/machine-info.sh'

由于命令字符串周围有单引号,因此重定向是在远程计算机上执行的命令的一部分。

相关内容