执行bash脚本

问题描述:

说我已经存储在文件foo.sh在以下bash脚本:执行bash脚本

#!/bin/bash 
echo foo 

而不必scp文件,我怎么能执行存储在foo.sh上的脚本远程机器?

我曾尝试以下(有一些变化)没有成功:

$ ssh [email protected] eval `cat foo.sh` 

eval `cat foo.sh`似乎扩大到eval #!/bin/bash echo foo这里

+0

可能重复? ](http://*.com/questions/305035/how-to-use-ssh-to-run-shell-script-on-a-remote-machine) – aioobe 2011-04-14 13:07:46

+0

你当然想要设置SSH它不需要密码:http://www.csua.berkeley.edu/~ranga/notes/ssh_nopass.html – 2013-01-11 01:40:53

+0

这个问题的一些答案给了我糖尿病。 – Zenexer 2013-08-22 01:50:48

ssh [email protected] 'bash -s' < local_script.sh 

我从该线程得到它:How to use SSH to run a shell script on a remote machine?

+0

如何将参数传递给该脚本? – Agostino 2014-03-04 14:27:39

+0

@Agostino:如果您需要使用某些参数调用local_script.sh,只需传递一个脚本的名称,调用local_script.sh并添加必要的参数,而不是直接调用local_script.sh: – 2014-04-16 12:47:02

+0

我希望将它作为一个班轮。你能做一个小代码的例子吗? – Agostino 2014-04-17 14:45:06

cat foo.sh | ssh -T [email protected]将要诀窍。 -T选项可以抑制由于从文件输入管道而导致的警告。

+0

猫的无用用 – 2011-04-14 14:46:07

+0

听说猫的无用用途。 ssh root @ remote 2011-04-14 15:29:32

cat foo.sh | ssh HOSTNAME 

现在测试,但:小心处理! :)
(删除破折号(见注释)和几乎所有:))

+0

你为什么要'猫foo.sh -'?这将阻止,等待用户点击'ctrl-D' – 2011-04-14 14:45:25

+0

那么,我没有可测试的环境。没有短跑?我纠正了它。 – 2011-04-14 17:53:05

+0

你不需要破折号,没有从标准输入读取参数的'cat'。但是你根本不需要'cat',也不需要'foo.sh'文件。只需运行'sh'。 – Idelic 2011-04-14 23:26:02

在接受的答案我看到:

我想它作为一个衬垫。你能做一个小代码的例子吗?

这应该是它:

ssh [email protected] 'bash -s -- uno' < local_script.sh 

或更好,用在这里 - 在文件的[如何使用ssh在远程机器上运行shell脚本

ssh [email protected] 'bash -s -- uno' <<\EOF 
> date 
> echo $1 
> EOF 
jue sep 18 13:01:25 CEST 2014 
uno