我想在特定接口上發生IP地址更改時觸發服務。有沒有這樣的目標或其他方法,我不知道用Linux上的systemd(內核3.19)來實現這個目標?檢測接口上的IP地址更改
該服務將用於發送信號到定義的過程。 Linux正在嵌入式系統上運行。
謝謝!
我想在特定接口上發生IP地址更改時觸發服務。有沒有這樣的目標或其他方法,我不知道用Linux上的systemd(內核3.19)來實現這個目標?檢測接口上的IP地址更改
該服務將用於發送信號到定義的過程。 Linux正在嵌入式系統上運行。
謝謝!
因爲你使用Systemd你可能已經使用systemd-networkd來管理您的設備,而不是依賴第三方代碼。
您可以使用結構化日誌輸出來獲得當前BOOD_ID的最後2 ADDRESS
場(可悲的是,在systemd-networkd沒有通知機制進行地址變更):
→ sudo journalctl -F ADDRESS -u systemd-networkd -n 2
192.168.178.29
所以,如果只有一行輸出,沒有地址改變。
在StackOverflow的其他問題中有一個解決方案。就在這裏: Detecting a change of IP address in Linux
我喜歡這樣的代碼,很容易,你在線訂購需要frecuency一個cron作業,因爲你需要(我做了一個小的變化):
#!/bin/bash
OLD_IP=`cat ip.txt`
NEW_IP=`/sbin/ifconfig | awk -F "[: ]+'{ print $4}'`
if [ $NEW_IP != OLD_IP ]; then
YOU_COMMAND <commands>
echo $NEW_IP > ip.txt
fi
exit 0
不完全是我在找的東西,但我可以用它工作,謝謝! – user3482407
順便說一句,你怎麼知道ADDRESS字段的名稱?我無法在任何地方的文檔中找到它... – user3482407
我用'sudo journalctl -u systemd-networkd -o json-pretty'來檢查該服務的日誌輸出。 –