Re: Eigene Netzadresse rausfinden

Page principale
Attachements:
Message en tant que courrier électronique
+ (text/plain)
Supprimer ce message
Répondre à ce message
Auteur: Rainer Hirsel
Date:  
À: list
Sujet: Re: Eigene Netzadresse rausfinden
Hi Norman,

On Sun, Mar 14, 2004 at 07:17:26PM +0100, Norman Zimmer wrote:
> ich versuche gerade von meiner Linuxkiste in einem Skript die Netzadresse
> rauszufinden.
> Gibt es da bereits eine Lösung? Ich hab leider nichts richtiges gefunden.


Falls keine bessere Lösung kommt, wäre hier ein Vorschlag, der den
umständlichen aber korrekten Weg über die UND-Verknüpfung von Host-Addresse
und Netzmaske geht. Sicher hätte man das Ganze noch kürzen können, aber
ich denke es würde dann sehr schwer lesbar werden.


#! /bin/sh
adhost=$(LC_ALL=C ifconfig eth2|grep inet|cut -f 2 -d ":"|cut -f 1 -d "
")
admask=$(LC_ALL=C ifconfig eth2|grep inet|cut -f 4 -d ":" )
ad1=$(($(echo $adhost.$admask |cut -f 1,5 -d "."|sed -e 's:\.: \& :')))
ad2=$(($(echo $adhost.$admask |cut -f 2,6 -d "."|sed -e 's:\.: \& :')))
ad3=$(($(echo $adhost.$admask |cut -f 3,7 -d "."|sed -e 's:\.: \& :')))
ad4=$(($(echo $adhost.$admask |cut -f 4,8 -d "."|sed -e 's:\.: \& :')))
netzaddr="$ad1.$ad2.$ad3.$ad4"
echo Die Netzadresse ist $netzaddr'!'


Falls Dich die genaue Funktionsweise interessiert:
Erst werden die beiden Adressen aus ifconfig gespeichert, danach werden
in 4 Zeilen jeweils die beiden Adressen hintereinandergeschrieben an "cut"
übergeben und der erste, zweite, usw. Block der beiden Adressen
herausgetrennt. Das Trennzeichen ist dabei ein Punkt, der wird durch die
Folge Leer-Ampersand-Leer ersetzt und mit $(( )) wird der resultierende
Binärausdruck ausgewertet, die vier Ergebnisse bilden dann die komplette
Netzwerkadresse.

HTH,
Rainer

P.S. Zur Not tut's auch ein kurzes:
route -n|grep eth0|grep -v "^0.0.0.0"|cut -f 1 -d " "
Dieses Kommando versagt aber bei komplexeren Routingtabellen.