シェル - シェルスクリプト - IP アドレスを取得


 クラウディア


1. 概要
2. FreeBSD
3. Ubuntu
4. 参考サイト

1. 概要

 命題は、「『IPv4』のローカル『IP』アドレスを、シェルスクリプトで取得して変数にいれる」です。  プラットフォームによって、使うコマンドが異なるので、ここではやったプラットフォームのみ記述します。

2. FreeBSD

 「FreeBSD」では、「ifconfig」コマンドを中心に「IP」アドレスをします。  「FreeBSD 14.3 RELEASE」でやってみました。  シェルスクリプトは、下記のように記述します。

#!/bin/sh

# デフォルトルートが通るインターフェースを取得
INTERFACE=$(route get default 2>/dev/null | awk '/interface:/ {print $2}')

# IPv4 ローカルIPを取得
IP_ADDRESS=$(ifconfig "$INTERFACE" inet | awk '/inet / {print $2}')

echo "Local IPv4 address: $IP_ADDRESS"
 実行結果は、例えば、下記のようになります。

Local IPv4 address: 192.168.1.2

3. Ubuntu

 「Ubuntu」では、「ip」コマンドを中心に「IP」アドレスを取得します。  「Linux ubuntu2204 5.15.0-161-generic」でやってみました。  シェルスクリプトは、下記のように記述します。

#!/usr/bin/sh

# デフォルトルートが通るインターフェースを取得
INTERFACE=$(ip route | grep '^default' | awk '{print $5}')

# IPv4 ローカルIPを取得
IP_ADDRESS=$(ip -4 addr show "$INTERFACE" | grep -oP '(?<=inet\s)\d+(\.\d+){3}')

echo "Local IPv4 address: $IP_ADDRESS"
 実行結果は、例えば、下記のようになります。

Local IPv4 address: 192.168.10.155

4. 参考サイト

 本ページは、「ChatGPT」軍曹を参考にさせていただきました。

EaseUS