這是在NetMan兄的網站上看到的..可以利用Shell Script 抓取網路卡上的IP
許多朋友目前都採用撥接 ADSL 上網﹐每次連線的 IP 都未必一樣﹐只要透過簡單的命令管線﹐您就可以將當前的 IP 抓出來了﹕
引用:
我們不妨看看 ifconfig ppp0 這個命令的輸出結果﹕
# ifconfig ppp0
ppp0 Link encap:Point-to-Point Protocol
inet addr:211.74.48.254 P-t-P:211.74.48.1 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
RX packets:5 errors:0 dropped:0 overruns:0 frame:0
TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
引用:
不難發現 IP 位址所在的句子中有著其它句子所沒有的字眼﹕inet addr 。然後﹐我們就可用 grep 把這行抓出來﹕
# ifconfig ppp0 | grep "inet addr"
inet addr:211.74.48.254 P-t-P:211.74.48.1 Mask:255.255.255.255
引用:
再來﹐我們先用相同的分隔符號將句子分成數列﹐然後抓出 IP 位址所在的那列。
嗯﹐這裡﹐我們可以用“ : ”來分出 3 列﹔也可以用空白鍵來分出 5 列(空因為句子開首就是一個空白鍵)。如果用空白鍵來分的話﹐由於有些間隔有多個空白鍵的原因﹐那麼﹐我們可以用 tr 命令﹐將多個空白鍵集合成一個空白鍵﹕
# ifconfig ppp0 | grep "inet addr" | tr -s ' ' ' '
inet addr:211.74.48.254 P-t-P:211.74.48.1 Mask:255.255.255.255
(注意﹕在 ' ' 之間是一個空白鍵﹗)
引用:
然後用 cut 命令抓出 IP 所在的列﹐細心數一數﹐應該是第 3 列﹕
# ifconfig ppp0 | grep "inet addr" | tr -s ' ' ' ' | cut -d ' ' -f3
addr:211.74.48.254
引用:
然後我們用“ : ”再分兩列﹐抓第 2 列就是 IP 了﹕
# ifconfig ppp0 | grep "inet addr" | tr -s ' ' ' ' \
| cut -d ' ' -f3 | cut -d ':' -f2
211.74.48.254
這裡﹐我們一共用 5 個 pine 將 4 個命令連接起來﹐就抓出機器當前的 IP 位址了。是否很好用呢﹖