脚本的一部分 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 命令?
答案 0 :(得分:6)
我认为您正在寻找的是这样的:
spawn ssh name@host
set pid [exp_pid]
puts "PID: $pid"
答案 1 :(得分:2)
spawn返回UNIX进程ID。如果没有产生任何进程,则返回0。
即您可以这样做:
set pid [spawn ssh -qTfnN -D $port $user@$host]
您也可以将exp_pid
用作jcollado demonstrated。相同的手册页说明:
exp_pid [-i spawn_id]
返回与当前生成的进程相对应的进程ID。如果使用-i
标志,则返回的pid对应于给定的生成ID。