Forum d'entraide de la communauté Freedom-IP VPN
Vous n'êtes pas identifié(e).
Bonjour,
nouvelle mise à jour sur «script-vpn.sh» faites dans le premier message, elle permet de supporter toutes les valeurs possible / 1000 Mbits, / 200 Mbits, etc...
tab=(`awk -F">" 'BEGIN{} $5 ~ " / [0-9]* Mbits" {printf "%d\n", $4} END{}' /tmp/fip_occupation | head -n6`)Amicalement,
ljere
Dernière modification par ljere (2014-01-20 07:31:16)
AMD 3000+, nvidia FX5200 et 2 giga de ram sur Voyager 12.04 LTS en 32 bit
et TOSHIBA satellite_c670d-11l sur openbox/xubuntu 14.04 en 64 bit
Hors ligne
Bonjour Ljere,
Tout continue de bien fonctionner chez moi, je garde ton script + log sous le coude 
Cordialement,
Hors ligne
Bonjour !,
Comme le script de ljere ne fonctionne pas (sûrement des nouveaux nom des VPN), j'en ai fait un à ma sauce.  
 
C'est mon 1er script sous linux !
Donc je me suis aidé des originaux et j’essaierais de les améliorer. 
Il n'est pas aussi développé mais fait le minimum. 
Il fonctionne mieux que vpnautoconnect !
/!\ Important :
Remplacer "00.00.00.00" par votre "vraie ip externe"
Remplacer "NOM_DU_RESEAU_WIFI" par votre nom de réseau wifi si vous en avez ou supprimer cette ligne.
Remplacer "Connexion filaire 1" par votre nom connexion filaire si vous en avez ou supprimer cette ligne.
remplacer "NOM_DU_VPN" par le nom que vous avez donné à votre vpn. (fonctionne pour le pptp et openvpn ; ex : "NL-(Pays-Bas)" )
[== Indéfini ==]
#!/bin/bash
# FREEDOM-IP AUTO CONNECT SCRIPT
# Script par adelo inspiré par celui de ljere et Didier-T
nmcli con up id "Connexion filaire 1"
nmcli con up id "NOM_DU_RESEAU_WIFI"
while true
do
echo
echo ----- VÉRIFICATION DE VOTRE ADRESSE IP...
ipnonprotege="00.00.00.00"
CURRENT_IP=`dig +short myip.opendns.com @resolver1.opendns.com`
echo Adresse IP actuelle: $CURRENT_IP
if [ "$CURRENT_IP" = "$ipnonprotege" ]; then
	echo
	echo "/!\ ip non protégée"		
	notify-send ' Message alerte VPN ' 'Votre adresse ip est non protégée' -i dialog-error
	echo connexion aux réseaux vpn
	nmcli con up id "NOM_DU_VPN"	
