2009-08-22 48 views
2

我不知道是否要在此處或在ServerFault上發佈它。 無論如何,我正嘗試在公司的防火牆上使用手機的3G網絡連接到一些媒體共享網站。我想出了一個簡單的ip route命令,它將pppd的inet地址作爲參數。但是,我想通過從腳本中讀取inet地址來使其更加自動化,而不是通過命令行參數傳遞它。如何從shell命令獲取pppd inet地址

這裏的情景,使之更加明顯:

  • 的命令調用截至目前:$jumpfirewall xxx.xxx.xxx.xxx

  • 的命令調用我想:$jumpfirewall

你知道一些命令或庫,我可以用它從命令行讀取它?

回答

5

cyberciti改編:

/sbin/ifconfig ppp0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'

ifconfig ppp0會得到您的主PPP接口信息; grep將其剪切到包含IP地址的行;在inet addr:bcast:之後,cut將所有內容分開,給出如1.2.3.4 Bcast:;並且awk調用將僅打印第一個(空格分隔的)字段,僅留下IP地址。

+0

哇,完美!謝謝! – ariefbayu 2009-08-22 02:45:51

2

pppd當鏈接出現時自動調用/etc/ppp/ip-up中的腳本。在此腳本中,$4是PPP鏈路的本地IP地址。 (在某些發行版中,/etc/ppp/ip-up設置爲調用/etc/ppp/ip-up.d中的腳本,$PPP_LOCAL設置爲IP地址,因此您可以將腳本放置在那裏)。

這樣,您不必手動調用腳本 - 只需調出PPP鏈接,它就會自動運行。當鏈路斷開時,您可以使用相應的/etc/ppp/ip-down撤消路由。

+0

我使用腳本是因爲每次使用我的3g網絡時都不會使用隧道。無論如何,我投了信息 – ariefbayu 2009-08-23 13:32:53