3

我正在尝试直接在 ssh 上运行 python 脚本,如下所示:

ssh hostname python_script

不幸的是,python 启动后什么都没有发生,事实上,即使在我与 SSH 断开连接后,远程创建的 python 进程仍保持“活动”状态。如果我尝试启动 python 解释器,也会发生同样的事情,但其他命令工作正常。

4

3 回答 3

7

试试ssh -t hostname python_script。默认情况下,ssh在给定程序运行时不会分配要与之交互的伪 tty(尽管如果您只是这样做的话ssh hostname);-t告诉它这样做。

于 2012-08-16T17:37:25.140 回答
1

ssh -t 是个好建议。

您也可以尝试在代码中添加打印语句/函数,写入 /var/tmp 或其他任何文件中的某个文件,以查看它在做什么。

另一种查看进程正在做什么的方法是使用 Linux 的 strace 之类的东西:http: //stromberg.dnsalias.org/~strombrg/debugging-with-syscall-tracers.html

例如:ssh remote.host.com 'strace -f -o /var/tmp/my_script.strace my_script'。然后检查 /var/tmp/my_script.strace 看看它卡在什么上面。读取 strace 输出并不总是那么简单,但至少它很有趣。:)

于 2012-08-16T18:35:21.420 回答
0

SSH 不会导致运行 python 脚本出现问题。一般来说,需要注意的是环境变量的变化以及对标准输入/输出的任何期望,因为这些可能会导致类似于您所描述的症状。直接运行 python 将挂起,因为如果不运行脚本,python 期望能够与 stdin/stdout 交互。

测试基本环境是否正常工作的一种简单方法是创建一个测试程序 (test.py),其中包含:

print "foo"

然后

ssh hostname python test.py

你应该得到“foo”作为回应。

于 2012-08-16T17:16:33.097 回答