fi
sleep 10
doneHors ligne
Bonjour 
Effectivement, quelques jours après mon dernier post le script de Ljere ne fonctionnait plus.
Merci à toi pour ton script, adelo, qui effectivement lance la connexion, et la reconnexion, très simplement, et rapidement au service VPN de FIP 
Bravo pour ton 1er script, j'adhère ! 
Dernière modification par coolni (2014-08-05 02:48:12)
Hors ligne
Bonjour,
j'avais oublié de mettre à jour cette discussion, c'est donc chose faite les deux scripts ont été remis à jour, 
si vous rencontrez le moindre souci n'hésitez pas à me le dire.
Cordialement,
ljere
AMD 3000+, nvidia FX5200 et 2 giga de ram sur Voyager 12.04 LTS en 32 bit
et TOSHIBA satellite_c670d-11l sur openbox/xubuntu 14.04 en 64 bit
Hors ligne
#!/bin/bash
# FREEDOM-IP AUTO CONNECT SCRIPT V2
# Script par adelo inspiré par celui de ljere et Didier-T
ipnonprotege="00.00.00.00"
nomdureseau="NOM_DU_RESEAU"
nomduvpn="NOM_DU_VPN"
while true
do
echo `date "+%d/%m/%y %H:%M:%S"` >> /tmp/ip.log 2>&1
echo `date "+%d/%m/%y %H:%M:%S"` ----- VÉRIFICATION DE VOTRE ADRESSE IP... >> /tmp/ip.log 2>&1
CURRENT_IP=`dig +short myip.opendns.com @resolver1.opendns.com` >> /tmp/ip.log 2>&1
echo `date "+%d/%m/%y %H:%M:%S"` "Adresse IP actuelle  ": $CURRENT_IP >> /tmp/ip.log 2>&1
CURRENT_IP2=$(wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//') >> /tmp/ip.log 2>&1
echo `date "+%d/%m/%y %H:%M:%S"` "Adresse IP actuelle 2": $CURRENT_IP2 >> /tmp/ip.log 2>&1
nb_essais="0"
if [ "$CURRENT_IP" = "$ipnonprotege" ] || [ "$CURRENT_IP2" = "$ipnonprotege" ]; then
	while [ "$CURRENT_IP" = "$ipnonprotege" ]
	do
	max_essais="3"
	echo `date "+%d/%m/%y %H:%M:%S"` >> /tmp/ip.log 2>&1
	echo `date "+%d/%m/%y %H:%M:%S"` "/!\ ip non protégée" >> /tmp/ip.log 2>&1		
	`notify-send "Message d'alerte VPN" 'Votre adresse ip est non protégée' -i dialog-warning` >> /tmp/ip.log 2>&1
	if [ "$nb_essais" -gt "$max_essais" ]
	then
		echo `date "+%d/%m/%y %H:%M:%S"` "$nb_essais" /3 >> /tmp/ip.log 2>&1
		echo `date "+%d/%m/%y %H:%M:%S"` déconnexion et reconnecxion aux réseaux internet >> /tmp/ip.log 2>&1
		`nmcli con up down id "$nomdureseau"` >> /tmp/ip.log 2>&1
		sleep 5
		`nmcli con up up id "$nomdureseau"` >> /tmp/ip.log 2>&1
		nb_essais="0"
		sleep 10
	fi
	echo `date "+%d/%m/%y %H:%M:%S"` connexion aux réseaux vpn ... >> /tmp/ip.log 2>&1
	`nmcli con up id "$nomduvpn"` >> /tmp/ip.log 2>&1
	sleep 5
	let "nb_essais = nb_essais + 1" >> /tmp/ip.log 2>&1
	CURRENT_IP=`dig +short myip.opendns.com @resolver1.opendns.com` >> /tmp/ip.log 2>&1
	echo `date "+%d/%m/%y %H:%M:%S"` Adresse IP actuelle: $CURRENT_IP >> /tmp/ip.log 2>&1
	done
	echo `date "+%d/%m/%y %H:%M:%S"` Connexion au vpn réussie ! >> /tmp/ip.log 2>&1
	`notify-send "Message d'information" 'Connexion au vpn réussie' -t 5000 -i dialog-information` >> /tmp/ip.log 2>&1
fi
if [ "$CURRENT_IP" = "" ]; then
	`nmcli con down id "$nomdureseau"` >> /tmp/ip.log 2>&1
	while [ "$CURRENT_IP" = "" ]
	do
	echo `date "+%d/%m/%y %H:%M:%S"` >> /tmp/ip.log 2>&1
	echo `date "+%d/%m/%y %H:%M:%S"` "/!\ Pas d'internet" >> /tmp/ip.log 2>&1
	`notify-send "Message d'alerte" 'Connexion internet non fonctionnelle' -t 5000 -i dialog-error` >> /tmp/ip.log 2>&1
	sleep 5
	echo `date "+%d/%m/%y %H:%M:%S"` Connexion à internet ... >> /tmp/ip.log 2>&1
	`notify-send "Message d'alerte" 'Connexion à internet ...' -t 5000 -i dialog-information` >> /tmp/ip.log 2>&1
	`nmcli con up id "$nomdureseau"` >> /tmp/ip.log 2>&1
	sleep 10
	CURRENT_IP=`dig +short myip.opendns.com @resolver1.opendns.com` >> /tmp/ip.log 2>&1
	echo `date "+%d/%m/%y %H:%M:%S"` Adresse IP actuelle: $CURRENT_IP >> /tmp/ip.log 2>&1
	if [ "$CURRENT_IP" = "" ]
	then
	sleep 10
	CURRENT_IP=`dig +short myip.opendns.com @resolver1.opendns.com` >> /tmp/ip.log 2>&1
	fi
	done
echo `date "+%d/%m/%y %H:%M:%S"` Connexion à internet établie >> /tmp/ip.log 2>&1
`notify-send "Message d'information" 'Connexion à internet établie' -t 5000 -i dialog-information` >> /tmp/ip.log 2>&1
fi
sleep 10
doneHors ligne
Bonjour,
merci de tes retours, pour fr la méthode la plus simple reste de ne pas l'activer dans network-manager
pour NL4 que tu veux favoriser je te propose de modifier le premier script ainsi
d'abord tu ajoutes au début l'ip de nl4 en variable
$IP_NL4=00.000.000.00
puis
    sleep 5
        nmcli con down id "Connexion filaire 1"
    sleep 5
        nmcli con up id "Connexion filaire 1"
    sleep 5
        nmcli con up id "freedom-ip(NL4)"
    sleep 5
        if [[ $(dig +short myip.opendns.com @resolver1.opendns.com) != $IP_NL4 ]]; then     ## si l'ip n'est pas celle de nl4 on lance le second script
            echo "lancement du second script"
            sh -c '~/script/script-vpn'
    ) 2>&1 | tee -a $logje pense que ça devrait fonctionner mais il faut tester, sinon pour fr si tu ne veux pas le retirer de network-manager,
