Ответ 1
ssh [email protected] 'bash -s' < local_script.sh
Я получил это из этого потока: Как использовать SSH для запуска оболочки script на удаленном компьютере?
Скажем, что у меня есть следующий 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
здесь
ssh [email protected] 'bash -s' < local_script.sh
Я получил это из этого потока: Как использовать SSH для запуска оболочки script на удаленном компьютере?
В принятом ответе я вижу:
Я хотел бы иметь его как один лайнер. Не могли бы вы сделать небольшой пример кода?
Это должно быть:
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
cat foo.sh | ssh -T [email protected]
будет хитростью. Параметр -T
подавляет предупреждение, которое вы в противном случае получили бы, потому что вы вставляете входной файл из файла.
cat foo.sh | ssh HOSTNAME
Теперь протестируйте, но обращайтесь с осторожностью!:)
(удалена тире (см. комментарии) и почти все:))
Вы можете использовать runoverssh:
sudo apt install runoverssh
runoverssh -s localscript.sh user host
-s
запускает локальный скрипт удаленно