【问题标题】:How to send different SNMP Traps if eth0 is down/up?如果 eth0 关闭/启动,如何发送不同的 SNMP 陷阱?
【发布时间】:2018-04-26 13:09:22
【问题描述】:

我想运行一个脚本来检查我的网络接口是否启动/关闭。如果它启动,它会发送一个 SNMP Trap,如果它关闭,它会发送另一个。

ip a ||    
while read LINE; do    
  if [[ $LINE == *"2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000"* ]]; then    
    TRAP 1    
  else    
    TRAP 2

你有什么建议吗?

【问题讨论】:

  • 您可以检查您的界面是否正在运行: if [ -d /sys/class/net/ ];然后 ;否则 ; fi 您可以使用 while 循环和 sleep 命令每秒检查一次新的状态界面。
  • SNMP 陷阱被发送到我的监控服务器,所以我需要使用它们。
  • 好的,我明白了。我认为您可以在“while”循环中解析变量“LINE”,搜索子字符串“state UP”并根据它进行操作。例如这样做: IS_UP=$(echo $LINE | grep "state UP") 然后检查 "IS_UP" 变量。我在下面写一个答案以提供更多详细信息
  • 问题是如果down了,trap就不会发送了。您只能将其记录下来,或者将这些陷阱排队等待稍后发送。

标签: linux bash scripting snmp


【解决方案1】:

你可以试试这样的:

while [ 1 ]; do                                                                  
    sleep 1                                                                      
    IS_UP=$(ip a | grep "IFACE:" | grep "state UP")                              
    if [ "${IS_UP}x" == "x" ]; then                                              
        TRAP 2                                                              
    else                                                                         
        TRAP 1                                                              
    fi                                                                           
done 

将 IFACE 替换为您感兴趣的界面。希望这可以帮助! :)

【讨论】:

  • x 是干什么用的? :D
  • 这是检查变量是否不包含任何内容的常用方法。如果 ${IS_UP} 为空,则 "x" == "x" 为真。
  • tnx 为您提供帮助,但它只是输出“ip a”命令。我用我的接口名称替换了 IFACE 并设置了陷阱 1 和 2(它们自己工作,但不在脚本中)。 ://
  • 我已经编辑了我的答案以提供一个工作脚本。请根据您自己的需要进行调整。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-11
相关资源
最近更新 更多