監控docker0閘道器並關閉

海_纳百川發表於2024-03-11

工作環境的docke0網段一直有人啟動,寫了命令每30s檢測一次,一旦發現就關閉

#!/bin/bash

while true; do
    current_time=$(date +"%Y-%m-%d %H:%M:%S")
    # 檢查 docker0 網橋是否啟動
    if ip link show docker0 | grep -q "UP"; then
        echo "$current_time: 發現 docker0 網橋已啟動,正在關閉..."
        # 關閉 docker0 網橋
        sudo ip link set dev docker0 down
        if [ $? -eq 0 ]; then
            echo "$current_time: docker0 網橋已關閉成功"
        else
            echo "$current_time: 關閉 docker0 網橋失敗"
        fi
    else
        echo "$current_time: docker0 網橋未啟動"
    fi
    sleep 60 # 等待一分鐘再次檢查
done

`$?` 是一個特殊變數,用於儲存上一個命令的退出狀態。在大多數情況下,命令成功執行後退出狀態為 0,而出現錯誤時退出狀態為非零值。因此,`[ $? -eq 0 ]` 表示如果上一個命令執行成功,則條件成立。

在我們的指令碼中,我們使用 `sudo ip link set dev docker0 down` 命令來關閉 docker0 網橋。當這個命令成功執行並且關閉了網橋時,它會返回退出狀態 0。因此,我們使用 `[ $? -eq 0 ]` 來檢查命令是否成功執行。

如果退出狀態為 0,條件成立,我們會列印出成功關閉 docker0 網橋的訊息。如果退出狀態不為 0,即命令執行失敗,則會列印出關閉失敗的訊息。

相關文章