家裡有機器,撥號上網,有獨立的ip, 開了很多服務,想在外面隨時訪問怎麼辦?出去的時候記住連線的ip? 萬一斷了線,自動重連以後ip也就變了,那麼解決方法也許是用「花生殼」軟體。花生殼也有Linux版本,確實是一個選擇,但是它相當於是把你的ip publish到網上的,假設你自己對自己的安全不是很放心(況且你也不知道花生殼是否蒐集了你的什麼信息) ,而且你的目的也只是小範圍使用(比如就你,你家人或幾個要好的朋友)的話,那麼這個動態ip完全可以通過個人郵件的方式來傳播,本人簡單摸索了兩個解決方案,一是基於knemo+kmail,二是基於udev+mail+exim4,以下簡單介紹一下:
1. knemo + kmail
knemo是kde下面監控網路的軟體,支援事件觸發,kmail是kde下面的郵件客戶端,支援dcop的腳本調用,配置的步驟如下:
建立一個自動獲得撥號連線ip並透過kmail發送的腳本:
#!/bin/bash
FROM="none"
TO="[email protected]"
CC="[email protected]"
BCC=""
SUBJECT="Today's PPP address"
sleep 10s
MESSAGE=`/sbin/ifconfig /bin/sed -e '/PtP/!d' -e 's/^[[:space:]]* inet addr://g' -e 's/[[:space :]]*PtP:.*Mask:.*$//g'`
ATTACHMENT="[] []"
dcop kmail MailTransportServiceIface "sendMessage(QString, QString, QString, QString, QString, QString, KURL::List)" "$FROM" "$TO" "$CC" "$BCC" "$SUBJECT" "$MESSAGE" $ATTACHMENT
然後將其作為knemo配置的notification當中的對應執行的程序即可。 knemo配置是在kcontrol -> internet&network -> network monitor -> Misc 面板上。
2. udev + mail + exim4
第一個方式很簡單,但是需要你是使用kde並且時刻將自己的桌面開著(因為比需要有knemo和kmail),第二個方式是獲取內核的硬體變動,萬一斷了重新連接,/ sys/下方設備檔案變更就觸發,不依賴X和桌上型系統。
exim4的設定這裡就不說了,自己上網看。
對應的發送的腳本( /XXXXX/ppp-address.sh )修改如下:
#!/bin/bash
FROM="none"
TO="[email protected]"
CC="[email protected]"
BCC=""
SUBJECT="Today's PPP address"
sleep 10s
MESSAGE=`/sbin/ifconfig /bin/sed -e '/PtP/!d' -e 's/^[[:space:]]* inet addr://g' -e 's/[[:space :]]*PtP:.*Mask:.*$//g'`
echo "$MESSAGE" /usr/bin/mail -s "$SUBJECT" -c "$CC" -b "$BCC" "$TO"
udev 規則新增:/etc/udev/rules.d/ 下方新增一個規則檔案如z100_ppp_ip_letter.rules 內容為:
ACTION=="add", SUBSYSTEM=="net", KERNEL=="ppp[0-9]", RUN+="/XXXXX/ppp-address.sh"