2009-08-22 9 views
2

ここに投稿するのか、ServerFaultに投稿するのかわかりません。 とにかく、私は電話の3gネットワークを使っていくつかのメディア共有サイトに接続するために会社のファイアウォールを回避しようとしています。私はパラメータとしてpppdのinetアドレスを取る単純なip routeコマンドを思いついた。しかし、スクリプトからinetアドレスを読み取ることで、コマンドラインパラメータで渡すのではなく、少しだけ自動化したいと思っています。ここでシェルコマンドから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アドレスを含む行に切り捨てます。 cut1.2.3.4 Bcast:のようなものを与えて、bcast:までinet addr:後のすべてを分割し、 awkコールでは、最初の(スペースで区切られた)フィールドだけが印刷され、IPアドレスだけが残ります。リンクが育っているとき

+0

whoa、完璧!ありがとうございました! – ariefbayu

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

関連する問題