工作環境的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,即命令執行失敗,則會列印出關閉失敗的訊息。