Bonjour,
je suis un utilisateur intermittent des scripts batch (sous Debian)... j'arrive occasionnellement à faire des trucs basiques, mais je pêche le plus souvent sur des choses un peu plus pointues (de mon point de vue de débutant).
En l'occurence, je dois maintenir ouvert un tunnel ssh en background (je ne suis pas non plus un expert ssh, et encore moins en tunnels...)
J'utilise pour ce faire un batch (ci-dessous) programmé via crontab. L'authentification est assurée par une paire de clefs.
J'utilise par ailleurs autossh car il me semblait que c'était le meilleur moyen d'assurer que le tunnel est maintenu sans avoir à le tester régulièrement moi même (puisque j'avais cru comprendre que ce dernier testait le tunnel via une tâche mère et le relançait au besoin).
La planification est ok (le batch est relancé toutes les 5 minutes entre 8h et 20h.).
Le batch fonctionne aussi ... mais pas toujours : régulièrement, mon tunnel semble ne plus fonctionner et autossh n'a visiblement pas fait son travail car les deux tâches liées à autossh sont toujours lancées. Evidemment, mon batch calcule que tout est ok et ne fait rien...
Je me demande donc si l'un(e) d'entre vous aurait une suggestion pour améliorer un peu ce batch afin notamment de m'assurer de l'état du tunnel et le relancer (kill + start) au besoin...
Merci déjà de m'avoir lu jusque là, et le cas échéant merci d'avance de vos suggestions.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #!/bin/bash LOGFILE="/root/Tunnel/logBatchRedemarrage.log" NOW="$(date +%d/%m/%Y' - '%H:%M)" # date et heure du log if ! ps ax | grep ssh | grep tunnelToto &> /dev/null then echo "[$NOW] ssh tunnel not running : restarting it" >> $LOGFILE autossh -f -N -L pppp:tunnelToto:nnnnn nom-prenom@193.xxx.yyy.zzz -p qqqq if ! ps ax | grep ssh | grep toto &> /dev/null then echo "[$NOW] failed starting tunnel" >> $LOGFILE else echo "[$NOW] restart successfull" >> $LOGFILE fi fi
Partager