家裡有機器,撥號上網,有獨立的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 '/P-t-P/!d' -e 's/^[[:space:]]* inet addr://g' -e 's/[[:space:]]*P-t-P:.*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 '/P-t-P/!d' -e 's/^[[:space:]]* inet addr://g' -e 's/[[:space:]]*P-t-P:.*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"