外部IPを変数に入れます - grep操作が失敗しました。

外部IPを変数に入れます - grep操作が失敗しました。

私のVPSマシンのIPを変数に入れる必要があります。私は、外部IPアドレスが出力値inet addrの一部として表示されることです。ifconfig

私は試した:

ipa="$(hostname -i)"

しかしecho ${ipa}、これによりlocalhost token:が発生した127.0.1.1ために別の解決策が見つかりましawkawk

私はこれを試しました:

ipa=$(ifconfig | grep "inet addr:[0-999]\.[0-999]\.[0-999]\.[0-999]")

ただし、出力は空行なのでecho ${ipa}失敗します。

私が試したのはなぜ失敗しましたか?それとも、少なくともどのように修正しますか?

ベストアンサー1

ipa=$(ifconfig | perl -lane '/inet addr:(\S+)/ and $1 !~ "^127" and print $1')

また見てくださいここ多くの選択肢があります。たとえば、次のようにしますgrep

ipa=$(ifconfig | grep -Po 'inet addr:\K[^\s]+' | grep -v '^127')

説明する:

ipa=$( )括弧内のコマンド出力をshowinterfaces変数ipa
ifconfigとそのアドレスに割り当てます。ip address
| grep -Po 'inet addr:\K[^\s]+'互換性のある正規表現を使用して出力をフィルタリングしperl、一致するテキストフィルタを再印刷することをお勧めします
| grep -v '^127'。今回は-v()で始まる^値を除外します。127


外部IPを取得するには、通常、次のようにします。

dig +short myip.opendns.com @resolver1.opendns.com

おすすめ記事