Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 17/11/2014, à 11:51

HP

[Script/sh] Connexion wifi facile, no-gui (wicd)

J'ai un PC servant de media center, qui doit utiliser le WiFi (malheureusement), aucune interface graphique n'est installée, si ce n'est xbmc. C'est pourquoi j'ai écrit, de façon plus ou moins élégante (le shell n'est pas forcément mon langage de prédilection) quelques scripts. À l'instar de ce script pour se connecter, aussi facilement que possible, à un réseau WIFI sans interface grapique :

#!/usr/bin/env sh
#
# /usr/local/bin/wicd-wifi-connect

export PYTHONIOENCODING=UTF-8
main() {
    SSID=$1
    tries=10
    test -z "$SSID" && {
        echo 'Missing argument SSID' 1>&2
        exit 22
    }

    for i in $(seq 1 ${tries}); do
        printf '# Attempt %s/%s...\n' "$i" "$tries"
        connect "$SSID" && exit 0 || {
            tts=$(expr 1 \* $i)
            printf '+ Waiting %ss...' "$tts"
            sleep "$tts"
            printf "\n"
        }
    done
    exit 1
}

connect() {
    SSID=$1
    num=$(wicd-cli --wireless -l | egrep "[0-9]+\s+$SSID$" | awk '{print $1}' | head -1)
    test -n "$num" || {
        printf 'Network "%s" not found.\n' "$SSID" 1>&2
        return 1
    }
    wicd-cli --wireless -n "$num" -c
}

main $@

L'utilisation est assez simple :

wicd-wifi-connect SSID

Si le réseau n'est pas disponible, le script réessaiera 10 fois, pour arriver à un temps total d'exécution proche de 60s ; puisque le temps d'attente entre chaque tentative est de tentative*1s. Les dépendances sont très réduites, puisque à part wicd-cli le reste n'est que du standard (awk, egrep, ...).

Évidemment, pour que cette connexion automatique puisse fonctionner, le réseau doit avoir été configuré, par exemple : en utilisant wicd-curses. Le script peut parfaitement être exécuté par /etc/rc.local, pour une connexion automatique en fin de séquence de boot.

Dernière modification par HP (Le 17/11/2014, à 12:07)


cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne