佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > Perl腳本實(shí)現(xiàn)檢測(cè)主機(jī)心跳信號(hào)功能

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

熱門標(biāo)簽:企業(yè)做大做強(qiáng) 硅谷的囚徒呼叫中心 電話運(yùn)營(yíng)中心 Win7旗艦版 呼叫中心市場(chǎng)需求 百度AI接口 客戶服務(wù) 語(yǔ)音系統(tǒng)

使用串口通信,在備機(jī)端使用如下腳本檢測(cè)來(lái)自主機(jī)的心跳信號(hào),一旦未接受次數(shù)超過(guò)指定記數(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 ;

標(biāo)簽:崇左 喀什 濟(jì)南 安康 長(zhǎng)沙 海南 山西 山西

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Perl腳本實(shí)現(xiàn)檢測(cè)主機(jī)心跳信號(hào)功能》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    体育| 项城市| 遂川县| 武邑县| 建德市| 辽源市| 秦皇岛市| 明星| 徐闻县| 沛县| 彩票| 南江县| 通榆县| 屏东县| 开封市| 澜沧| 招远市| 富源县| 汽车| 林西县| 霞浦县| 九寨沟县| 赞皇县| 伊金霍洛旗| 保靖县| 泸定县| 郁南县| 海林市| 祁东县| 罗甸县| 莲花县| 浮梁县| 鹤峰县| 阜新市| 富民县| 吉安县| 靖宇县| 咸丰县| 观塘区| 陈巴尔虎旗| 井研县|