私のVPSマシンのIPを変数に入れる必要があります。私は、外部IPアドレスが出力値inet addr
の一部として表示されることです。ifconfig
私は試した:
ipa="$(hostname -i)"
しかしecho ${ipa}
、これによりlocalhost token:が発生した127.0.1.1
ために別の解決策が見つかりましawk
たawk
。
私はこれを試しました:
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