因為這個Script最後會放在PI4和HTC U11 Ultra裡,有另個先決條件,是必需要知道的,就是...這兩個設備,連線之後,它的IP是多少。
所以在這張Cron Table裡的第一個Script,get_ip.sh,就是通知我,這個設備取得的IP是多少。通知的方法是發LINE...要發Email也可以,但有點麻煩,我只是想知道IP是多少,看LINE就可以了。
在Linux 作業系統裡,我的習慣是用 ifconfig 這個指令,來取得設備的IP,如下圖,下圖顯示的是一般輸入後的指令,我們可以透過畫面顯示內容,得知IP位置,但如果只要把IP傳LINE給我呢?
這時候,我們需要再精確一點的指令,例如:ifconfig eth0 或 ifconfig wlan0。
ifconfig 網卡名稱
會只顯示我們指定的網卡,比上一個ifconfig的內容,還要再精簡一些,但如果把這一堆文字,用LINE傳給我...也不是不行,就...如果這樣也能接受,這世界只要有iPhone第一代就好了...
從網路上查到,可以用grep -Eo ,取出需要的IP位置,
grep -E 是可以用正規化表示式尋找文數字。
grep -o 則是顯示完整匹配的內容。
grep -Eo 就不再多解釋了。
ifconfig eth0 | grep -Eo 'inet (addr:)?([0-9].){3}[0-9]' 結果如下
好像還差一點,因為只需要IP位置,那就再來一次
ifconfig eth0 | grep -Eo 'inet (addr:)?([0-9].){3}[0-9]' | grep -Eo '([0-9].){3}[0-9]',這樣就可以了。
接下來就是,要在Shell Script裡,將這個IP位置,放到參數裡,語法如下:
get_net_ip=$(ifconfig eth0 | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' )
除了有線網卡,無線網卡也可以用同樣的方式,不過因為無線網卡,可能要在開機後,才會取得IP,所以,可以加個判斷式,如下:
get_wlan_ip=$(ifconfig wlan0 | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1')
if test -z $get_wlan_ip
then
get_wlan_ip="還沒找到可以自動取得的地方"
fi
再一次說明,這個Shell Script是自己要用的,所以什麼提示功能、防呆功能或重試功能...完全不考慮。
現在,我們有了兩個變數可以使用,get_net_ip 和 get_wlan_ip。
最後一個步驟,就是把這兩個變數,傳送到我的LINE裡,就算完成了。
至於如何從Linux發LINE給自己,網路上有許多相關文章...可以參考,如果覺得需要另外寫一篇,這方面的介紹,歡迎通知我,我再找時間和大家討論。
最後,PI4開機後的30秒時,便會執行這個get_ip.sh,設定如下:
@reboot sleep 30 && /root/script/get_ip.sh >/dev/null 2>&1
這一行的意思是,重開機後,先睡30秒,再執行get_ip.sh...
下一次,進入aircrack-ng程序...
(待)
更多文章,都在...『旅』http://www.it-taiwan.com
2019/11/26 SunAllen