il faudrait ajouter une exception dans la liste qui est créé dans le second script avec la commande
nmcli -t -f NAME conje te laisse réfléchir au piste que je t'ai donné
pour le PPTP c'est un script à part qu'il faudrait créer.
pour ton script il y a beaucoup de répétition regarde mon script 1, j'y englobe tout et j'envoie le tout vers  /tmp/ip.log 2>&1 
et n'hésite pas à utiliser des variables.
AMD 3000+, nvidia FX5200 et 2 giga de ram sur Voyager 12.04 LTS en 32 bit
et TOSHIBA satellite_c670d-11l sur openbox/xubuntu 14.04 en 64 bit
Hors ligne
Bonjour,
Oui je viens de comprendre comment tu englobe tout en tu le met dans le log mais j'aimerais avoir la date avec et de préférence au début de chaque lignes. 
Si tu savais comment faire ce serait super !
Merci pour tes indications mais comme j'utilise plus le pptp je vais garder mon script mais le tien est vraiment  super ! (si tu pouvais en faire un autre pour le pptp je suis preneur !  )
)
Hors ligne
le plus simplement du monde, je te donne un indice  
 
12:13 linaro linaro-ubuntu-desktop 3.4.75-sun7i+ ~ $
echo `date "+%d/%m/%y %H:%M:%S"`
07/08/14 12:13:28
12:14 linaro linaro-ubuntu-desktop 3.4.75-sun7i+ ~ $
la_date=`date "+%d/%m/%y %H:%M:%S"`
12:15 linaro linaro-ubuntu-desktop 3.4.75-sun7i+ ~ $
echo $la_date
07/08/14 12:14:54mais tu peux aussi aller plus vite en mettant juste 
dateAMD 3000+, nvidia FX5200 et 2 giga de ram sur Voyager 12.04 LTS en 32 bit
et TOSHIBA satellite_c670d-11l sur openbox/xubuntu 14.04 en 64 bit
Hors ligne
Oui ça je sais le faire mais on peut le mettre automatiquement au début de chaque lignes ? 
Par exemple la commande :
echo bonjour !
donne dans le log
07/08/14 12:41:00 bonjour !
Hors ligne
Bonsoir adelo,
tu peut essayer ceci
echo $(date) bonjour !par exemple, qui te retournera
samedi 9 août 2014, 22:17:39 (UTC+0200) bonjour !ou encore
echo $(date "+%d/%m/%y %H:%M:%S") bonjour !qui devrait répondre a tout tes souhaits.
Hors ligne
Oui mais est-ce qu'on peut "englober" le script comme pour le demon-vpn avec :
(
script
) 2>&1 | tee -a $log
merci 
Hors ligne
Bonsoir ...
Bah ... pourquoi pas 
Par exemple :
(
  for n in 1 2 3 4 5 6; do
    echo "Message $n"
    sleep $n
  done
  echo "FINI"
) | while read l; do
  echo "$(date) : $l"
