国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Perl腳本實(shí)現(xiàn)檢測(cè)主機(jī)心跳信號(hào)功能

原創(chuàng) 2017-01-11 13:24:55 583
摘要:這篇文章主要介紹了Perl腳本實(shí)現(xiàn)檢測(cè)主機(jī)心跳信號(hào)功能,本文代碼也可作為perl串口通信的實(shí)例,需要的朋友可以參考下使用串口通信,在備機(jī)端使用如下腳本檢測(cè)來自主機(jī)的心跳信號(hào),一旦未接受次數(shù)超過指定記數(shù),備機(jī)認(rèn)為主機(jī)DOWN機(jī),自動(dòng)設(shè)置為主機(jī)的網(wǎng)絡(luò)參數(shù),頂替主機(jī)提供服務(wù)。# ! perl -w    use strict; &nb

這篇文章主要介紹了Perl腳本實(shí)現(xiàn)檢測(cè)主機(jī)心跳信號(hào)功能,本文代碼也可作為perl串口通信的實(shí)例,需要的朋友可以參考下

使用串口通信,在備機(jī)端使用如下腳本檢測(cè)來自主機(jī)的心跳信號(hào),一旦未接受次數(shù)超過指定記數(shù),備機(jī)認(rèn)為主機(jī)DOWN機(jī),自動(dòng)設(shè)置為主機(jī)的網(wǎng)絡(luò)參數(shù),頂替主機(jī)提供服務(wù)。

# ! perl -w  
 use strict;
 use Win32 :: SerialPort; 
 my  $port  =  ' COM2 ' ; # serail port name registried in OS
 my  $count  =  0 ; # count number of heartbeat-receiving failture
 my  $max_count  =  5 ; # max fail count to be tolerated
 my  $interface  =  '  
# ----------------------------------
# 接口 IP 配置    
# ----------------------------------
pushd interface ip  
# "local" 的接口 IP 配置 
set address name="local" source=static addr=192.168.6.185 mask=255.255.255.0
set address name="local" gateway=192.168.6.65 gwmetric=0
set dns name="local" source=static addr=192.168.6.112 register=PRIMARY
add dns name="local" addr=192.168.6.201 index=2
set wins name="local" source=static addr=none 
popd
# 接口 IP 配置結(jié)束 
 ' ; # net inetrface config information  
 sub errlog {
   # log the failtrue occuring time    
   open ERR ,  ' >>err.log ' ;
   my  @time  =  localtime ();
   my  $time  =  sprintf ( " %d " ,  $time [ 5 ] +  1900 )
             .  ' - '
             .  sprintf ( " %d " ,  $time [ 4 ] +  1 )
             .  ' - '
             .  " $time[3] "
             .  '  '
             .  sprintf ( " %.2d " ,  $time [ 2 ])
             .  ' : '
             .  sprintf ( " %.2d " ,  $time [ 1 ])
             .  ' : '
             .  sprintf ( " %.2d " ,  $time [ 0 ]);
   print ERR $time . " \n " ;
   close ERR;
} 
 sub ipchange {
   # change ip addrress    
   open TMP ,  ' >tmp ' ;
   print TMP $interface ;
   close TMP;   
   eval {
     system  ' netsh -f tmp ' ;
     unlink  ' tmp ' ;
  };   
   if ($@) { return  0 ;}
   return  1 ;
} 
 my  $ob  = Win32 :: SerialPort -> new( $port ) or die  " CANNOT OPEN $port " ;
 # open serial port  
 eval {
   # set serial port properties    
   $ob -> baudrate( 9600 );
   $ob -> parity( ' none ' );
   $ob -> databits( 8 );
   $ob -> stopbits( 1 );
   $ob -> handshake( ' none ' );
};   
 if ($@) { die  ' SET FAILED ' ;} 
 $ob -> write_settings or die  " CANNOT WRITE $port DRIVER " ;
 # write to port driver to make it active  
 while ( 1 ) {
   # loop receiving heartbeat from remote machine
  # change ip address after designated count of failture    
   my ( $length ,  $result ) =  $ob -> read ( 10 );   
   if ( $result ) {
     $count  =  0 ;
  } elsif ( $count  ==  $max_count ) {
    errlog();
     if (not ipchange()) { print  ' IP CHANGE FAILED ' ; }
     last ;
  }   else {
     $count ++ ;
  }   
   sleep ( 1 );
} 
 undef  $ob ;

更多關(guān)于Perl腳本實(shí)現(xiàn)檢測(cè)主機(jī)心跳信號(hào)功能請(qǐng)關(guān)注PHP中文網(wǎng)(www.miracleart.cn)其他文章!

發(fā)佈手記

熱門詞條