IP アドレスがわかっているインターフェイスのイーサネット ポートを取得する bash スクリプトを作成しようとしています。これをifconfigから取得する必要がありますが、どうすればよいかわかりません。何か案は?
ありがとう。
127.0.0.1 を、インターフェイス情報を取得する IP アドレスに置き換えます
ifconfig | grep 127.0.0.1 -B1 | grep Link | cut -f 1 '-d '
マシンの物理ポートも特定したい場合は、次を実行します。
ethtool -p $OUTPUT_OF_FIRST_COMMAND
そのインターフェイスに関連付けられているイーサネット カードのライトが点滅します。
少し面倒ですが、うまくいくはずです:
/sbin/ifconfig | grep -B1 1.2.3.4 | awk '{print $1; exit}'
オプションでipコマンドを使用することもできます。この-o|-oneline
オプションを使用すると、解析がはるかに簡単になります。例えば
ip -o addr | awk '/1.2.3.4/{print $2}'
頭のてっぺんからgrepを使用するかもしれません:
ifconfig |grep -B1 '127.0.0.1' |grep -o '^[a-zA-Z0-9]*'
「127.0.0.1」は探しているアドレスです。
-B1 は、一致の前に返される行数を設定します。
-o は、行全体ではなく、一致するセグメントのみを返すように 2 番目の grep を設定します。
'^[a-zA-Z0-9]*' は、行頭から始まる任意の英数字に一致します。
ifconfig はインターフェイス名の行を除くすべての行をインデントするため、インターフェイス名のみに一致します。
速くて汚いですが、うまくいくはずです。
ifconfig | awk 'BEGIN{RS=""}/127.0.0.1/{print $1}'
ifconfig | ruby -00 -ane 'puts $F[0] if /127.0.0.1/'