• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[solved] bash: ip-nummer in variable

Hallo
für einen kleinen Skript hätte ich gerne die IP-Nummer der laufenden Maschine in einer Variablen.

Hab es so probiert:

ip=$(cat /etc/sysconfig/network/ifcfg-eth* ¦ grep IPADDR)

$ip enthält jetzt
REMOTE_IPADDR='' IPADDR='192.168.1.17'

Es gibt sicher elegantere Wege aber hier interessiert mich auch, wie ich Text aus einer Variablen extrahieren kann.

Danke für jede Hilfe
 
Alternative:
Code:
MY_IP=`/sbin/ifconfig eth0 | grep Bcast | awk '{ print $2 }' | awk -F: '{ print $2 }'`;

Ansonsten:
'cat' brauchst du nicht:
Code:
grep ^IPADDR /etc/sysconfig/network/ifcfg-eth*
reicht völlig.
=>
Code:
IPADDR='192.168.0.120'
Und dann wieder 'awk':
Code:
MY_IP=`grep ^IPADDR /etc/sysconfig/network/ifcfg-eth* | awk -F "'" '{ print $2 }'`

[edit] Ich würde dir aber die Methode mit 'ifconfig' empfehlen, weil 'ifconfig' die momentan zugewiesene Adresse anzeigt und Distributionsübergreifend funktioniert (bei Debian z.B. gibt es keine sysconfig).
 
Tausend Dank
jetzt geht es...
der Skript ist für Maschinen die ganz sicher nur eine Netzkarte haben (webserver).

aber es geht sicher mit

MY_IP1=`/sbin/ifconfig eth0 | grep Bcast | awk '{ print $2 }' | awk -F: '{ print $2 }'`;
MY_IP2=`/sbin/ifconfig eth1 | grep Bcast | awk '{ print $2 }' | awk -F: '{ print $2 }'`;

Aber... weiss jemand trotzdem wie aus einer Variablen Text extrahiert wird so in etwa wie mit einem substr ?

Danke nochmals
 
Martin Breidenbach schrieb:
Was ist wenn mehrere Netzwerkkarten vorhanden sind ?
Noch ein Grund die Ausgabe von 'ifconfig' zu benutzen.

Andernfalls müsste man noch eine Schleife einbauen.

maurizio omissoni schrieb:
[...]
Aber... weiss jemand trotzdem wie aus einer Variablen Text extrahiert wird so in etwa wie mit einem substr ?
Du hast da doch zwei Beispiele im Einsatz: 'grep' und 'awk' 8)
 
A

Anonymous

Gast
maurizio omissoni schrieb:
Aber... weiss jemand trotzdem wie aus einer Variablen Text extrahiert wird so in etwa wie mit einem substr ?

Schau dir mal die String-Manipulatoren der Bash an.
TeXpert hatte da mal was zusammengestellt.

http://www.linux-club.de/viewtopic.php?t=26005t&start=12

robi
 
einfach so aus neugierde hab ich versucht die gute lösung von b3 [inzwischen awk etwas kennengelernt :) ] auf
ip a
anzuwenden uns bin auf folgende teillösung gestossen

echo `ip a | grep "global eth0" | awk '{ print $2 }'| awk -F. '{ print $1 "." $2 "." $3 "." $4 }'`

resultat:
192.168.1.2/24

wie kriege ich die \24 weg die ja auch \8 heissen könnte?

danke für die geduld (ist nur lerngier, die lösung von b3 ist für mich schon im einsatz und wird es bleiben...)
 
ich idiot...
hier ist es

echo `ip a | grep "global eth0" | awk '{ print $2 }'| awk -F. '{ print $1 "." $2 "." $3 "." $4 }' | awk -F"/" '{print $1 }'`

sorry für die störung
 
die lösung gemäss AS

echo `ip a | grep "global eth0" | awk '{ print $2 }'| awk -F. '{ print $1 "." $2 "." $3 "." $4 }' | awk -F"/" '{print $1 }'`

mir genügt aber die von b3 völlig.
Danke an alle
 
maurizio omissoni schrieb:
[...]inzwischen awk etwas kennengelernt [...]
Schön. :wink:

Code:
awk -F. '{ print $1 "." $2 "." $3 "." $4 }'
sowie das 'echo' kannst du aber weglassen.

=>
Code:
ip a | grep "global eth0" | awk '{ print $2 }' | awk -F"/" '{print $1 }'
oder
Code:
ip -4 -o addr show eth0 | awk -F " " '{ print $4}' | awk -F"/" '{print $1 }'

[edit] Noch etwas kürzer:
ip -4 -o addr show eth0 | awk -F"/|| " '{print $7 }'
 
eth0:1 oder eth0:apple oder eth0:birne, also zweite, dritte, etc. IP für ein Interface.
Code:
ip a a 192.168.222.1/24 brd + dev eth0;
ip a a 192.168.223.1/24 brd + dev eth0;
Nehmen wir an, dass eth0 vorher noch keine IP-Adressen hatte und diese damit jetzt hinzugefügt worden sind. ifconfig zeigt nur die erste an, sofern du nicht noch ne "label"-Option hinzufügst.
 
Oben