Hello à toutes et tous.
Je viens de finir un script,
qui me permet d’utiliser ma Asus Tinkerboard
sous debian en remplacement de ma Livebox.
Les grosses étapes de ce script passent par une récupération des identifiants de connexion,
création d’une chaine hashée pour récupérer une adresse ip via le protocole dhcp d’Orange.
En temps normal, c’est à dire quand les identifiants sont bons,
la connexion me prend une minute en étant large.
Mais j’ai voulu tester le cas où je me trompe dans les identifiants,
Et la ça mouline pendant plusieurs minutes avant de tomber en échec.
Et encore, des fois ça mouline tout court.
Ce que je cherche à faire :
Imposer une durée à mon script et disons par exemple si au bout de 2minutes je n’ai pas de retour ou la fin du script, ça coupe tout.
quelqu’un aurais une idée??
Merci par avance
Voici le script pour les curieux
Je vous préviens, je ne suis pas bon en script
et j’ai surement du faire des choses qui ne sont pas trop beau à voir
Toutes les critiques sont bonnes à prendre
#!/bin/bash
sudo python /diagbox/web/scripts/gpio/led_32_on.py
#Variables
readonly dhclient_files=/diagbox/web/tmp/dhclient.conf
readonly dhclient_def=/etc/dhcp/dhclient.conf
readonly error_log=/diagbox/web/tmp/error.log
readonly iptables_rescue=/etc/iptables.ipv4.nat.backup_rescue
readonly iptables_normal=/etc/iptables.ipv4.nat
readonly iptables_diagbox=/etc/iptables.ipv4.nat.backup_diagbox
readonly interfaces_rescue=/etc/network/interfaces_RESCUE
readonly interfaces_normal=/etc/network/interfaces
readonly interfaces_dhcp=/etc/network/interfaces_DHCP
readonly dhcpleases=/var/lib/dhcp/dhclient.orange.leases
readonly identifiant_origine=/diagbox/web/ini/id.txt
readonly identifiant_crypte=/diagbox/web/ini/id_crypte.txt
readonly identifiant_error=/diagbox/web/ini/error.txt
readonly clef_crypte=/diagbox/.MyKey
read mdp_crypte <$clef_crypte
#Fonctions
function fonction_id_supprimer
{
if [ -f $identifiant_origine ];then
echo " suppression fichier id origine"
sudo rm $identifiant_origine
fi
if [ -f $identifiant_crypte ];then
echo " suppression fichier id crypte"
sudo rm $identifiant_crypte
fi
}
#Effacer les fichier tempo si presents
if [ -f $error_log ];then
echo "Le log error existe déjà ";
sudo rm $error_log
fi
if [ -f $dhclient_files ];then
echo "Le fichier de configuration existe !"
if sudo rm $dhclient_files; then
echo "fichier dhclient efface"
else
echo "Echec suppression tempo dhclient deja existant" >> $error_log
sudo python /diagbox/web/scripts/gpio/led_32_off.py
exit
fi
fi
fonction_id_supprimer
#leases dhcp
if [ -f $dhcpleases ];then
echo "Le fichier de configuration existe !"
if sudo rm $dhcpleases; then
echo "fichier dhclient leases"
else
echo "Echec suppression dhcp leases" >> $error_log
sudo python /diagbox/web/scripts/gpio/led_32_off.py
exit
fi
fi
if sudo touch $dhcpleases; then
echo "creation leases dhcp ok"
else
echo "Echec creation leases dhcp" >> $error_log
sudo python /diagbox/web/scripts/gpio/led_32_off.py
exit
fi
#modprobe
if sudo modprobe 8021q; then
echo "modprobe 8021q"
else
echo "Echec modprobe 8021q" >> $error_log
sudo python /diagbox/web/scripts/gpio/led_32_off.py
exit
fi
#Modification interfaces eth0
if sudo ifconfig eth0 default;then
echo "adresse eth0 enlevée"
else
echo "Echec enlevement adresse ip eth0" >> $error_log
sudo python /diagbox/web/scripts/gpio/led_32_off.py
exit
fi
if sudo cp $interfaces_rescue $interfaces_normal; then
echo 'configuration interfaces modifié'
else
echo "Echec modification configuration ethO" >> $error_log
sudo python /diagbox/web/scripts/gpio/led_32_off.py
exit
fi
#fti conversion
spiderman=$1
thor=$2
login=$spiderman
pass=$thor
tohex() {
for h in $(echo $1 | sed "s/\(.\)/\1 /g"); do printf %02x \'$h; done
}
addsep() {
echo $(echo $1 | sed "s/\(.\)\(.\)/:\1\2/g")
}
r=$(dd if=/dev/urandom bs=1k count=1 2>&1 | md5sum | cut -c1-16)
id=${r:0:1}
h=3c12$(tohex ${r})0313$(tohex ${id})$(echo -n ${id}${pass}${r} | md5sum | cut -c1-32)
AUTHSTRING=00:00:00:00:00:00:00:00:00:00:00:1a:09:00:00:05:58:01:03:41:01:0d$(addsep $(tohex ${login})${h})
echo ${AUTHSTRING}
#Fichier dhclient
#Ecriture
if echo 'option rfc3118-authentication code 90 = string;' >> $dhclient_files; then
echo "ok"
else
echo "Echec écriture fichier dhclient partie 1" >> $error_log
#retour interfaces en dhcp
sudo cp $interfaces_dhcp $interfaces_normal
#retour iptables
sudo cp $iptables_diagbox $iptables_normal
sudo rm $dhclient_files
sudo rm $dhcpleases
sudo python /diagbox/web/scripts/gpio/led_32_off.py
exit
fi
if echo "interface \"orange\" {" >> $dhclient_files; then
echo "ok"
else
"Echec écriture fichier dhclient partie 2" >> $error_log
#retour interfaces en dhcp
sudo cp $interfaces_dhcp $interfaces_normal
#retour iptables
sudo cp $iptables_diagbox $iptables_normal
sudo rm $dhclient_files
sudo rm $dhcpleases
sudo python /diagbox/web/scripts/gpio/led_32_off.py
exit
fi
if echo "send vendor-class-identifier \"sagem\";" >> $dhclient_files; then
echo "ok"
else
"Echec écriture fichier dhclient partie 3" >> $error_log
#retour interfaces en dhcp
sudo cp $interfaces_dhcp $interfaces_normal
#retour iptables
sudo cp $iptables_diagbox $iptables_normal
sudo rm $dhclient_files
sudo rm $dhcpleases
sudo python /diagbox/web/scripts/gpio/led_32_off.py
exit
fi
if echo "send user-class \"+FSVDSL_livebox.Internet.softathome.Livebox3\";" >> $dhclient_files; then
echo "ok"
else
"Echec écriture fichier dhclient partie 4" >> $error_log
#retour interfaces en dhcp
sudo cp $interfaces_dhcp $interfaces_normal
#retour iptables
sudo cp $iptables_diagbox $iptables_normal
sudo rm $dhclient_files
sudo rm $dhcpleases
sudo python /diagbox/web/scripts/gpio/led_32_off.py
exit
fi
if echo "send rfc3118-authentication ${AUTHSTRING};" >> $dhclient_files; then
echo "ok"
else
"Echec écriture fichier dhclient partie 5" >> $error_log
#retour interfaces en dhcp
sudo cp $interfaces_dhcp $interfaces_normal
#retour iptables
sudo cp $iptables_diagbox $iptables_normal
sudo rm $dhclient_files
sudo rm $dhcpleases
sudo python /diagbox/web/scripts/gpio/led_32_off.py
exit
fi
if echo 'request subnet-mask, routers,' >> $dhclient_files; then
echo "ok"
else
"Echec écriture fichier dhclient partie 6" >> $error_log
#retour interfaces en dhcp
sudo cp $interfaces_dhcp $interfaces_normal
#retour iptables
sudo cp $iptables_diagbox $iptables_normal
sudo rm $dhclient_files
sudo rm $dhcpleases
sudo python /diagbox/web/scripts/gpio/led_32_off.py
exit
fi
if echo 'domain-name, broadcast-address, dhcp-lease-time,' >> $dhclient_files; then
echo "ok"
else
"Echec écriture fichier dhclient partie 7" >> $error_log
#retour interfaces en dhcp
sudo cp $interfaces_dhcp $interfaces_normal
#retour iptables
sudo cp $iptables_diagbox $iptables_normal
sudo rm $dhclient_files
sudo rm $dhcpleases
sudo python /diagbox/web/scripts/gpio/led_32_off.py
exit
fi
if echo 'dhcp-renewal-time, dhcp-rebinding-time,' >> $dhclient_files; then
echo "ok"
else
"Echec écriture fichier dhclient partie 8" >> $error_log
#retour interfaces en dhcp
sudo cp $interfaces_dhcp $interfaces_normal
#retour iptables
sudo cp $iptables_diagbox $iptables_normal
sudo rm $dhclient_files
sudo rm $dhcpleases
sudo python /diagbox/web/scripts/gpio/led_32_off.py
exit
fi
if echo 'rfc3118-authentication;' >> $dhclient_files; then
echo "ok"
else
"Echec écriture fichier dhclient partie 9" >> $error_log
#retour interfaces en dhcp
sudo cp $interfaces_dhcp $interfaces_normal
#retour iptables
sudo cp $iptables_diagbox $iptables_normal
sudo rm $dhclient_files
sudo rm $dhcpleases
sudo python /diagbox/web/scripts/gpio/led_32_off.py
exit
fi
if echo 'prepend domain-name-servers 8.8.8.8, 8.8.4.4;' >> $dhclient_files; then
echo "ok"
else
"Echec écriture fichier dhclient partie 10" >> $error_log
#retour interfaces en dhcp
sudo cp $interfaces_dhcp $interfaces_normal
#retour iptables
sudo cp $iptables_diagbox $iptables_normal
sudo rm $dhclient_files
sudo rm $dhcpleases
sudo python /diagbox/web/scripts/gpio/led_32_off.py
exit
fi
if echo '}' >> $dhclient_files; then
echo "ok"
else
"Echec écriture fichier dhclient partie 11" >> $error_log
#retour interfaces en dhcp
sudo cp $interfaces_dhcp $interfaces_normal
#retour iptables
sudo cp $iptables_diagbox $iptables_normal
sudo rm $dhclient_files
sudo rm $dhcpleases
sudo python /diagbox/web/scripts/gpio/led_32_off.py
exit
fi
#Deplacement
if [ -f $dhclient_def ];then
echo "Le fichier de configuration existe !";
if sudo rm $dhclient_def; then
echo "fichier dhclient efface"
else
echo "Echec suppression dhclient deja existant" >> $error_log
#retour interfaces en dhcp
sudo cp $interfaces_dhcp $interfaces_normal
#retour iptables
sudo cp $iptables_diagbox $iptables_normal
sudo rm $dhclient_files
sudo rm $dhcpleases
sudo python /diagbox/web/scripts/gpio/led_32_off.py
exit
fi
fi
if sudo cp $dhclient_files $dhclient_def; then
echo 'fichier dhclient modifie';
else
echo "Echec déplacement fichier dhclient" >> $error_log
#retour interfaces en dhcp
sudo cp $interfaces_dhcp $interfaces_normal
#retour iptables
sudo cp $iptables_diagbox $iptables_normal
sudo rm $dhclient_files
sudo rm $dhcpleases
sudo python /diagbox/web/scripts/gpio/led_32_off.py
exit
fi
#iptables
if sudo iptables -t mangle -I POSTROUTING -o orange -j CLASSIFY --set-class 0:1; then
echo "sudo iptables -t mangle -I POSTROUTING -o orange -j CLASSIFY --set-class 0:1 ok"
else
echo "echec sudo iptables -t mangle -I POSTROUTING -o orange -j CLASSIFY --set-class 0:1" >> $error_log
#retour interfaces en dhcp
sudo cp $interfaces_dhcp $interfaces_normal
#retour iptables
sudo cp $iptables_diagbox $iptables_normal
sudo rm $dhclient_files
sudo rm $dhcpleases
sudo python /diagbox/web/scripts/gpio/led_32_off.py
exit
fi
if sudo cp $iptables_rescue $iptables_normal; then
echo 'fichier iptables modifié';
else
echo "Echec déplacement fichier iptables" >> $error_log
#retour interfaces en dhcp
sudo cp $interfaces_dhcp $interfaces_normal
#retour iptables
sudo cp $iptables_diagbox $iptables_normal
sudo rm $dhclient_files
sudo rm $dhcpleases
sudo iptables-restore < /etc/iptables.ipv4.nat
sudo python /diagbox/web/scripts/gpio/led_32_off.py
exit
fi
sudo iptables-restore < /etc/iptables.ipv4.nat
echo "[rescue]" >>$identifiant_origine
echo "fti="$1 >>$identifiant_origine
echo "mdp="$2 >>$identifiant_origine
if sudo openssl enc -e -aes-256-cbc -in $identifiant_origine -out $identifiant_crypte -pass pass:$mdp_crypte;then
echo "fichier crypté"
sudo rm $identifiant_origine
else
sudo rm $identifiant_origine
echo "Echec cryptage fichier identifiant" >>$identifiant_error
fi
#Relancer la machine
if sudo ifup -a;then
sudo python /diagbox/web/scripts/gpio/led_32_off.py
sudo python /diagbox/web/scripts/gpio/led_22_off.py
sudo python /diagbox/web/scripts/gpio/led_24_off.py
sudo python /diagbox/web/scripts/gpio/led_26_on.py
echo "ifup ok"
else
echo "Echec ifup ok" >> $error_log
#retour interfaces en dhcp
sudo cp $interfaces_dhcp $interfaces_normal
#retour iptables
sudo cp $iptables_diagbox $iptables_normal
sudo rm $dhclient_files
sudo rm $dhcpleases
sudo python /diagbox/web/scripts/gpio/led_32_off.py
exit
fi