我正在尝试编写一个脚本来在 Ubuntu 13.04 64 位上自动执行 ssh 隧道。它基于 Pexpect 模块 ( http://www.noah.org/wiki/pexpect#ssh_tunnel.py )中的 ssh_tunnel 示例
但是在我的机器上运行代码存在问题。我想检查是否有任何活动的、非失效的 ssh 隧道已经在运行。如果我在终端中检查这个,我会得到 ssh-agent 和 ssh:
user@comp$ ps -e|grep ssh
3578 ? 00:00:00 ssh-agent
9686 pts/0 00:10:31 ssh <defunct>
10955 pts/0 00:00:02 ssh
所以我尝试使用 grep 的 -v 选项(反转选择)过滤结果,我能够获得活动隧道。这将允许我确定是否需要打开一个新隧道:
user@comp$ ps -e|grep ssh|grep -v agent|grep -v def
10995 pts/0 00:00:00 ssh
不幸的是,如果我使用 pexpect.spawn 调用上述命令,然后按如下方式执行期望:
ps = pexpect.spawn ('ps -e|grep ssh | grep -v agent | grep -v def')
res1 = ps.expect (['ssh', pexpect.EOF, pexpect.TIMEOUT])
res1 返回为 1,表示 pexpect.EOF(没有找到 ssh 进程)
我在这里做错了什么?否则,是否有另一种方法来检查是否已经有一个 ssh 正在运行,这样我就不会打开另一个