我正在尝试直接在ssh上运行python脚本,如下所示:
ssh hostname python_script
不幸的是,python启动后没有任何事情发生,事实上即使在我断开SSH连接后,远程创建的python进程仍然“活着”。如果我尝试启动python解释器,会发生同样的事情,但其他命令工作正常。
答案 0 :(得分:7)
试试ssh -t hostname python_script
。默认情况下,ssh
在分配给程序运行时不会分配伪tty进行交互(尽管如果你只做ssh hostname
会这样做); -t
告诉它这样做。
答案 1 :(得分:1)
ssh -t是一个很好的建议。
您也可以尝试在代码中使用print语句/函数,写入/ var / tmp中的某个文件或其他任何文件,以查看它正在做什么。
查看进程正在做什么的另一种方法是使用类似Linux的strace: http://stromberg.dnsalias.org/~strombrg/debugging-with-syscall-tracers.html
EG:ssh remote.host.com'strace -f -o /var/tmp/my_script.strace my_script'。然后检查/var/tmp/my_script.strace以查看它被卡住的内容。阅读strace输出并不总是很简单,但至少它很有趣。 :)
答案 2 :(得分:0)
SSH不会导致运行python脚本出现问题。一般来说,需要注意的是环境变量的变化以及对标准输入/输出的任何期望,因为这些可能会导致类似于您所描述的症状。直接运行python会挂起,因为如果没有运行脚本,python希望能够与stdin / stdout交互。
测试基本环境是否正常工作的一种简单方法是创建一个包含以下内容的测试程序(test.py):
print "foo"
然后
ssh hostname python test.py
你应该把“foo”作为回应。