doneCe qui affichera :
samedi 9 août 2014, 22:54:12 (UTC+0200) : Message 1
samedi 9 août 2014, 22:54:13 (UTC+0200) : Message 2
samedi 9 août 2014, 22:54:15 (UTC+0200) : Message 3
samedi 9 août 2014, 22:54:18 (UTC+0200) : Message 4
samedi 9 août 2014, 22:54:22 (UTC+0200) : Message 5
samedi 9 août 2014, 22:54:27 (UTC+0200) : Message 6
samedi 9 août 2014, 22:54:33 (UTC+0200) : FINIDonc rien ne vous empêche de "piper" ce que vous voulez et de lire chacune des lignes de résultat pour les formater à votre guise 
Cordialement, David.
Hors ligne
Et pour tout mettre dans le log, je fais :
...
done 2>&1 |tee -a $log
Mais j'ai un doute, il faut peut être remettre des parentèses non ?
Sinon vous m'avez donné une très bonne idée, merci !
Hors ligne
(
  for n in 1 2 3 4 5 6; do
    echo "Message $n"
    sleep $n
  done
  echo "FINI"
) 2>&1 | while read l; do
  echo "$(date) : $l"
done | tee -a $logHors ligne
Bonjour David,
j'aime beaucoup la dernière solution que tu proposes.
Si je me décide un jour à faire un fichier log dans l'un de mes scripts j'utiliserais cette méthode.
A+,
Didier.
Hors ligne
Bonjour,
Merci David, c'est exactement ce que j'avais besoin.
Je vais l'utiliser dans mon script. 
Hors ligne
#!/bin/bash
# FREEDOM-IP AUTO CONNECT SCRIPT V3
# Script par adelo
# Sous license GPL
################### VARIABLES A MODIFIER ###################
ipnonprotege="00.000.000.00"
nomdureseau="NOMDURESEAU"
nomduvpn="NOMDUVPN"
+log=~/log/"ip-`date +%d-%m-%y`.log"
############################################################
mkdir ~/log
############################################## DEBUT FONCTIONS ###########################################
# Vérifie l'adresse ip
function verif_ip(){
CURRENT_IP=`dig +short myip.opendns.com @resolver1.opendns.com`
}
# déconecte et reconnecte le réseau
function decoreco_reseau(){
	echo déconnexion et reconnexion aux réseaux internet
	`nmcli con up down id "$nomdureseau"`
	sleep 3
	`nmcli con up up id "$nomdureseau"`
	sleep 10
}
# tente une reconnexion au réseau
function connexion_reseau(){
while [ "$CURRENT_IP" = "" ]
	do
	echo 
	echo "/!\ Pas d'internet"
	`notify-send "Message d'alerte" 'Connexion internet non fonctionnelle' -t 3000 -i dialog-error`
	echo Connexion à internet ...
	`notify-send "Message d'alerte" 'Connexion à internet ...' -t 3000 -i dialog-information`
	`nmcli con up id "$nomdureseau"`
	sleep 10
	verif_ip
	if [ "$CURRENT_IP" = "" ]
	then
	sleep 10
	verif_ip
	fi
	echo Adresse IP actuelle: $CURRENT_IP
	done
}
# tente la reconnexion au vpn
function connexion_vpn(){
	echo 
	echo "/!\ ip non protégée"	
	`notify-send "Message d'alerte VPN" 'Votre adresse ip est non protégée' -t 3000 -i dialog-warning`
	echo connexion aux réseaux vpn ...
	`nmcli con up id "$nomduvpn"`
	sleep 10
	verif_ip
	echo Adresse IP actuelle: $CURRENT_IP
}
function boucle_vpn(){
while [ "$CURRENT_IP" = "$ipnonprotege" ]
do
connexion_vpn
if [ "$CURRENT_IP" = "$ipnonprotege" ]
	then
	connexion_vpn
	if [ "$CURRENT_IP" = "$ipnonprotege" ]
		then
		connexion_vpn
		if [ "$CURRENT_IP" = "$ipnonprotege" ]
			then
# Déconnecte et reconnecte le réseau
			decoreco_reseau
			connexion_vpn
		fi
	fi
fi
done
}
############################################## FIN FONCTIONS ##############################################
while true
do
(
echo 
echo VÉRIFICATION DE VOTRE ADRESSE IP...
verif_ip
echo "Adresse IP actuelle  ": $CURRENT_IP
# Vérifie si l'adresse ip actuelle est la vraie ou celle du vpn
if [ "$CURRENT_IP" = "$ipnonprotege" ]
	then
	boucle_vpn
	echo Connexion au vpn réussie !
	`notify-send "Message d'information" 'Connexion au vpn réussie' -t 3000 -i dialog-information`
fi
# Vérifie s'il y a du réseau
if [ "$CURRENT_IP" = "" ]
	then
	`nmcli con down id "$nomdureseau"`
	connexion_reseau
	echo Connexion à internet établie
	`notify-send "Message d'information" 'Connexion à internet établie' -t 3000 -i dialog-information`
fi
sleep 10
) 2>&1 | while read l; do
echo "`date "+%d/%m/%y %H:%M:%S"` : $l"
done | tee -a $log
doneDernière modification par anonyme1405461600 (2014-08-26 10:10:18)
Hors ligne
Bonjour,
Il est très facile de fausser le fonctionnement de ton script ... il suffit de sauter la default gateway du VPN, et de mettre une route spécifique pour 208.67.222.222 et ton script n'y verra que du feu   
 
