perl的expect和xml模块简单使用
来源:互联网 发布:链轮参数计算软件 编辑:程序博客网 时间:2024/05/16 12:47
常用模块: (1) Net::FTP Expect.pm 模块:主要用来和另外一个server进行交互的,比如ftp,telnet等等。在写一些监控脚步上,也会经常用到。 http://blog.chinaunix.net/u3/98375/showart_1968735.html
(2) Net::Telnet
(3) LWP::Simple, get()
(4) Expect
(5) XML::Simple, XMLin()
(6) Data::Dumper, Dumper()
(7) IO::Socket
(8) Date::Manip, DateCalc(), UnixDate()
(9) Date::Manip, Date_Cmp()
(10) File::Find, find()
(11) ExtUtils::Installed, new(), modules(), version()
(12) DBI, connect(), prepare(), execute(), fetchrow_array()
(13) Getopt::Std
(14) Proc::ProcessTable
(15) Shell
(16) Time::HiRes, sleep(), time()
(17) HTML::LinkExtor, links(), parse_file()
(18) Net::Telnet, open(), print(), getline()
(19) Compress::Zlib, gzopen(), gzreadline(), gzclose()
(20) Net::POP3, login(), list(), get()
(21) Term::ANSIColor
(22) Date::Calc Calendar(), Today()
(23) Term::Cap, Tgetend(), Tgoto, Tputs()
(24) HTTPD::Log::Filter
(25) Net::LDAP
(26) Net::SMTP mail(), to(), data(), datasend(), auth()
(27) MIME::Base64, encode_base64(), decode_base64()
(28) Net::IMAP::Simple, login(), mailboxes(), select(), get()...
(29) Bio::DB::GenBank, Bio::SeqIO
(30) Spreadsheet::ParseExcel
(31) Text::CSV_XS, parse(), fields(), error_input()
(32) Benchmark
我所用到的方法很简单,
spawn($command,@params),Forks and execs $command. Returns an Expect object upon success or undef
if the fork was unsuccessful or the command could not be found. spawn() passes its parameters unchanged to Perls exec(), so look there for detailed semantics。起了一个新进程用来执行$command命令
new expect()->expect($timeout,$content),Given $timeout in seconds Expect will wait for $object's handle to produce one of the match_patterns, which are matched exactly by default. If you want a regexp match, prefix the pattern with '-re'.在$timeout内,期待出现包含$content的内容,默认是精确匹配,也可以使用正则表达 式,expect($timeout,re=>'')
new expect()->send($string):Sends the given strings to the spawned command. 发送消息
new expect()->debug(0|1|2): 打印debug 信息,不同的数字表示不同的bug级别
new expect()->interact(),和用户进行交互,把控制权转交给用户
new expect()->soft_close(), 软关闭,直到$timeout时间到达,才关掉该进程
new expect()->hard_close(),硬关闭,立刻关闭该进程
new expect()->match(),returns the string matched by the last expect() call, undef if no string was matched.返回匹配的结果
new expect()->match_number(),exp_match_number() returns the number of the pattern matched by the last expect() call. Keep in mind that the first pattern in a list of patterns is 1, not 0. Returns undef if no pattern was matched.返回匹配的个数
例子:
#!/usr/bin/perl
use Expect;
use strict;
my $timeout = 20;
my $cmd = "telnet";
my $exp = Expect->spawn($cmd,"192.168.0.1") or die "Can't spawn $cmd!";
$exp->expect($timeout,-re=>'[Ll]ogin:');
$exp->send("test/r/n");
$exp->expect($timeout,-re=>'[Pp]assword:');
$exp->debug(1);
$exp->send("test/r/n");
$exp->expect($timeout,-re=>'Last login');
$exp->send("ps -ef |grep java/r/n");
$exp->expect($timeout,-re=>'java');
print $exp->match_number();
$exp->soft_close();
XML::Simple:xml与perl的接口,既可以从xml中读取数据以hash或散列的形式存放,也可以通过perl将数据格式化写到xml文件里。这里主要介绍从xml中读取结构化数据
XML::Simple->new()->XMLin(),从xml中读取数据
XML::Simple->new()->XMLout(),往xml中写数据
例子:
#!/usr/bin/perl -w
use strict;
use XML::Simple;
use Data::Dumper;
my $simple = XML::Simple->new();
my $data = $simple->XMLin('pets.xml');
# DEBUG
print Dumper($data) . "/n";
# END
其中Dumper()用来查看放到内存中的数据结构
本例子pets.xml为
<?xml version='1.0'?>
<pets>
<cat>
<name>Madness</name>
<dob>1 February 2004</dob>
<price>150</price>
</cat>
<name>Maggie</name>
<dob>12 October 2005</dob>
<price>75</price>
<owner>Rosie</owner>
</dog>
<cat>
<name>Little</name>
<dob>23 June 2006</dob>
<price>25</price>
</cat>
</pets>
dumpe()后的结果
$VAR1 = {
'cat' => {
'Little' => {
'dob' => '23 June 2006',
'price' => '25'
},
'Madness' => {
'dob' => '1 February 2004',
'price' => '150'
}
},
'dog' => {
'owner' => 'Rosie',
'dob' => '12 October 2005',
'name' => 'Maggie',
'price' => '75'
}
};
我们可以通过@{$VAR1{cat}}[0]->{dob}形式来访问hash内容,该值为"23 June 2006"
- perl的expect和xml模块简单使用
- perl的expect和xml模块简单使用
- Perl脚本中Expect模块的学习使用
- Expect模块安装 Perl脚本
- 自动化工具expect的搭建和简单使用
- 使用perl的expect对linux下使用fdi…
- perl中xml模块的完全列表
- perl中模块的编写和使用举例
- WINDOWS下使用EXPECT的简单例子
- expect 简单使用
- perl的LWP模块简单介绍
- perl的LWP模块简单介绍
- PERL Expect
- perl expect
- perl模块安装自定义路径和使用
- Perl 模块简单讲解
- 用nc和perl expect 模拟服务
- Linux下expect的安装和使用
- test zoundry 离线写博客,我喜欢
- 网络那些事儿(YI)网际互联
- 我总结的正则表达式
- 我之我观
- 信仰
- perl的expect和xml模块简单使用
- phpmyadmin配置
- 学习密度与专注力
- 重构
- IT招聘负责人:成功简历六大要素
- 一直以来伴随我的一些学习习惯(part1)
- C#转码
- 一直以来伴随我的一些学习习惯(part2)
- 091106(星期五)Using a Common Control as a Child Window