小ネタ Local IP addressを1発で取り出す方法

投稿者: | 10月 9, 2023

近頃、Chat GPTを使うようになって、こういう手間が少しは減ったと思うが、まだまだ、微妙にかゆいところに手が届かない。というか、かゆいところを掻きまくったら、別のどうでもいいところが痒くなるみたいな感じ。それにしてもChat GPTが取り沙汰されているけど、すげーっと言っていて使っている人と、すげーと言っているが使ってはいない人に分かれるのではないかと思う。多分、使い方がわからないというわけではなくて、そもそも興味がないから使わないただそれだけではないかという気がする。

OSごとのテストをすることが結構多く、初期設定をだいぶ自動化しているのだが(Chat GPTが出る前からw)、環境が変わったりすると、途端に動かなくなる。特に厄介なのがEthernetのデバイス名。eth0となる環境もあれば、ensXXXとなる環境もある。vSphereは、HWバージョンが変わると変更になったりする。例えば、vSphere7でens192だったのが、vSphere8だとens33となる。もちろんARM版のVMware Fusionでもデバイス名が異なる。

 

閑話休題

 

Ehternetのデバイス名の指定をスクリプトで吸収してみた。以下、ローカルIPアドレスを出力する例。ただし、Ethernetデバイスは1つだけを想定している。

Ubuntu/netplanの場合

ETHDEV=`netplan get| sed 's/^[[:space:]]*//'  | grep -A 1 "ethernet" | grep -v ethernet | cut -d ":" -f 1`
echo $ETHDEV
LOCALIPADDR=`ip -f inet -o addr show $ETHDEV |cut -d\ -f 7 | cut -d/ -f 1`
echo $LOCALIPADDR

 

RHEL系の場合

ETHDEV=`nmcli device | grep ethernet | cut -d " " -f1`
echo $ETHDEV
LOCALIPADDR=`ip -f inet -o addr show $ETHDEV |cut -d\ -f 7 | cut -d/ -f 1`
echo $LOCALIPADDR

 

VMware環境の場合

実はこれで1発で取り出せる。

LOCALIPADDR=`vmtoolsd --cmd "info-get guestinfo.ip"`
echo $LOCALIPADDR

 

となる。これで環境が変わってもデバイス名の違いを吸収してくれる。

小ネタでした。

コメントを残す