将 Python 脚本通过管道传输到 ssh,但先执行其他 bash 命令

Pipe Python script to ssh, but do other bash commands first

在远程服务器上执行 Python 脚本的一种非常方便的方法是 pipe it to ssh:

cat script.py | ssh user@address.com python -

其中 - 似乎是可选的。

如何在运行 Python 脚本之前执行其他 bash 命令?

这不起作用:

cat script.py | ssh user@address.com "cd ..; python -" # WRONG!

有趣的是,这会发送一个非确定性损坏版本的 Python 脚本,每次运行它都会在不同的地方给出语法错误!

您可以创建子shell:

cat script.py | ssh user@address.com "(cd ..; python -)"

或临时文件:

cat script.py | ssh user@address.com "tee >/tmp/tmp.py; cd ..; python /tmp/tmp.py; rm /tmp/tmp.py"