OpenWrt中的Hotplug腳本


Hotplug,直譯就是熱插拔。在OpenWrt中,無論何時一個設備從系統中增刪,都產生一個“熱插拔事件”。

 

每次網絡接口啟動(up)或者關閉(down)的時候,所有在/etc/hotplug.d/iface/目錄中的腳本都會以字母順序執行。根據一個不成文的規則,會在每個腳本的前面加上一個數字前綴來設置正確的運行順序。這就是為什么腳本名稱都像:/etc/hotplug.d/iface/<nn>-<scriptname>的原因。

在iface hotplug腳本中有三個主要的環境變量:

變量名稱 描述
ACTION "ifup" 或者 "ifdown"
INTERFACE 網絡接口的名稱,如"wan"
DEVICE 物理設備的名稱,如"br-lan"

利用hotplug腳本可以在網絡接口啟動或關閉時執行相應的動作,新建:/etc/hotplug.d/iface/99-ipreport:

vi /etc/hotplug.d/iface/99-ipreport

#!/bin/bash [ "$ACTION" = ifup ] || exit 0 [ "$INTERFACE" = wan ] || exit 0 ip=$(ifconfig pppoe-wan | grep inet | awk '{print $2}' | cut -c 6-) echo $ip > /tmp/ip.txt 

會生成一個/tmp/ip.txt,里面有個外網ip地址

或者換一種if寫法,將腳本外置方便修改

vi /etc/hotplug.d/iface/99-ipreport

#!/bin/bash if [ $ACTION=ifup -a $INTERFACE=wan ]; then sh /root/pppoe-success.sh fi 

/root/pppoe-success.sh的內容為訪問一個網址匯報ip地址

vi /root/pppoe-success.sh
#!/bin/bash curl -s '網址' > /dev/null 

上面用到了curl,openwrt默認沒有,可以在luci后台搜索curl安裝

然后設置執行權限,ipreport無需設置執行權限,只需要設置外部腳本pppoe-success.sh執行權限即可

chmod +x /root/pppoe-success.sh

在luci后台將wan斷開,然后再連接,或者直接重啟路由器,即可看到效果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM