免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5354 | 回复: 7
打印 上一主题 下一主题

用perl expect可以实现连续telnet吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-25 17:06 |只看该作者 |倒序浏览
我用perl expect可以实现telnet一台主机,但是可以在这个telnet session没有断开之前,再由被
telnet的主机发出新的telnet吗?
举例:
my $exp = Expect->spawn("telnet 1.1.1.1");

                 $exp->send("aaaa\n");
                 $exp->expect("password:");
                 $exp->send("bbbb\n");
                 sleep(1);
                 #$exp-> expect("#");
                 $exp->send("telnet 2.2.2.2\n");
                 $exp->expect("Connected");
                 $exp->send("root\n");
                 $exp->expect("Password ");
这个例子我执行后,发现第二次的telnet 2.2.2.2 没有成功,请问高手:问题出现在哪里?谢谢!

论坛徽章:
0
2 [报告]
发表于 2006-07-25 17:45 |只看该作者
原帖由 zljjg2000 于 2006-7-25 17:06 发表
我用perl expect可以实现telnet一台主机,但是可以在这个telnet session没有断开之前,再由被
telnet的主机发出新的telnet吗?
举例:
my $exp = Expect->spawn("telnet 1.1.1.1");

          ...

Try to use :
1.  $exp->soft_close(); or $exp->hard_close();
2. or use two OOPs variables:
    $exp1= Expect->spawn("telnet 1.1.1.1");
    $exp2 = Expect->spawn("telnet 2.2.2.2");

论坛徽章:
0
3 [报告]
发表于 2006-07-26 08:32 |只看该作者
谢谢,不过还不是我需要的答案。
第二次telnet是必须从第一台被telnet的主机发起的,而不是同时开两个telnet进程到两个主机,能再考虑一下吗?
非常感谢技术支持。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2006-07-26 08:41 |只看该作者
why not?
Expect is a very powerful language...

Just use...
$exp->send("telnet secondIP\n");

论坛徽章:
0
5 [报告]
发表于 2006-07-26 14:38 |只看该作者
我的程序如下:
#!/usr/local/bin/perl
require ("/usr/local/lib/perl5/site_perl/5.8.5/Expect.pm");
use Net::Telnet;
print "Content-type:text/html\n\n";

use Expect;
my $exp = new Expect;
my $exp = Expect->spawn("telnet 1.1.1.1");

                 $exp->send("root\n");
                 $exp->expect("password:");
                 $exp->send("root\n");
                 sleep(1);
                 $exp->expect("#");
                 $exp->send("telnet 2.2.2.2\n");
                 $exp->expect("Connected");
                 $exp->send("root\n");
                 $exp->expect("Password ");
                 $exp->send("root\n");
                 $exp->expect(">");
                 $exp->send("en\n");
                 $exp->expect("#");
                 $exp->log_file("zzz","w");
                 $exp->send("show atmlan ip-access\n");
                 #$exp->log_file("zzz","w");
                 sleep(1);
                 $exp->log_file();
                 $exp->send("exit\n ");
                 $exp->send("exit\n ");
但是程序执行了第一次telnet 1.1.1.1之后,出现“#”提示符后,等待了1秒之后,就程序中止了,没有继续执行第二次telnet 2.2.2.2 ,请问怎么回事啊?

论坛徽章:
0
6 [报告]
发表于 2006-07-27 16:49 |只看该作者
我采用了楼上的方法,在程序最后加了$exp->soft_close();终于可以连续telnet了,真不错,呵呵,
终于体会到前面的用意了。

论坛徽章:
0
7 [报告]
发表于 2006-07-27 19:45 |只看该作者
进来看看

论坛徽章:
0
8 [报告]
发表于 2009-09-04 16:09 |只看该作者
路过,围观~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP