所以我一直在挠头试图弄清楚这一点,我有点卡住了。
我正在使用 Python 的子进程模块和 Popen 打开一个 PuTTY 会话(使用 plink.exe),并连接到远程主机。这意味着我可以访问会话输出。
我正在尝试找到一个命令,或者编写一个我可以执行的脚本,它会告诉我处理会话的远程 sshd 进程的 PID。如果只有一个 SSH 会话,我可以使用“ps -f | grep sshd”列出 sshd 进程,并通过解析该行找到 PID。
问题是,同时有多个 SSH 连接到该主机,因此有多个 sshd 实例正在运行。有谁知道我可以通过从同一会话运行命令来确定运行特定会话的进程的方法?
注意:以下脚本适用于 OS X 和多种形式的 Linux。
#!/bin/sh
TTY=$(tty)
TTYID=${TTY##*/}
ps -f | grep $TTYID
这将返回具有正确 PID 的行,然后可以使用 Python 对其进行解析。不幸的是,我使用的是 QNX,它没有在“ps”中实现 TTY 字段,所以该字段中的所有内容都只显示为“?”。还有其他想法吗?
谢谢!