查看完整版本: 利用簡單的 Shell Script 抓你的IP


adj 2007-11-29 16:48

利用簡單的 Shell Script 抓你的IP

這是在NetMan兄的網站上看到的..可以利用Shell Script 抓取網路卡上的IP

許多朋友目前都採用撥接 ADSL 上網﹐每次連線的 IP 都未必一樣﹐只要透過簡單的命令管線﹐您就可以將當前的 IP 抓出來了﹕
[quote]
我們不妨看看 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
[/quote]
[quote]
不難發現 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
[/quote]
[quote]
再來﹐我們先用相同的分隔符號將句子分成數列﹐然後抓出 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

(注意﹕在 ' ' 之間是一個空白鍵﹗)
[/quote]
[quote]
然後用 cut 命令抓出 IP 所在的列﹐細心數一數﹐應該是第 3 列﹕
# ifconfig ppp0 | grep "inet addr" | tr -s ' ' ' ' | cut -d ' ' -f3
addr:211.74.48.254
[/quote]
[quote]
然後我們用“ : ”再分兩列﹐抓第 2 列就是 IP 了﹕
# ifconfig ppp0 | grep "inet addr" | tr -s ' ' ' ' \
        | cut -d ' ' -f3 | cut -d ':' -f2
211.74.48.254
[/quote]
這裡﹐我們一共用 5 個 pine 將 4 個命令連接起來﹐就抓出機器當前的 IP 位址了。是否很好用呢﹖
頁: [1]
查看完整版本: 利用簡單的 Shell Script 抓你的IP