#1 Le 17/11/2014, à 10: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, à 11:07)
cat /dev/urandom >/dev/null 2>&1 #github
Hors ligne