监控 systemd 脚本的网络状态

监控 systemd 脚本的网络状态

我正在编写一个服务脚本,systemd该脚本每 1 小时记录一次带宽使用情况。如果网络出现故障,某物应该告诉此脚本网络已关闭,脚本将暂时停止。同样,如果网络再次恢复,应该告诉它网络已启动。

我在 Ubuntu 15.10 上使用 bash 编写脚本

在您提出解决方案之前,请注意我不需要解决这个问题,比如 ping 某些服务器。

答案1

您能做的最好的事情就是使用网络管理器中已有的事件驱动状态。

  1. NetStatus.x在以下位置创建文件/etc

    sudo nano /etc/NetStatus.up
    
  2. 添加以下文本:

    这是 NetStatus 文件。如果其名称的扩展名为“up”,则表示网络状态为开启,而扩展名为“down”则表示网络关闭。(废话!)

  3. 编辑/etc/NetworkManager/dispatcher.d/01ifupdown并添加以下粗体语句:

    case "$2" in
        up|vpn-up)
            export MODE="start"
            export PHASE="post-up"
            exec run-parts /etc/network/if-up.d
            mv /etc/NetStatus.down /etc/NetStatus.up
            ;;
        down|vpn-down)
            export MODE="stop"
            export PHASE="post-down"
            exec run-parts /etc/network/if-post-down.d
            mv /etc/NetStatus.up /etc/NetStatus.down
            ;;
    
  4. /etc/NetStatus.up修改您自己的收集脚本,在实际开始收集数据之前通过以下代码片段检查是否存在:

    if [ -e /etc/NetStatus.up ] ; then
      #move your existing collection in here
    fi
    

为什么?

重命名是更改任何操作系统(包括基于软盘的系统)状态的最快方法,并且非常容易使用。我使用上述系统来获取服务器状态、备份状态、计算状态,从基于 MS-DOS 的低级系统到超级计算机。

相关内容