通过SSH执行存储在文件中的Bash脚本
假设我在文件通过SSH执行存储在文件中的Bash脚本,bash,ssh,Bash,Ssh,假设我在文件foo.sh中存储了以下Bash脚本: #!/bin/bash echo foo 不必scp文件,我如何在远程机器上执行存储在foo.sh中的脚本 我尝试了以下方法(有一些变化)但没有成功: $ ssh root@remote eval `cat foo.sh` eval`cat foo.sh`似乎扩展到了eval#/bin/bash echo foo此处sshroot@MachineB“bash-s”
foo.sh
中存储了以下Bash脚本:
#!/bin/bash
echo foo
不必scp
文件,我如何在远程机器上执行存储在foo.sh
中的脚本
我尝试了以下方法(有一些变化)但没有成功:
$ ssh root@remote eval `cat foo.sh`
eval`cat foo.sh`
似乎扩展到了eval#/bin/bash echo foo
此处sshroot@MachineB“bash-s”ssh root@MachineB 'bash -s' < local_script.sh
我从那个线程中得到了它:
cat foo.sh|ssh-Troot@remote
将继续玩这个把戏。-T
选项将抑制一个警告,否则您将收到该警告,因为您正在从文件中进行管道输入
cat foo.sh | ssh HOSTNAME
不过,现在已经测试过了:小心轻放!:)(删除了破折号(见注释)和几乎所有内容:)在接受的答案中,我看到:
我想把它作为一个班轮。你能做一个小的代码示例吗 应该是这样的:
ssh root@MachineB 'bash -s -- uno' < local_script.sh
sshroot@MachineB'bash-s--uno'
或者更好,用一个在这里的文件
ssh root@MachineB 'bash -s -- uno' <<\EOF
> date
> echo $1
> EOF
jue sep 18 13:01:25 CEST 2014
uno
sshroot@MachineB“bash-s--uno”echo$1
>EOF
jue sep 18 13:01:25 CEST 2014
联合国组织
您可以使用:
sudo-apt-install runoversh
runoverssh-s localscript.sh用户主机
-s
远程运行本地脚本您当然希望设置SSH,使其不需要密码:为什么cat foo.sh-
?这将阻塞,等待用户点击ctrl-D
好吧,我没有可测试的环境。没有破折号?我更正了。你不需要破折号,cat
不带参数读取标准输入。但是您根本不需要cat
,也不需要foo.sh
文件。只需运行sh
。听听cat的无用用法。sshroot@remote