您的位置:首页 > 编程语言

记录下我当时post butterfly的perl代码

2012-11-15 15:48 309 查看
#!/usr/bin/perl -w

use strict;

use diagnostics;

use warnings;

use Win32::OLE;

use LWP::UserAgent;

use FindBin;

use HTTP::Cookies;

use File::Spec;

use Encode;

use 5.010;

$| =1 ; #设置立刻刷新缓冲区

my $targetIP="10.112.9.83";

my $targeturl ='http://'.$targetIP.':7080/butterfly/client';

my $udboid="62BF0B61-8E59-3CA2-CBC2-4B699C3F89A5";

my $ua =new LWP::UserAgent ;

my %areas=(

'八楼'=>'00BCEABD-B672-A85B-65E7-472AC33B5F1C',

'二楼东北区'=>'3DF8965D-B59D-7D44-47E6-4EFF2BF45FC0',

'二楼内内场'=>'418B3BE9-A55F-997F-A3D3-4886D691D4CD',

'二楼外场'=>'7394F968-8F78-C7B3-D59D-4CDA5B92A703',

'十楼'=>'E711BEEE-BE18-BE9B-840B-43123C508859',

'二楼内场'=>'ECD1F977-900F-2CA9-8FF7-4BFC56678182'

);

&login("admin",'s');

my @datalist =OpenFileReadData();

my $size =@datalist;

for(1..$size){

my $data = pop @datalist ;

my($workarea,$gwid)=split/\s+/,$data;

sleep(1);

say "my workarea is $workarea,gw is $gwid";

&CreateGW($gwid, $areas{$workarea});

}

sub CreateGW{

my($cubid,$areauuid)=@_;

my $getturl='http://'.$targetIP.':7080/butterfly/client?sys_action=stateflow&sf_at=submit&sf_step=1&sf_sfid=defc72e7-2b01-43db-84a6-e336a76d87df&sf_sfoid=&proj_oid=';

my $posturl='http://'.$targetIP.':7080/butterfly/client?submit=submit';

my $req = $ua->get($getturl);

my $getcontent;

if(!$req->is_error){

$getcontent= $req->content ;

}

if(!defined $getcontent) {die "无法连接到主机";}

my($selfUUID,$sf_sf_oid,$sf_tr_oid,$u_session_id )=&GetArgs($getcontent);

my @postdata=[

selfUUID=>$selfUUID,

sf_at=>'submit',

sf_sf_oid=>$sf_sf_oid,

sf_step=>'2',

sf_tr_oid=>$sf_tr_oid,

sys_action=>'stateflow',

u_fn_cubicle_id=>$cubid,

u_fn_working_area=>$areauuid,

action=>'client',

u_session_id=>$u_session_id,

actionlog_external_visible=>'',

pa_sfo_i_oid=>'',

pa_sfo_name=>'',

parentFieldName =>'',

parentUUID =>'',

proj_oid=>'',

u_prod_id=>'',

u_veresion_id=>''

] ;

my $r=$ua->post($posturl,@postdata );

if(!$r->is_error){

printf $r->content ;

}else{print "添加信息失败";}

}

sub login{

my ($username,$password)=@_;

my $cfile="cookie2.txt";

$cfile = File::Spec->catfile($FindBin::Bin,$cfile);

my $cookie_jar = HTTP::Cookies->new(

file => $cfile,

autosave => 1,

ignore_discard => 1

);

#$cookie_jar->load($cfile);

$ua->cookie_jar($cookie_jar);

my @heads=('Accept'=>qq(text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8),

'Accept-Encoding'=>'gzip, deflate',

'Accept-Language'=>'zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3',

'Connection'=>'keep-alive',

'Host'=>qq($targetIP:7080)

);

my @logdata=[ username => $username,

password => $password,

#urlSchemeReferer => 'https',

udb_name=>'migrate_udb',

udb_oid=>$udboid,

sys_locale => 'zh_CN',

sys_action =>"mainform",

sys_event =>"login",

rpwd =>$password

# action=>"?sys_action=mainform&sys_event=login"

];

my $r=$ua->post($targeturl,@logdata,@heads);

if(!$r->is_error){

$cookie_jar->extract_cookies($r);

# printf $r->content ;

}else{print "未知错误n";}

$cookie_jar->save($cfile);

}

sub GetArgs{

my($content)=@_;

my @result;

if($content=~/name=selfUUID value="(?<selfuuid>.{36})"/){ push @result,$+{selfuuid} ; }

if($content=~/name=sf_sf_oid value="(?<sfsfoid>.{36})"/){ push @result,$+{sfsfoid} ; }

if($content=~/name=sf_tr_oid value="(?<sftroid>.{36})"/){ push @result,$+{sftroid} ; }

if($content=~/name=u_session_id value="(?<usessionid>.{36})"/){ push @result,$+{usessionid} ; }

return @result;

}

sub OpenFileReadData{

$Win32::OLE::Warn = 3;

my $file = 'gw.xlsx';

$file = File::Spec->catfile($FindBin::Bin,$file);

my $savefile = $file;

my $Excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit');

$Excel->{DisplayAlerts}=0;

my $Book = $Excel->Workbooks->Open($file);

my $Sheet = $Book->Worksheets(1);

my $row_counts = $Sheet->{UsedRange}->{Rows}->{Count}; # 得到行数

my $column_counts = $Sheet->{UsedRange}->{Columns}->{Count}; #得到列数

my $curr_row=$row_counts+1;

my @data;

for(my $i=2;$i<=$row_counts ;$i++){

my $workarea= $Sheet->Cells($i,'A')->{'Value'} ;

my $gwid = $Sheet->Cells($i,'B')->{'Value'} ;

my $single = qq($workarea $gwid);

$single =~ s/^\s+|\s+$//; #去掉开头结尾非打印字符

# $single = encode("utf8", decode("gbk",$single ));

push @data,$single ;

}

$Book->Close();

$Excel->Quit();

return @data;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: