2016-06-14 39 views
0

我想在特定接口上發生IP地址更改時觸發服務。有沒有這樣的目標或其他方法,我不知道用Linux上的systemd(內核3.19)來實現這個目標?檢測接口上的IP地址更改

該服務將用於發送信號到定義的過程。 Linux正在嵌入式系統上運行。

謝謝!

回答

1

因爲你使用Systemd你可能已經使用systemd-networkd來管理您的設備,而不是依賴第三方代碼。

您可以使用結構化日誌輸出來獲得當前BOOD_ID的最後2 ADDRESS場(可悲的是,在systemd-networkd沒有通知機制進行地址變更):

→ sudo journalctl -F ADDRESS -u systemd-networkd -n 2 
192.168.178.29 

所以,如果只有一行輸出,沒有地址改變。

+0

不完全是我在找的東西,但我可以用它工作,謝謝! – user3482407

+0

順便說一句,你怎麼知道ADDRESS字段的名稱?我無法在任何地方的文檔中找到它... – user3482407

+1

我用'sudo journalctl -u systemd-networkd -o json-pretty'來檢查該服務的日誌輸出。 –

1

在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