2

CentOS 6.4 で Bash を使用して、AWK を使用して IP アドレスに関連付けられたネットワーク インターフェイス名を取得しようとしています。Solaris ボックスから少しコマンドを取得しましたが、それを Linux 出力に変換する方法がわかりません。

コマンドは次のようになります。

ifconfig -a | awk '
    $1 ~ /:/    {split($1,nic,":"); 
                     lastif=sprintf("%s:%s",nic[1],nic[2]);}
    $2 == "'$1'"    { print lastif ; exit; }

    '

これはスクリプトの一部なので、次のようなコマンドライン引数を取りmonitor.sh x.x.x.x y.y.y.y、最初の xxxx を使用してインターフェイス名を取得し、$1 == $2 にして、後で yyyy に ping できるようにします。Solaris ではifconfig -a出力が CentOS とは異なると思います。IP とインターフェイスが同じ行にある場合はインターフェイス名を取得できますが、Linux では 2 つの異なる行にあります。何か案は。

4

2 に答える 2

3

CentOS は持っていませんが、RHEL では IP アドレスが inet アドレスとして表示されます。私はそれらが同じであるべきだと信じています。

次のコマンドを実行すると、IP アドレスを持つインターフェイス名が表示されます。

export iface=$(ifconfig | grep -B1 "inet addr:x.x.x.x" | awk '$1!="inet" && $1!="--" {print $1}')

echo "$iface" # To get the interface name for x.x.x.x ip

そして、これは localhost を含む IP を表示するはずです:

ifconfig | grep "inet addr:" | sed -e 's/addr:/addr: /g' | awk '{print $3}'
于 2013-08-20T17:28:34.727 に答える
1

127.0.0.1 (またはその他の IP) の ifname を取得する

ifconfig | awk '/127.0.0.1/ {print $1}' RS="\n\n"
lo

IP の取得:

ifconfig | awk -F"[ :]+" '/inet addr:/ {print $4}'

ifconfig の出力を投稿してください。OS の微調整をお手伝いします

于 2013-08-20T20:49:21.430 に答える