Cheers, hmz
If privacy is outlawed, only outlaws will have privacy.
Hors ligne
Heu ...   
 
C'est quoi la gateway du VPN ?
J'ai pas très bien compris ou est la faille et d’où elle provenait.  
 
Est-ce ce que tu pourrais m'expliquer ce qu'il faut changer ?
Merci 
Hors ligne
Re ...
Gateway du VPN = Passerelle de votre connexion VPN = Serveur utilisé
Enfaite, c'est très bête en soit. Il me suffit de demander au serveur de configurer ton client VPN (qui accepte ce qu'on lui demande) pour ne rediriger que le trafic uniquement à destination d'OpenDNS (pour ton test d'IP) vers le VPN et ton test sera faussé, et ton script n'y verra que du feu.
Cheers, hmz
If privacy is outlawed, only outlaws will have privacy.
Hors ligne
Re
Donc c'est quoi la solution ?  
 
Si j'ai bien compris, mon script ne peut être faussé que si tu modifie le serveur FIP, non ?
Sinon il n'y as pas de problème ?
Je crois que je vais remettre la ligne :  
 
CURRENT_IP2=$(wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//')Dernière modification par anonyme1405461600 (2014-08-25 16:29:15)
Hors ligne
En modifiant la configuration de ton client VPN, ou si tu utilises "OpenVPN", le fichier OVPN, bah une personne malveillante pourra faire croire à ton client VPN qu'il est connecté alors que non. Je te conseille de toujours utiliser au moins 2 sources distinctes pour la vérification d'informations "cruciales" comme dans ton cas.
If privacy is outlawed, only outlaws will have privacy.
Hors ligne
wget http://checkip.dyndns.org/ -O - -o /dev/null | cut -d: -f 2 | cut -d\< -f 1Hors ligne
Au lieu d'utiliser DynDNS, pourquoi pas utiliser ça ?
curl https://freedom-ip.com/scripts/check_ip.phpSinon, tu peux très bien utiliser les trois sources, ou bien faire une tournante en utilisant deux. Tu fais 2 randoms (tirage aléatoire) sur ta liste de sources et tu vérifies avec les résultats des 2 sources tirés au sort.
If privacy is outlawed, only outlaws will have privacy.
Hors ligne