字體:  

利用簡單的 Shell Script 抓你的IP

adj 發表於: 2007-11-29 16:48 來源: ADJ網路控股集團


這是在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:

不難發現 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:

再來﹐我們先用相同的分隔符號將句子分成數列﹐然後抓出 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:

然後用 cut 命令抓出 IP 所在的列﹐細心數一數﹐應該是第 3 列﹕
# ifconfig ppp0 | grep "inet addr" | tr -s ' ' ' ' | cut -d ' ' -f3
addr:211.74.48.254

QUOTE:

然後我們用“ : ”再分兩列﹐抓第 2 列就是 IP 了﹕
# ifconfig ppp0 | grep "inet addr" | tr -s ' ' ' ' \
        | cut -d ' ' -f3 | cut -d ':' -f2
211.74.48.254
這裡﹐我們一共用 5 個 pine 將 4 個命令連接起來﹐就抓出機器當前的 IP 位址了。是否很好用呢﹖