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
done
Hors 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
done
Hors 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 $log
je 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 con
je 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:54
mais tu peux aussi aller plus vite en mettant juste
date
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
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"
done
Ce 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) : FINI
Donc 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 $log
Hors 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
done
Derniè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 1
Hors ligne
Au lieu d'utiliser DynDNS, pourquoi pas utiliser ça ?
curl https://freedom-ip.com/scripts/check_ip.php
Sinon, 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