5

IP アドレスがわかっているインターフェイスのイーサネット ポートを取得する bash スクリプトを作成しようとしています。これをifconfigから取得する必要がありますが、どうすればよいかわかりません。何か案は?

ありがとう。

4

4 に答える 4

7

127.0.0.1 を、インターフェイス情報を取得する IP アドレスに置き換えます

ifconfig  | grep 127.0.0.1 -B1 | grep Link | cut -f 1 '-d '

マシンの物理ポートも特定したい場合は、次を実行します。

ethtool -p $OUTPUT_OF_FIRST_COMMAND

そのインターフェイスに関連付けられているイーサネット カードのライトが点滅します。

于 2011-02-13T19:09:32.710 に答える
4

少し面倒ですが、うまくいくはずです:

/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}'
于 2011-02-13T19:15:12.093 に答える
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 はインターフェイス名の行を除くすべての行をインデントするため、インターフェイス名のみに一致します。

速くて汚いですが、うまくいくはずです。

于 2011-02-13T19:50:06.257 に答える
0
ifconfig | awk 'BEGIN{RS=""}/127.0.0.1/{print $1}'

ifconfig | ruby -00 -ane 'puts $F[0] if /127.0.0.1/'
于 2011-02-14T00:47:30.930 に答える