Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过SSH执行存储在文件中的Bash脚本_Bash_Ssh - Fatal编程技术网

通过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