Pour ceux que ça intéresserait, voici le script complet.
Je sais qu'il pourrait être nettoyé, optimisé et qu'on pourrait même y ajouter certaines fonctions. Mais pour l'instant c'est le mieux que je puisse faire !
Le script à pour but de connecter automatiquement un serveur OpenVPN au démarrage d'une session Linux à condition de de l'avoir ajouté à gnome-session-properties, ou d'avoir créé un lanceur .desktop dans /etc/xdg/autostart/, ou encore de l'avoir placé dans /etc/NetworkManager/Dispatcher.d/ (dans ce dernier cas aucune déconnexion sera possible, et les notifications ne s'afficheront pas).
Voici le code, originalement créé pour la communauté Freedom-Ip qui offre un service OpenVPN gratuit.
Mais attention ! Ce script cherche les valeurs freedomip retournées par le NerworkManager d'Ubuntu, pensez à le modifier en conséquence ;)
Fonctions du script:
Cherche l'interface réseau active (limité à wlan0 & eth0)
Vérifie que la connexion internet soit bien opérationnelle via ping, sinon stop l'opération
Récupère l'occupation des serveurs et détermine le moins occupé via wget / http (à adapter en fonction de votre fournisseur!)
Vérifie qu'aucune connexion VPN (ici à Freedom-IP) ne soit active. Si c'est le cas, déconnecte puis reconnecte au serveur le moins occupé
Sinon connecte tout simplement le serveur le moins occupé, à condition qu'une interface réseau (wlan0 ou eth0) et qu'aucun VPN Freedom-IP ne soient actifs
Retours terminal étape par étape
Retours de notifications graphiques via libnotify : Pas d'internet, VPN déjà connecté, Serveur le moins occupé, Reconnexion, Connexion, Erreur de connexion
Script:
#!/bin/bash## FREEDOM-IP AUTO CONNECT SCRIPT## DÉPENDANCES: nmcli ping wget openvpn network-manager-openvpn network-manager-openvpn-gnome openssl libnotifyETH_DEV="eth0"WLN_DEV="wlan0"# ANALYSE INTERFACE RÉSEAU ACTIVEechoecho-----ANALYSEINTERFACERÉSEAUNET_STAT=$(nmcliconstatus|egrep"${ETH_DEV}|${WLN_DEV}")echoecho$NET_STATestlaconnexionactive# VÉRIFICATION D'ÉTABLISSEMENT COMPLET DE LA CONNECTIVITÉ INTERNETechoecho-----VÉRIFICATIONINTERNET...PING=$(ping-c3vpn2.freedom-ip.com|grepreceived|cut-d','-f2|cut-d' '-f2)echoecho$PINGsur3paquetsreçusdepuisvpn2.freedom-ip.comif[-z$PING];thenechoechoPasdeconnexionInternetfonctionnellenotify-send'Freedom-IP:''Pas de connexion Internet fonctionnelle'-idialog-errorexitfi# OCCUPATION DES SERVEURSechoecho-----OCCUPATIONDESSERVEURSwget--no-check-certificate-O /tmp/fip_occupationhttps://freedom-ip.com/statistiques.phpSERV_LOAD=$(greppersonnes /tmp/fip_occupation|cut-d'<'-f2|cut-d'"'-f2)echoecho$SERV_LOADSERV_MIN_LOAD=$(awk'{ for (i=1; i<=NF; i++) { if (i%5==1) { nb=$i } if (i%5==0) { print nb" "$i } } }'<<(greppersonnes /tmp/fip_occupation|cut-d'<'-f2|cut-d'"'-f2|sort-n)|cut-d' '-f2|cut-d''-f1)echoecho$SERV_MIN_LOADestlemoinsoccupé,sélectionpourconnexionnotify-send"Occupation des serveurs""$SERV_MIN_LOAD est le moins occupé, sélection pour connexion"# VÉRIFICATION D'UNE CONNEXION AU VPN DÉJÀ EXISTANTEechoecho-----VERIFICATIONVPN_STAT=$(nmcliconstatus|grepfreedomip|cut-d\-f1)if[-z"${VPN_STAT}"];thenechoechoPasdeconnexionVPNactivenotify-send'Freedom-IP:''Établissement de la connexion sécurisée...'-idialog-warning;elseechoechoDéjàconnectéà$VPN_STAT-Redémarrageavec$SERV_MIN_LOADnotify-send"Déjà connecté à $VPN_STAT""Redémarrage avec $SERV_MIN_LOAD"-idialog-warningechoecho-----DÉCONNEXIONDE$VPN_STATnmclicondownid"${VPN_STAT}"echoecho-----RECONNEXIONÀ$SERV_MIN_LOADechoRCON=$(nmcliconupid$SERV_MIN_LOAD'_freedomip'|grep"Connexion activée")echo$RCONif["$RCON"="Connexion activée"];thensleep3notify-send"Connexion sécurisée établie au server $SERV_MIN_LOAD, surfez tranquile :-)"-idialog-information;elseechoechoImpossibledeseconnecterà$SERV_MIN_LOADnotify-send'Freedom-IP:'"Impossible de se connecter à $SERV_MIN_LOAD"-idialog-errorfiechoecho-----FINDESCRIPTexitfi# CONNECTION AU VPN SI INTERNET CONNECTÉif[$PING-eq3];thenechoecho-----CONNEXIONÀ$SERV_MIN_LOADechoif[!-z"${NET_STAT}"-a-z"${VPN_STAT}"];thenCON=$(nmcliconupid$SERV_MIN_LOAD'_freedomip'|grep"Connexion activée")echo$CONfifiif["$CON"="Connexion activée"];thensleep3notify-send"Connexion sécurisée établie au server $SERV_MIN_LOAD, surfez tranquile :-)"-idialog-information;elseechoechoImpossibledeseconnecterà$SERV_MIN_LOADnotify-send'Freedom-IP:'"Impossible de se connecter à $SERV_MIN_LOAD"-idialog-errorfiechoecho-----FINDESCRIPTexit
Encore un grand merci à vous tous pour votre aide précieuse ;)
# SCRIPT COMPLET
Posté par DooM . En réponse au message Le plus petit. Évalué à 1.
Pour ceux que ça intéresserait, voici le script complet.
Je sais qu'il pourrait être nettoyé, optimisé et qu'on pourrait même y ajouter certaines fonctions. Mais pour l'instant c'est le mieux que je puisse faire !
Le script à pour but de connecter automatiquement un serveur OpenVPN au démarrage d'une session Linux à condition de de l'avoir ajouté à gnome-session-properties, ou d'avoir créé un lanceur .desktop dans /etc/xdg/autostart/, ou encore de l'avoir placé dans /etc/NetworkManager/Dispatcher.d/ (dans ce dernier cas aucune déconnexion sera possible, et les notifications ne s'afficheront pas).
Voici le code, originalement créé pour la communauté Freedom-Ip qui offre un service OpenVPN gratuit.
Mais attention ! Ce script cherche les valeurs freedomip retournées par le NerworkManager d'Ubuntu, pensez à le modifier en conséquence ;)
Fonctions du script:
Script:
Encore un grand merci à vous tous pour votre aide précieuse ;)