5

部分脚本a.exp

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

如何获取子进程“ssh”的pid 。

如果我在 bash shell 中执行这些,而不是在脚本文件中,结果是

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

2188是子进程pid。

以及如何在expect shell 中使用exp_pid命令?

4

2 回答 2

6

I think that what you're looking for is something like this:

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]

你也可以使用exp_pidjcollado演示的。同一个手册页解释说:

exp_pid [-i spawn_id]
返回与当前生成的进程对应的进程 ID。如果-i使用该标志,则返回的 pid 对应于给定 spawn id 的 pid。

于 2018-10-18T14:22:49.023 回答