簡體   English   中英

Ubuntu:等待網絡連接並執行bash命令

[英]Ubuntu: wait for network link up and execute a bash command

在Ubuntu(最新的發行版很好)中,我想重新啟動路由器並在bash腳本中運行一個命令,該命令等待網絡鏈接再次啟動,並且在檢測到該鏈接時必須啟動bash命令。

我可以使用某種輪詢循環來實現它,但是理想的解決方案是擁有一個bash命令,該bash命令在執行時等待鏈接建立並自動執行我提供給它的bash命令。

我讀了一些有關dbus的文章(並且dbus似乎很可行),但似乎也需要太多時間才能完全了解如何正確使用它。 建議我檢查ethtool之類的工具是否能夠執行這種“等待並執行”,但是在手冊頁中我沒有找到任何有關它的信息。

注意:我忘了說我想要命令來檢查鏈接的PHYSICAL層是否正常。 因此,不接受在上層工作的解決方案。 此外,也不接受涉及將腳本放入目錄(例如/etc/network/if-up.d)的解決方案。


有任何想法嗎?

謝謝

我建議的事件監聽器:

inotifywait -e modify /sys/class/net/eth0/carrier; echo 'Change detected'

當您插入或拔出網絡電纜時,它將觸發回顯“檢測到更改”,當然,它幾乎可以觸發任何事情。

這將是一次性的,但是我帶您知道如何使用它來制作守護程序,如果不是,那將是一個學習的好練習:)

如果要使用命令檢查鏈接是否打開或關閉,請使用ip

ip addr show eth0 | grep -Po "(?<=state ).*?(?=\s)"
DOWN

ip addr show wlan0 | grep -Po "(?<=state ).*?(?=\s)"
UP

您可以通過/ sys / class / net / eth0 / carrier文件檢查鏈接是否向上/向下

cat /sys/class/net/eth0/carrier

如果輸出為1,則插入以太網電纜並建立鏈接。

如果輸出為0,則拔出以太網電纜並且鏈路斷開。

注意:如果您有其他接口,則使用eth0,然后替換eth0之類的接口,例如eth2 / eth3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM