essid abfragen

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
elmstop
Beiträge: 12
Registriert: 25.07.2010 09:05:56

essid abfragen

Beitrag von elmstop » 19.08.2011 17:21:52

Hallo zusammen,
suche mir schon seit Tagen die Finger wund. Ich suche eine Möglichkeit die Wlan ESSID abzufragen um dann, falls zuhause, meine Netzfreigaben zu mounten.
System: Squeeze
Netbook samsung N210
Ein eventueller Ansatz wäre: if iwconfig | grep ESSID = Homeessid irgendwas then mount blabla
Gruß
Peter

elmstop
Beiträge: 12
Registriert: 25.07.2010 09:05:56

Re: essid abfragen

Beitrag von elmstop » 20.08.2011 14:52:33

Hallo,
hier jetzt die qick and dirty Version:
Ein Script als Root am besten in /etc/init.d/ erstellen und ausführbar machen. ( Chmod+x)
z.B. wlanwahl

Inhalt:

Code: Alles auswählen

#!/bin/bash
if /sbin/iwconfig wlan0 | grep -o HeimESSID >nul;
then 
mount Netzfreigaben Daheim 
fi

if /sbin/iwconfig wlan0 | grep -o BüroESSID >nul;
then 
mount Netzfreigaben Büro
fi

if /sbin/iwconfig wlan0 | grep -o UniESSID >nul;
then 
mount Netzfreigaben Uni
fi
So, jetzt noch eine Default Datei in /etc/gdm(3)/PostLogin/ erstellen
Inhalt:

Code: Alles auswählen

#!/bin/sh
#
# Note: this is a sample and will not be run as is.  Change the name of this
# file to <gdmconfdir>/PostLogin/Default for this script to be run.  This
# script will be run before any setup is run on behalf of the user and is
# useful if you for example need to do some setup to create a home directory
# for the user or something like that.  $HOME, $LOGIN and such will all be
# set appropriately and this script is run as root.

sleep 60 && /etc/init.d/wlanwahl.sh &
Ich habe mal 60 Sek. genommen da mein Netbook etwas braucht bis das Wlan verbunden ist. Ev. kann der Wert wesentlich geringer sein.

Zu guter letzt noch in /etc/gdm(3)/PostSession/ eine Default Datei anlegen und alle Freigaben umounten.
Das wars.
Gruß
Peter

Benutzeravatar
shoening
Beiträge: 918
Registriert: 28.01.2005 21:05:59
Lizenz eigener Beiträge: MIT Lizenz

Re: essid abfragen

Beitrag von shoening » 20.08.2011 15:25:55

Hi,

wenn Du einen Netzwerkmanager nutzt, sollltest Du mal schauen, ob der Scripts anbietet. Bei Debianwicd kannst Du zum Beispiel
fuer bestimmte Verbindungen scripten hinterlegen.

Wenn Du die Verbindung ueber die /etc/network/interfaces automatisiert hast, kannst Du wahrscheinlich ein passendes script in die
/etc/network/if-up.d legst.

Ciao
Stefan
Bürokratie kann man nur durch ihre Anwendung bekämpfen.

lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: essid abfragen

Beitrag von lemak » 20.08.2011 15:42:02

Hallo,

solltest du den Debiannetwork-manager einsetzen, sollte das auch mittels Dispatcher-Skript zu lösen sein.

MfG i

PS: Die ESSID wird dort so ermittelt:

Code: Alles auswählen

ESSID=$(iwconfig $1 | grep ESSID | cut -d":" -f2 | sed -e 's/"//g')

elmstop
Beiträge: 12
Registriert: 25.07.2010 09:05:56

Re: essid abfragen

Beitrag von elmstop » 21.08.2011 13:58:26

Hallo,
danke für die Infos. Wicd läßt sich wg. Abhängigkeitsproblemen nicht inst.
Dispatcher ist mir jetzt nicht ganz klar.
Soll das Script in /etc/NetworkManager/dispatcher.d oder in /etc/network/ip-up.d/ abgelegt werden.
Die Variablen sollen wohl vom NetworkManager übergeben werden.
Werde mal beide probieren.
Gruß

lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: essid abfragen

Beitrag von lemak » 21.08.2011 14:15:28

Die müssen nach /etc/NetworkManager/dispatcher.d und u.a. auch ausführbar sein.

Wobei als Parameter folgendes übergeben wird:
$1 das Interface
$2 die Aktion (up, down ...)

Siehe auch man NetworkManager.

MfG i

elmstop
Beiträge: 12
Registriert: 25.07.2010 09:05:56

Re: essid abfragen

Beitrag von elmstop » 21.08.2011 17:06:26

Hallo,
irgendwie steh ich aufm Schlauch.
Also in /etc/NetworkManager/dispatcher.d/02blabla angelegt und ausführbar gemacht.
Sieht so aus:

Code: Alles auswählen

#!/bin/bash
## INITIALISIERUNG
#Diese Werte werden vom NetworkManager an das Skript übergeben
INTERFACE=$1
ACTION=$2

## ESSID des Heimnetzwerkes
ESSID_HOME="blabla"

## ESSID des verbundenen Netzwerks bestimmen
ESSID=$(iwconfig $INTERFACE | grep ESSID | cut -d":" -f2 | sed -e 's/"//g')

## Funktionen durchführen, je nach Aktion eine andere
case "$2" in
        up)
                if [ "$ESSID" = "$ESSID_HOME" ]; then 
                        /etc/init.d/wlanwahl.sh
                fi
                ;;

        down)
                ;;

        pre-up)
                ;;

        post-down)
                ;;

        *)
                echo $"Usage: $0 {up|down|pre-up|post-down}"
                exit 1
esac
Leider funzt das nicht.
Wo liegt der Fehler ?
Gruß

lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: essid abfragen

Beitrag von lemak » 21.08.2011 17:58:44

Das liegt am Wert von $ESSID, der hat am Ende noch ein Leerzeichen. Deswegen passt die Bedingung nicht.

Code: Alles auswählen

echo -$(iwconfig wlan1 | grep ESSID | cut -d":" -f2 | sed -e 's/"//g')-
-foo -
Du könntest die Quotes in der if-Abfrage weglassen. Oder nimm besser diesen Befehl, dann sind auch Leerzeichen okay:

Code: Alles auswählen

echo -$(iwgetid --raw wlan1)-
-foo bar-
Ein Leerzeichen an $ESSID_HOME anhängen ginge natürlich auch...

Und die Aktionen pre-up und post-down gibt es nicht mehr.
Zuletzt geändert von lemak am 21.08.2011 19:13:55, insgesamt 3-mal geändert.

elmstop
Beiträge: 12
Registriert: 25.07.2010 09:05:56

Re: essid abfragen

Beitrag von elmstop » 21.08.2011 20:58:51

Hallo,
danke für Infos. Leider wird das Script in dispatcher.d gar nicht ausgeführt.
Was muß den in 01ifupdown drin stehen um dann 02blabla auszuführen ?
Gruß

lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: essid abfragen

Beitrag von lemak » 21.08.2011 22:04:11

Sollte das ein Fingerzeig sein, aber danke dafür ;-)

Wenn liegt das sicher an den Dateirechten, warum das Skript nicht ausgeführt wird.
elmstop hat geschrieben: Soll das Script in /etc/NetworkManager/dispatcher.d oder in /etc/network/ip-up.d/ abgelegt werden.
Nun wo ich mal einen Blick in die 01ifupdown geworfen habe, würde ich dir Antworten: Nach /etc/network/ip-up.d/^^ Nun gut... irgendwie hatte ich noch einen uralt Bug-Report im Kopf. Aber es wird ja ein Fake ifupdown environment vom NM gezaubert :-)

elmstop
Beiträge: 12
Registriert: 25.07.2010 09:05:56

Re: essid abfragen

Beitrag von elmstop » 22.08.2011 09:30:27

Hallo,
leicht verwirrend das ganze, aber jetzt läufts.
In /etc/network/if-up.d als Root ein Script erstellen:

Code: Alles auswählen

#!/bin/bash
## INITIALISIERUNG
#Diese Werte werden vom NetworkManager an das Skript übergeben
INTERFACE=$1

## ESSID des Heimnetzwerks
ESSID_HOME="WLANDAHEIM"

## ESSID des verbundenen Netzwerks bestimmen

ESSID=$(iwgetid --raw $1)

if [ "$ESSID" = "$ESSID_HOME" ]; then 

        /etc/init.d/mountscript.sh

fi
Vielen Dank für die Hilfe
Gruß

Antworten