一般大家在perl使用expect.pm。 我想在perl直接调用expect脚本,利用expect完成su root后,在perl中执行root的其他操作,不知是否可行?:roll:
perl expect模块中要匹配“---- More ( Press CTRL_C to break ) ----”,总匹配不上,如果只匹配其中的Press CTRL_C,如何写? [quote][ qr/^---- More ( Press CTRL_C to break ) ----/, sub { my $self = shift; $self->send(" "); exp_continue; }],[/quote] [ 本帖最后由 屠龙 于 2008-1-6 22:03 编辑 ]
这个模块需要安装Tty模块,可是出现警告: hp7000-4176:make test perl_DL_NONLAZY=1 /usr/perl5/5.8.4/bin/perl "-Iblib/lib" "-Iblib/arch" test.pl 1..4 Configuration: -DHAVE_DEV_PTMX -DHAVE_GRANTPT -DHAVE_PTSNAME -DHAVE_SIGACTION -DHAVE_STRLCPY -DHAVE_SYS_STROPTS_H -DHAVE_TERMIOS_H -DHAVE_TERMIO_H -DHAVE_TTYNAME -DHAVE_UNLOCKPT Checking for appropriate ioctls: TIOCNOTTY TIOCSCTTY Ch...
perl的expect可以实现自动telnet,这是我们知道的。 现在有这样一个需求,有一个文件: 1.1.1.1 2.2.2.2 3.3.3.3 4.4.4.4 ......... 通过expect依次登陆文件中的每个ip地址,要求实现: 如果能telnet,则记录为“success 相应的ip地址”;如果不能telnet,则记录为“fail 相应的ip地址”。 请教高手,能实现吗?
我写了如下代码来登录设备并显示信息,由于有跳板设备,所以需要telnet两次。 我的目的是将输入的命令作为文件名,然后将命令执行后输出的内容写入对应的文件中。 但是expect的行为是将match string之前的内容写入日志文件,导致命令列表中最后一条命令的输出内动丢失。请问如何解决这个问题? 我用$object->after()函数后,输出的内容为空,但是我可以确定代码能够正确的expect到需要的内容。 #!/usr/bin/perl -w #Load module us...
安装expect的时候提示Warning: prerequisite IO::Pty 1.03 not found. Warning: prerequisite IO::Tty 1.03 not found. Writing Makefile for expect之后去安装IO::TTY1.07却提示 C:\IOTty>perl makefile.pl Now let's see what we can find out about your system (logfiles of failing tests are available in the conf/ dir)... ERROR: cannot run the configured compiler 'cl' (see conf/compilerok.log). Suggestions: 1) T...
代码如下:为什么变量$1中的值总是空?我觉得有可能是在expect函数返回后,$1中的值就被清除了。这个问题如何解决呢? my $exp = new expect; $exp->spawn("telnet xx.xx.xx.xx"); $exp->expect(10, '-re', "login:"); $exp->send("root\n"); $exp->expect(10, '-re', "Password:"); $exp->send("password\n"); $exp->expect(10, '-re', "->"); $exp->send("uname -a\n"); $exp->expect(10, [qr/bjhv(\d*) 5.8 Generic/, sub {my...
我想用send()打出ctrl+a怎么弄???? 还有,我打算用这个模块做一个telnet访问bbs并自动遍历文章并进行下载的脚本,遍历文章的时候要按“下”,但是我用这个 $exp->send("\x1F"); 好像没有反应…… 应该怎么办??? thanks