在Perl中使用Expect获取产生会话的会话ID

问题描述:

我正在使用Expect来使用ssh。我想知道产生的会话的会话ID。我怎么做?在Perl中使用Expect获取产生会话的会话ID

这是我的代码:

my $addr = "10.101.10.102"; 
my $cmd = "ssh [email protected]".$addr; 
my $exp = Expect->spawn($cmd) or die "Cannot spawn command\n"; 
+0

你说的是一个包含进程组会议,作为解释[这里](http://www.win.tue.nl/~aeb/linux/ LK/LK-10.html)?请澄清。 – simbabque

您是否尝试过用期待的$exp->pid()方法。对于期待模块的文件说:

$object->pid() 
Return pid of $object, if one exists. Initialized filehandles will not have pids (of course). 

我有一个简单的测试,尝试过这种远程连接到本地主机,并做了UNIX ps命令查看进程,也是$exp->pid()命令和它们相匹配。

use strict; 
use Expect; 
my $exp = Expect->spawn("ssh localhost") or die "cannot spawn command\n"; 
print `ps -ef | grep -i "ssh localhost\$"` ; 
print "PID of spawned process is: ", $exp->pid(), "\n"; 

输出

providnt 4389 4302 0 09:42 pts/1 00:00:00 ssh localhost 
PID of spawned process is: 4389