gpt4 book ai didi

Perl脚本实现检测主机心跳信号功能

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Perl脚本实现检测主机心跳信号功能由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

使用串口通信,在备机端使用如下脚本检测来自主机的心跳信号,一旦未接受次数超过指定记数,备机认为主机DOWN机,自动设置为主机的网络参数,顶替主机提供服务.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# ! 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 配置结束
 
 
  ' ; # 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 ;

  。

最后此篇关于Perl脚本实现检测主机心跳信号功能的文章就讲到这里了,如果你想了解更多关于Perl脚本实现检测主机心跳信号功能的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com