Execute Bash script stored in a file over SSH

2019-02-03 04:32发布

Say I have the following Bash script stored in the file foo.sh:

#!/bin/bash
echo foo

Without having to scp the file, how could I execute the script stored in foo.sh on a remote machine?

I have tried the following (with a few variations) to no success:

$ ssh root@remote eval `cat foo.sh`

eval `cat foo.sh`seems to expand to eval #!/bin/bash echo foo here

标签: bash ssh
4条回答
Explosion°爆炸
2楼-- · 2019-02-03 04:40
cat foo.sh | ssh HOSTNAME 

Now tested, though: handle with care! :)
(removed dash (see comments) and nearly everything :) )

查看更多
Juvenile、少年°
3楼-- · 2019-02-03 04:41

In accepted answer I see:

I'd like to have it as a one liner. Could you make a small code example?

That should be it:

ssh root@MachineB 'bash -s -- uno' < local_script.sh

or better, with a here-in document

ssh root@MachineB 'bash -s -- uno' <<\EOF
> date
> echo $1
> EOF
jue sep 18 13:01:25 CEST 2014
uno
查看更多
等我变得足够好
4楼-- · 2019-02-03 04:53
ssh root@MachineB 'bash -s' < local_script.sh

I got it from that thread: How to use SSH to run a shell script on a remote machine?

查看更多
爱情/是我丢掉的垃圾
5楼-- · 2019-02-03 05:02

cat foo.sh | ssh -T root@remote will to the trick. The -T option suppresses a warning you would otherwise get because you're piping input from a file.

查看更多
登录 后发表回答