Запуск файла на удаленном сервере по ssh, соблюдая строку shebang - PullRequest
0 голосов
/ 30 ноября 2018

Итак, у меня есть файл.В настоящее время это выглядит так:

#!/usr/bin/env python3
print(1)

Я хочу настроить его на удаленной машине.Самый простой способ сделать это - запустить

< test.py ssh server-name python3

Но что, если я не знаю, что это скрипт на python (или я могу не знать, что это python3, а не python2) и хотите уважать его шебанг?

Я пытался

< test.py ssh server-name exec /dev/stdin

Но это не удалось, поскольку /dev/stdin не является исполняемым

Для простоты давайте предположим, что оба сервера являются новейшими Ubuntu.

Итак, вопрос в том, как запустить произвольный скрипт, соблюдая при этом шебанг?

1 Ответ

0 голосов
/ 30 ноября 2018

Это ОС, которая использует строку shebang: см. Вашу справочную страницу execve(2).Файл сценария должен быть исполняемым и находиться в системе.

Вы можете извлечь его из сценария для использования на удаленной стороне: untested:

shebang=$(sed -n '1 {s/^#!//p; q}' test.py)
ssh server-name "$shebang -" < test.py
...