netstat/ifconfigとipが利用できない場合のデフォルトゲートウェイの取得方法は?

netstat/ifconfigとipが利用できない場合のデフォルトゲートウェイの取得方法は?

ipだから私はcentosまたはubuntu dockerコンテナを持っていますが、netstattoがないことがわかりましたifconfig。追加パッケージをインストールしたくありません。上記のコマンドのいずれも機能しない場合、デフォルトゲートウェイを取得する方法はありますか?

PSコンテナからDockerホストにアクセスする方法を知るには、デフォルトゲートウェイが必要です。

ベストアンサー1

@dirktが述べたように、デフォルトのルートテーブルはすべての最新のLinuxシステムでテキスト形式で保存されますが、/proc/net/route残念ながらIPアドレスは(逆方向)16進数で保存されます。 Bashハッキングと助けを借りて、これを人間が読めるIPアドレスに変換できますawksed

for i in $(echo "$(< /proc/net/route | head -2 | tail -1 | awk '{print $3}')" | sed -E 's/(..)(..)(..)(..)/\4 \3 \2 \1/' ) ; do printf "%d." $((16#$i)); done | sed 's/.$//' 

以下は、同じアイデアをより読みやすい(複数行)のバージョンです。

#!/usr/bin/env bash
get-default-gateway() {
  default_route_ip="$(< /proc/net/route | head -2 | tail -1 | awk '{print $3}')"

  hex-ip-to-dec-ip "$default_route_ip"
}

hex-ip-to-dec-ip() {
  local hex_ip="$1" 
  for i in $(echo "$hex_ip" | sed -E 's/(..)(..)(..)(..)/\4 \3 \2 \1/' ) ; do 
    printf "%d." $((16#$i));
  done | sed 's/.$//' 
}

get-default-gateway

おすすめ記事