Выполнить Bash script, сохраненный в файле через SSH

Скажем, что у меня есть следующий Bash script, хранящийся в файле foo.sh:

#!/bin/bash
echo foo

Не имея scp файла, как я могу выполнить script, хранящийся в foo.sh на удаленной машине?

Я пробовал следующее (с несколькими вариантами) без успеха:

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

eval `cat foo.sh`, кажется, расширяется до eval #!/bin/bash echo foo здесь

Ответы

Ответ 2

В принятом ответе я вижу:

Я хотел бы иметь его как один лайнер. Не могли бы вы сделать небольшой пример кода?

Это должно быть:

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

или лучше, с документом

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

Ответ 3

cat foo.sh | ssh -T [email protected] будет хитростью. Параметр -T подавляет предупреждение, которое вы в противном случае получили бы, потому что вы вставляете входной файл из файла.

Ответ 4

cat foo.sh | ssh HOSTNAME 

Теперь протестируйте, но обращайтесь с осторожностью!:)
(удалена тире (см. комментарии) и почти все:))

Ответ 5

Вы можете использовать runoverssh:

sudo apt install runoverssh
runoverssh -s localscript.sh user host

-s запускает локальный скрипт удаленно