5

スクリプトの一部a.exp

#!/usr/bin/expect
# ..... 
spawn ssh -qTfnN -D $port $user@$host
expect "*assword:*"
# .....

サブプロセス「ssh」のpidを取得するにはどうすればよいですか。

これらをスクリプトファイルではなくbashシェルで実行すると、結果は次のようになります。

expect1.1> spawn ssh name@host
spawn ssh name@host
2188
expect1.2> 

2188はサブプロセスpidです。

そして、expectシェルでexp_pidコマンドを使用する方法は?

4

2 に答える 2

6

私はあなたが探しているものはこのようなものだと思います:

spawn ssh name@host
set pid [exp_pid]
puts "PID: $pid"
于 2012-02-13T13:14:22.790 に答える
2

このマニュアルページには次のように書かれています。

spawnはUNIXプロセスIDを返します。プロセスが生成されない場合は、0が返されます。

つまり、あなたができること:

set pid [spawn ssh -qTfnN -D $port $user@$host]

jcolladoが示すexp_pidように使用することもできます。同じマニュアルページで次のように説明されています。

exp_pid [-i spawn_id]
現在生成されているプロセスに対応するプロセスIDを返します。フラグが使用されている場合、-i返されるpidは指定されたスポーンIDのpidに対応します。

于 2018-10-18T14:22:49.023 に答える