Perl Net::SSH::Expect.pm 包详解
2016-12-30 19:19
477 查看
Net::SSH::Expect.pm
new():
以哈希的方式指定参数:
'host'=>
'user' =>
'password' =>
'port' =>
'raw_pty'=> 创建pty
1. login()
返回所有的结果;可以根据返回结果判断是否登陆成功;
2.send() 发送命令,命令输出结果会保存在缓存中;
3.before() 返回后上一次匹配的结果
5.after() 返回剩余的所有数据
6.peek(0) 返回当前缓存里面所有没有移除的信息,不会删除数据;参数为等待的时间 , 一般是0;
7.eat(string) 可以做清空 输入缓存用; 删除输入缓存中相应的字符串example :eat(peek(0));;
8.read_all()读取并移除所有的输出;
9.has_line 判断缓存区是否还有数据;如果有返回1 没有返回0
10.read_line 读取并移除一行输出;
11.exec (cmd) 执行一个命令 并返回所有的输出结果;
12.get_expect 用来管理ssh链接,如果存在这个链接,就返回这个链接,不存在报错
13.waitfor(prompt,timeout) ;当输出和prompt匹配时,返回1,如果不匹配直到超时并返回0,匹配到的数据用before返回。
常用方法演示:
运行结果:
new():
以哈希的方式指定参数:
'host'=>
'user' =>
'password' =>
'port' =>
'raw_pty'=> 创建pty
1. login()
返回所有的结果;可以根据返回结果判断是否登陆成功;
2.send() 发送命令,命令输出结果会保存在缓存中;
3.before() 返回后上一次匹配的结果
5.after() 返回剩余的所有数据
6.peek(0) 返回当前缓存里面所有没有移除的信息,不会删除数据;参数为等待的时间 , 一般是0;
7.eat(string) 可以做清空 输入缓存用; 删除输入缓存中相应的字符串example :eat(peek(0));;
8.read_all()读取并移除所有的输出;
9.has_line 判断缓存区是否还有数据;如果有返回1 没有返回0
10.read_line 读取并移除一行输出;
11.exec (cmd) 执行一个命令 并返回所有的输出结果;
12.get_expect 用来管理ssh链接,如果存在这个链接,就返回这个链接,不存在报错
13.waitfor(prompt,timeout) ;当输出和prompt匹配时,返回1,如果不匹配直到超时并返回0,匹配到的数据用before返回。
常用方法演示:
#!/usr/bin/perl use strict; use Net::SSH::Expect; my $ssh ; my $line; eval { $ssh = new Net::SSH::Expect ( 'host' => '127.0.0.1', 'user' =>'root', 'password' => '1qazXSW@', 'port' => 22, 'timeout' =>1, 'raw_pty' => 1); if ($ssh->login() =~ /Password/i){ print "password is wrong !\n"; exit -1; } }; $ssh->send("cat /home/xing/all_bak/y.txt\n"); $ssh->waitfor ('[\$%#>]\s*(\\033\[0m)?$') ? print "waitfor Ok\n" : die "waitfor failed"; print "peek : ".$ssh->peek(0) ."\n"; $line = $ssh->before(); print "before : $line \n"; $ssh->send("cat /home/xing/all_bak/y.txt\n"); #$ssh->waitfor ('[\$%#>]\s*(\\033\[0m)?$') ? print "waitfor Ok\n" : die "waitfor failed"; print "read_all : \n"; print $ssh->read_all() ."\n"; print "read_all over \n"; $ssh->send("cat /home/xing/all_bak/y.txt\n"); #$ssh->waitfor ('[\$%#>]\s*(\\033\[0m)?$') ? print "waitfor Ok\n" : die "waitfor failed"; print "eat test: --------------------------------\n"; $ssh->eat($ssh->peek(0)); print $ssh->peek(0) ."\n"; print $ssh->read_all() ."\n"; print "eat test over ----------------------------\n"; $ssh->send("cat /home/xing/all_bak/y.txt\n"); #$ssh->waitfor ('[\$%#>]\s*(\\033\[0m)?$') ? print "waitfor Ok\n" : die "waitfor failed"; print "after ; ---------------------------------\n"; $ssh->read_line(); $ssh->read_line(); print $ssh->after() ."\n"; print "after over -----------------------------\n"; $ssh->close();
运行结果:
相关文章推荐
- Corrupted MAC on input at /usr/local/perl/lib/site_perl/5.22.1/x86_64-linux/Net/SSH/Perl/Packet.pm l
- Corrupted MAC on input at /usr/local/perl/lib/site_perl/5.22.1/x86_64-linux/Net/SSH/Perl/Packet.pm l
- Corrupted MAC on input at /usr/local/perl/lib/site_perl/5.22.1/x86_64-linux/Net/SSH/Perl/Packet.pm l
- 安装Net::SSH::Perl (更好用的模块Net::OpenSSH)
- Net::SSH::Perl 安装问题解决
- Net::SSH::Perl 连接远程主机慢的原因
- Net::SSH::Perl 安装问题解决
- Perl的Net::SSH::Perl模块实现远程登陆ssh
- cpan安装Net::SSH::Perl中遇到的一些问题
- linux expect详解(ssh自动登录)
- linux expect详解(ssh自动登录)
- Net::SSH::Perl 包 与 Net::OpenSSH 包的 性能对比代码
- Net::SSH::Perl 模块
- perl 利用Net::SSH::Expect模块批量修改服务器密码
- Net::SSH::Perl 会读~/.ssh/config
- Net::SSH::Perl 模块
- linux expect详解(ssh自动登录)
- linux expect详解(ssh自动登录)
- perl_Net::SCP::Expect实现批量分发文件
- Net::SSH::Perl 模块