2

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 が既に実行されているかどうかを確認して、別のものを開かないようにする別の方法はありますか

4

1 に答える 1