2017-06-14 4 views
0

Ceci est la commande ifconfig Linux standardimpression Linux plusieurs adresses IP (ifconfig) en 1 sortie ligne

[email protected]:~$ ifconfig 
eth0  Link encap:Ethernet HWaddr 00:00:00:00:00:10 
      inet addr:192.168.1.1 Bcast:192.168.56.255 Mask:255.255.255.0 
      UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
      RX packets:112 errors:0 dropped:0 overruns:0 frame:0 
      TX packets:93 errors:0 dropped:0 overruns:0 carrier:0 
      collisions:0 txqueuelen:1000 
      RX bytes:14616 (14.2 KiB) TX bytes:17776 (17.3 KiB) 

eth1  Link encap:Ethernet HWaddr 00:00:00:00:00:11 
      inet addr:10.0.1.1 Bcast:10.0.1.255 Mask:255.255.255.0 
      UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
      RX packets:0 errors:0 dropped:0 overruns:0 frame:0 
      TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 
      collisions:0 txqueuelen:1000 
      RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) 

[email protected]:~$ 

Et ceci est d'imprimer uniquement l'adresse IP de ifconfig

[email protected]:~$ cat script.sh 
ifconfig | grep ad.*Bc | cut -d: -f2 | awk '{ print $1}' 
[email protected]:~$ 

La sortie ressemble Ce que j'essaye d'accomplir est d'imprimer la sortie de l'adresse IP dans 1 ligne .... quelque chose comme ça.

[email protected]:~$ ./script2.sh 
192.168.1.1 10.0.1.1 
[email protected]:~$ 

Est-ce possible avec ifconfig? Si oui, j'apprécierais si vous pouviez partager l'astuce. Merci

+0

Voir cette https://stackoverflow.com/questions/23934425/parse-ifconfig-to-get-only-my-ip-address-using-bash ? rq = 1 – manishr

+0

@manishr, c'était différent. C'était pour imprimer la sortie de l'adresse IP seulement (par défaut, chaque adresse IP est imprimée sur une nouvelle ligne, pas sur une ligne). BTW, j'ai déjà fourni ma réponse sur ce lien aussi. Vous voudrez peut-être vérifier à nouveau ce lien. Merci Ce que j'essaie d'accomplir ici est d'imprimer la sortie de l'adresse IP en 1 ligne et zhenguoli a déjà fourni la réponse précise –

Répondre

1
ifconfig | grep ad.*Bc | cut -d: -f2 | awk '{ print $1}' | { tr '\n' ' '; echo; } 

Votre code est presque fonctionnel. Il suffit de convertir la nouvelle ligne dans l'espace et ajouter un nouveau saut de ligne.

+1

Battez-moi, +1 – Wossname

1

Si vous avez hostname,

hostname -I 

Test:

$ hostname -I 
192.168.2.253 192.168.0.179 
+0

-I (capital) n'est pas pris en charge dans cette case user @ BusyBox: ~ $ hostname -I nom d'hôte: option non valide - 'I' BusyBox v1.24.2 (2016-05-16 13:46:43 UTC) binaire multi-appel. Utilisation: nom d'hôte [OPTIONS] [HOSTNAME | -F FICHIER] Get ou nom-hôte ou le nom de domaine DNS -s court adresses -i pour le nom d'hôte -d nom de domaine DNS -f Nom de domaine qualifié -F FICHIER utiliser le contenu d'un fichier comme nom d'hôte utilisateur @BusyBox: ~ $ –

0
ifconfig | awk '{match($0,/inet addr:([^ ]+)/,a);x=x FS a[1]}END {print x} ' 
    142.133.152.191   127.0.0.1 

Ou en utilisant grep:

ifconfig | grep -oP 'inet addr:\K[^ ]+' | xargs 
142.133.152.191 127.0.0.1