Передайте скрипт Python в ssh, но сначала выполните другие команды bash

Очень удобный способ выполнить скрипт Python на удаленном сервере — это передать его в ssh:

cat script.py | ssh [email protected] python -

где - кажется необязательным.

Как таким образом выполнить другие команды bash перед запуском скрипта Python?

Это не работает:

cat script.py | ssh [email protected] "cd ..; python -" # WRONG!

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


person 1''    schedule 02.01.2015    source источник
comment
Совет: если вы используете этот метод, используйте python -u для небуферизованного вывода, чтобы стандартный вывод отображался сразу после печати.   -  person 1''    schedule 03.01.2015
comment
Всегда ли искажение происходит в первых нескольких строках?   -  person Yatharth Agarwal    schedule 16.08.2015
comment
@YatharthROCK Я не помню, извини.   -  person 1''    schedule 17.08.2015


Ответы (1)


Вы можете создать подоболочку:

cat script.py | ssh [email protected] "(cd ..; python -)"

Или временный файл:

cat script.py | ssh [email protected] "tee >/tmp/tmp.py; cd ..; python /tmp/tmp.py; rm /tmp/tmp.py"
person Yatharth Agarwal    schedule 02.01.2015
comment
Спасибо, не знал, как захватить stdin. - person 1''; 02.01.2015