我一直在琢磨这个问题,但现在有点卡住了。
我正在使用Python的subprocess模块和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字段,因此该字段中的所有内容都显示为“?”。还有其他想法吗?
谢谢!
ps --no-headers -eo ppid -fp $$
。 - TooroSan