![在本地机器上执行远程脚本](https://linux22.com/image/157784/%E5%9C%A8%E6%9C%AC%E5%9C%B0%E6%9C%BA%E5%99%A8%E4%B8%8A%E6%89%A7%E8%A1%8C%E8%BF%9C%E7%A8%8B%E8%84%9A%E6%9C%AC.png)
本地和远程机器都是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'
由于命令字符串周围有单引号,因此重定向是在远程计算机上执行的命令的一部分。