LinuxのシェルスクリプトでローカルのIPアドレスを取得する方法
2022-02-08 14:10:16
方法1.
ifconfig -a
ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"
#! /bin/sh
ip=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`
echo $ip
if[[ $ip == "10."*]]
then
echo "The network segment is 10.*. *. * network segment"
else
echo "The segment is 192.*. *. *segment"
fi
コマンドのパース
- ifconfig -a は、ウィンドウズではこのコマンドと同じで、ローカルマシンのすべてのIP情報を返します。
- grep inet IPを含む行を傍受する。
- grep -v 127.0.0.1 ローカルを指している行を削除する
- grep -v inet6 inet6 を含む行を削除します。
- awk { print $2} $2 はデフォルトでスペースで区切られた 2 番目のグループを意味します 同様に $1 は最初のグループを意味します。
- tr -d "addr: 文字列 "addr:"を削除します。
マルチNICの場合
NICが複数ある場合、異なるネットワークセグメント上に複数のIPが存在する可能性があり、その場合でも上記のコマンドを実行すると、以下のように複数のIPが返されます。
あるマシンが192.*. *.8 と 10.*. *. ネットワークセグメントIPが192 * * * 8と10 * * *であり、異なるネットワークセグメントIPアドレスに対して異なる出力を印刷するために、次のようなシェルスクリプトを実行します。
ip addr
ip addr | awk '/^[0-9]+: / {}; /inet.*global/ {print gensub(/(. *)\/(. *)/, "\\1", "g", $2)}'
方法2
ip addr
ip addr | awk '/^[0-9]+: / {}; /inet.*global/ {print gensub(/(. *)\/(. *)/, "\\1", "g", $2)}'
ここではawkコマンドが絡んでくるので詳細は省きますが、後日awkコマンドの特集が組まれる予定です
今回の記事は、Linuxのシェルスクリプトでローカルのipアドレスを取得する方法についてです。Shell get local ip contentについては、過去の記事を検索していただくか、引き続き以下の関連記事をご覧ください。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン