iwconfig + sed

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
nihilist
Beiträge: 430
Registriert: 27.04.2006 21:17:06
Kontaktdaten:

iwconfig + sed

Beitrag von nihilist » 08.02.2008 19:58:56

Servus,
Ich bräuchte mal eine kleine Hilfestellung bei "sed"

Ich möchte den Namen des Wlan Netzes mit dem ich verbunden bin anzeigen lassen.

Das funktioniert auch soweit, nur werden die ersten zwei Zeilen (lo,eth1) noch angezeigt.
Desweiteren muss der Aufruf als "root" erfolgen...

Code: Alles auswählen

# iwconfig | grep eth2 | sed -e  's/eth2//' -e 's/IEEE*//' -e 's/802.11g//' -e 's/ESSID://'

lo        no wireless extensions.

eth1      no wireless extensions.

         "Olmo"
Ist es auch irgendwie möglich den Aufruf zu vereinfachen, d.h. z.B. Lösche alle Zeichen bis zum ersten " , das hätte ja den gleichen Effekt und wäre universeller einsetzbar

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 08.02.2008 22:54:24

Hallo nihilist,

geht /sbin/iwconfig als user?

mir würde noch folgendes einfallen:

Code: Alles auswählen

sed '/"/!d'   

Code: Alles auswählen

sed 's/[^"]*//'
Hilft Dir das als Anregung?

Gruß fuzzy

edit: wie sieht der komplette iwconfig Aufruf aus (Ausgabe gerne auch anonymisiert)?

nihilist
Beiträge: 430
Registriert: 27.04.2006 21:17:06
Kontaktdaten:

Beitrag von nihilist » 09.02.2008 07:11:07

fuzzy hat geschrieben:Hallo nihilist,

geht /sbin/iwconfig als user?
Ja das geht...
edit: wie sieht der komplette iwconfig Aufruf aus (Ausgabe gerne auch anonymisiert)?

Code: Alles auswählen

/michael@debian:~$ /sbin/iwconfig 
lo        no wireless extensions.

eth1      no wireless extensions.

eth2      IEEE 802.11g  ESSID:"Daheim"  
          Mode:Managed  Frequency:2.462 GHz  Access Point: 00:09:5B:EE:7F:B8   
          Bit Rate:54 Mb/s   Tx-Power=20 dBm   Sensitivity=8/0  
          Retry limit:7   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality=96/100  Signal level=-30 dBm  Noise level=-85 dBm
          Rx invalid nwid:0  Rx invalid crypt:2  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:136   Missed beacon:1

michael@debian:~$ 


fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 09.02.2008 07:19:01

oh, dann sollten Dir meine beiden Anregungen helfen. :wink:
...sofern Du auf "Daheim" hinaus willst.

Gruß fuzzy

PS: ich habe kein wlan und kann es daher nur am Beispiel der Textausgabe testen.

nihilist
Beiträge: 430
Registriert: 27.04.2006 21:17:06
Kontaktdaten:

Beitrag von nihilist » 09.02.2008 08:36:23

Hallo,
Also mit

Code: Alles auswählen

~$ /sbin/iwconfig | sed -e '/"/!d' -e 's/[^"]*//'
lo        no wireless extensions.

eth1      no wireless extensions.

"daheim"
Stehen lo und eth1 immer noch drin, aber habe gerade gesehen das man ja auch einfach iwconfig mit der zusätzlichen Angabe des
Wlan Interfaces starten kann

Code: Alles auswählen

michael@debian:~$ /sbin/iwconfig eth2 | sed -e '/"/!d' -e 's/[^"]*//' 
"dukath-ubx" 
Und dann funktioniert das so wie gewollt...
In diesem Sinne, danke dir für die Unterstützung.:-)

Ich werde dann mal schauen das ich die Angabe der Verbindungsstärke auch noch übernehmen kann.

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 09.02.2008 09:11:18

...mich wundert, dass bei Deiner "gefilterten" iwconfig-Ausgabe "lo" und "eth1" mit Ausgegeben werden, das blicke ich nicht :?

Code: Alles auswählen

salto@deb:~$ cat test.txt
lo        no wireless extensions.

eth1      no wireless extensions.

eth2      IEEE 802.11g  ESSID:"Daheim"
          Mode:Managed  Frequency:2.462 GHz

salto@deb:~$ sed '/"/!d;s/[^"]*//' test.txt
"Daheim"
Wie gesagt das ist etwas "Labormäßig", da ich nur den entsprechenden Text aufrufe/filtere.

Gruß fuzzy

nihilist
Beiträge: 430
Registriert: 27.04.2006 21:17:06
Kontaktdaten:

Beitrag von nihilist » 09.02.2008 09:21:39

Ja, ich hatte es auch zuerst mit einer Textdatei mit gleichem Inhalt versucht, da wird bei mir auch nur "Daheim" ausgegeben.
Beim Aufruf von "iwconfig" scheint das irgendwie nicht zu funktionieren.
Was ich komisch finde, iwconfig soll ja eigentlich Informationen zu Wlan Schnittstellen anzeigen, und lo und eth1 sind ja keine...

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 09.02.2008 11:13:02

nihilist hat geschrieben:Ja, ich hatte es auch zuerst mit einer Textdatei mit gleichem Inhalt versucht, da wird bei mir auch nur "Daheim" ausgegeben.
Beim Aufruf von "iwconfig" scheint das irgendwie nicht zu funktionieren.
Was ich komisch finde, iwconfig soll ja eigentlich Informationen zu Wlan Schnittstellen anzeigen, und lo und eth1 sind ja keine...
Das verstehe ich auch nicht.
Hatte dieses Problem auch schon mal, als ich mit awk nur einen bestimmten Teil selektieren wollte und trotzdem immer noch die anderen Interface-Namen ausgegeben wurden.
Oh, yeah!

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Beitrag von Meillo » 09.02.2008 11:56:15

Ich kann die Situation wie sie fuzzy beschreibt (Laborbedingung) bestätigen.
`iwconfig' habe ich hier nicht drauf, aber `ifconfig' macht diesbezüglich keine Probleme.

evtl. könntest du mal stderr umleiten (2>/dev/null) und schauen was dann passiert.

ansonsten könnte evtl. noch was in folgender Art helfen:

Code: Alles auswählen

/sbin/ifconfig |  sed -n '/eth0/{ s/:.*://p }'
(nicht sehr sinnvolles Beispiel)
Use ed once in a while!

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 09.02.2008 12:51:21

Ja, so funktioniert es. Aber wieso?

Mit 2>/dev/null leite ich doch alles vom err-Kanal nach /dev/null (unterdrücke quasie die Fehlerausgabe). Aber wieso wird alles "andere" als Fehler dargestellt?

Code: Alles auswählen

daniel@daniel-laptop:~$ iwconfig 2>/dev/null | sed -e '/"/!d' -e 's/^.*"\(.*\)"/\1/'
Duffman
daniel@daniel-laptop:~$ iwconfig
lo        no wireless extensions.

eth0      no wireless extensions.

eth3      no wireless extensions.

eth2      IEEE 802.11g  ESSID:"Duffman"
          Mode:Managed  Frequency:2.462 GHz  Access Point: 00:15:0C:66:AE:33
          Bit Rate:48 Mb/s   Tx-Power=20 dBm   Sensitivity=8/0
          Retry limit:7   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality=91/100  Signal level=-38 dBm  Noise level=-86 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

sit0      no wireless extensions.
Oh, yeah!

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 09.02.2008 13:02:59

Code: Alles auswählen

/sbin/iwconfig 2>&1 | sed '/"/!d;s/[^"]*//'
von mir ungetestet, und eventuell/bestimmt nicht sinnvoll, aber geht das bei Euren wlan-Geschichten?

Gruß fuzzy

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 09.02.2008 13:14:41

Ja, funktioniert!

Code: Alles auswählen

daniel@daniel-laptop:~$ /sbin/iwconfig 2>&1 | sed '/"/!d;s/[^"]*//'
"Duffman"
...jetzt leitest du noch mal expliziet den err-Kanal auf den standard-Kanal?
Oh, yeah!

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Beitrag von Meillo » 09.02.2008 14:21:23

Duff hat geschrieben:...jetzt leitest du noch mal expliziet den err-Kanal auf den standard-Kanal?
und deshalb wird er auch gefiltert.
Bislang wurde stderr einfach ausgegeben und nur stdout gefiltert. Entweder du ignorierst stderr komplett oder du filterst ihn auch.
Use ed once in a while!

Antworten