自動登錄監控系統打開/關閉報警的Perl腳本

現在關報警的方法是先上http://monitor.taobao.com,沒登陸過的話會定向到登陸頁面,之後模糊搜索服務器名,全選報警項 ,關閉.如果有一組機器,整個操作比較費時.

先用firefox和httpfox看了一下關報警的交互過程.剛開始用curl試了試,最後決定用perl來做,因爲中間需要解析html頁面.用的是windows上的active perl,因爲管理機上的cpan我沒權限.

activeperl 自帶LWP,HTTP::Cookies,HTML::TokeParser和調試好助手Data::Dumper;

use LWP;
use HTTP::Cookies;

use Data::Dumper;
use HTML::TokeParser;

輸入主機名和操作,open或close

$host=$ARGV[0];
$operaton=$ARGV[1];

 

因爲這個系統用到了cookie,所以有cookie可以直接訪問,沒有的話就得輸一次密碼.

my $browser = LWP::UserAgent->new;

#指定cookie文件

$browser->cookie_jar( HTTP::Cookies->new(
'file' => 'cookies.lwp',
 # where to read/write cookies
'autosave' => 1,
 # save it to disk when done
));

密碼驗證用的是post方法,主要的屬性是id和pass_word

my $url='https://guesthouse.seraph.taobao.com/login/?url=http://monitor.taobao.com/emonitor/attention/my_production_list.htm&client=habo&ver=1.1';
my $response = $browser->post($url,
[
 'id' => '用戶名, 
 'pass_word' => '密碼',      
 'ver'=>'1.1',
 'self_action'=>'login',
 'src'=>'gh',
 'url'=>'http://monitor.taobao.com/emonitor/attention/my_production_list.htm'
]
);

登陸成功cookies.lwp就會有東西了,基本上一天登一次就足夠了

下面模仿模糊查詢,查詢是get方法

$url='http://monitor.taobao.com/emonitor/itemview/item_view_list.htm?type=dark&hostName=$host&groupName=&itemName=&tag=&orderName=a.health_status&orderUpDown=desc&page=1&pageSize=50';
$response = $browser->get( $url);
print $response->content;

my $content=$response->content;

下面要解析返回的內容,這個頁面裏有一些name屬性是checkid的input標籤,代表了與服務器關聯的報警項目,其中的value屬性將來發post方法時會組合成一條字符串放在ids屬性裏
my $p = HTML::TokeParser->new( \$content);
my @ids;  
while (my $token = $p->get_tag('input')) {
  
  my $text = $token->[1]{name};
  if ($text eq 'checkids'){
  my $value = $token->[1]{value};
   #print Dumper($token);
   push @ids, $value;
#   print '$value\n';
  }
}
my $ids=join(',',@ids);

ajaxHostNoticeOpr.do就是負責關報警的,type就是指定開關報警,open或close

$url='http://monitor.taobao.com/emonitor/itemview/ajaxHostNoticeOpr.do';
$response = $browser->post( $url,
[
 'ids' => $ids, 
 'type' => $operation, 
]
);
print $response->content;

在這個基礎上就可以實現自動打開或關閉幾十臺機器的報警了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章