シェルコマンドからpppd inetアドレスを取得する方法
-
19-09-2019 - |
質問
ここに投稿するか ServerFault に投稿するか迷っています。とにかく、会社のファイアウォールを回避して、携帯電話の 3G ネットワークを使用してメディア共有サイトに接続しようとしています。pppd の inet アドレスをパラメータとして受け取る単純な ip Route コマンドを思いつきました。ただし、inet アドレスをコマンド ライン パラメーター経由で渡すのではなく、スクリプトから直接読み取ることで、もう少し自動化したいと考えています。
より明確にするために、シナリオを次に示します。
現時点でのコマンド呼び出しは次のとおりです。
$jumpfirewall xxx.xxx.xxx.xxx
必要なコマンド呼び出し:
$jumpfirewall
コマンドラインから読み取るために使用できるコマンドまたはライブラリをご存知ですか?
解決
から適応 サイバーシティ:
/sbin/ifconfig ppp0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'
の ifconfig ppp0
プライマリ PPP インターフェイスの情報を取得します。の grep
IP アドレスを含む行まで切り取ります。の cut
その後すべてを分割します inet addr:
まで bcast:
, 、次のようなものを与えます 1.2.3.4 Bcast:
;そしてその awk
call は最初の (スペースで区切られた) フィールドのみを出力し、IP アドレスのみが残ります。
他のヒント
pppd
は自動的/etc/ppp/ip-up
でスクリプトを呼び出します。このスクリプトでは、$4
は、PPPリンクのローカルIPアドレスです。 (いくつかのディストリビューションでは、/etc/ppp/ip-up
は、IPアドレスに設定/etc/ppp/ip-up.d
と、$PPP_LOCAL
でスクリプトを呼び出すように設定されているので、あなたはそこにスクリプトを配置することができます)。
この方法では、手動でスクリプトを呼び出す必要はありません - ちょうどPPPリンクを立ち上げ、それが自動的に実行されます。リンクがダウンしたときに、あなたのルートを元に戻すために使用することができ、対応する/etc/ppp/ip-down
があります。