#1 Le 28/08/2018, à 16:20
- visual1956
[RESOLU]état d'un port d'un PC placé derrière une box
bonjour
je viens de réaliser un NAS et un petit programme shell basé sur rsync dans ce programme je retourne l’état de la variable $? liée à rsync
par contre je viens de m'apercevoir que le programme me retourne ok même si le micro ordinateur qui gère le NAS ( Raspberry) n'est pas connecté
j'utilise une freebox qui adresse mon serveur NAS lorsque de l'extérieur je tape mon adresse ip avec le port 22
existe il un moyen de tester que mon micro placé derrière la box est bien actif
par avance merci
Dernière modification par visual1956 (Le 29/08/2018, à 17:15)
Hors ligne
#2 Le 28/08/2018, à 17:31
- bruno
Re : [RESOLU]état d'un port d'un PC placé derrière une box
Bonjour,
Montre-nous ton code. Je rappelle que $? renvoie l'état de sortie de la dernière commande exécutée (0 si succès)
#3 Le 28/08/2018, à 20:29
- visual1956
Re : [RESOLU]état d'un port d'un PC placé derrière une box
bonsoir
voici le code que j'utilise qui est issu d'un site web
#!/bin/bash
mois=$(date +%B)
jour=$(date +%d-%m-%Y)
heure=(date +%T)
log="/home/michel/Bureau/logs_sauvegardes"
userssh="michel"
ipssh="ww.xx.xx.xx."
origine="/home/michel/Images/test/"
destination="/home/backup/michel/mes_backups"
supprime="/home/backup/michel/fichiers_supprimes"
compteur=5
retention=$(date +%B --date='1 month ago')
nom()
{
echo "-------------------------------------------------------------" > $log/sauvegarde_$jour.log
echo -e "Sauvegarde de $local du $(date +%d-%B-%Y)" >> $log/sauvegarde_$jour.log
echo "-------------------------------------------------------------" >> $log/sauvegarde_$jour.log
}
# Si le répertoire contenant les logs n'existe pas, celui-ci sera crée.
if [ ! -d $log ];then
mkdir $log
fi
# On teste la présence du dossier source et que le serveur répond bien au ping
recus=$(ping -c $compteur $ipssh | grep 'received' | awk -F',' '{ print $2 }' | awk '{print $1 }') >> $log/sauvegarde_$jour.log 2>&1
if [[ ! -d $origine ]] && [[ $recus -eq 0 ]];then
nom
echo -e "$jour-$heure :\n" >> $log/sauvegarde_$jour.log
echo -e "$origine n'existe plus ou est inaccessible.\n\nServeur inaccessible ($ipssh : $compteur paquets transmis, $recus paquets reçus).\n\nAucune
sauvegarde effectuée." >> $log/sauvegarde_$jour.log
elif [ $recus -eq 0 ]; then
echo recus >> $log/sauvegarde_$jour.log
# On teste seulement la présence du dossier source
elif [ ! -d $origine ];then
nom
echo -e "$jour-$heure : $origine n'existe plus ou est inaccessible.\n\nAucune sauvegarde effectuée." >> $log/sauvegarde_$jour.log
exit
echo "-------------------------------------------------------------" > $log/sauvegarde_$jour.log
# nom de la sauvegarde dans le journal
echo "Sauvegarde de $local du $(date +%d-%B-%Y)" >> $log/sauvegarde_$jour.log
echo "-------------------------------------------------------------" >> $log/sauvegarde_$jour.log
# heure de début du transfert dans le journal
echo "Heure de demarrage de la sauvegarde : $(date +%H:%M:%S)" >> $log/sauvegarde_$jour.log
echo "-------------------------------------------------------------" >> $log/sauvegarde_$jour.log
# On teste seulement le ping du serveur
elif [ $recus -eq 0 ];then
nom
echo -e "$jour-$heure : Serveur inaccessible ($ipssh : $compteur paquets transmis, $recus paquets reçus).\n\nAucune sauvegarde effectuée." >> $log/sauvegarde_$jour.log
exit
fi
echo "-------------------------------------------------------------" > $log/sauvegarde_$jour.log
echo "Sauvegarde de $local du $(date +%d-%B-%Y)" >> $log/sauvegarde_$jour.log
echo "-------------------------------------------------------------" >> $log/sauvegarde_$jour.log
# Heure de début du transfert dans le journal
echo "Heure de demarrage de la sauvegarde : $(date +%T)" >> $log/sauvegarde_$jour.log
echo "-------------------------------------------------------------" >> $log/sauvegarde_$jour.log
# transfert des fichiers
rsync -arv --stats --delete --backup --backup-dir=$supprime $origine $userssh@$ipssh:$destination >> $log/sauvegarde_$jour.log
echo "opération effectuée" >> $log/sauvegarde_$jour.log
status=$?
echo "" >> $log/sauvegarde_$jour.log
#code d'erreurs rsync
echo $?
case $status in
0) echo Synchronisation réussite >> $log/sauvegarde_$jour.log;;
3) echo "Erreurs lors de la sélection des fichiers et des répertoires d\' entrée/sortie" >> $log/sauvegarde_$jour.log;;
4) echo Action non supportée : une tentative de manipulation de fichiers 64-bits sur une plate-forme qui ne les supporte pas ou une;;
5) echo Erreur lors du démarrage du protocole client-serveur >> $log/sauvegarde_$jour.log;;
6) echo Démon incapable d'écrire dans le fichier de log >> $log/sauvegarde_$jour.log;;
10) echo Erreur dans la socket E/S >> $log/sauvegarde_$jour.log;;
11) echo Erreur d'E/S fichier >> $log/sauvegarde_$jour.log;;
12) echo Erreur dans le flux de donnée du protocole rsync >> $log/sauvegarde_$jour.log;;
13) echo Erreur avec les diagnostics du programme >> $log/sauvegarde_$jour.log;;
14) echo Erreur dans le code IPC>> $log/sauvegarde_$jour.log;;
20) echo SIGUSR1 ou SIGINT reçu >> $log/sauvegarde_$jour.log;;
21) echo "Une erreur retournée par waitpid()" >> $log/sauvegarde_$jour.log;;
22) echo Erreur lors de l'allocation des tampons de mémoire principaux >> $log/sauvegarde_$jour.log;;
23) echo Transfert partiel du à une erreur >> $log/sauvegarde_$jour.log;;#
24) echo Transfert partiel du à la disparition d'un fichier source >> $log#/sauvegarde_$jour.log;;
25) echo La limite --max-delete a été atteinte >> $log/sauvegarde_$jour.log;;
30) echo Dépassement du délai d\'attente maximale lors de l\'envoi ou de réception de données >> $log/sauvegarde_$jour.log;;
35) echo Temps d’attente dépassé en attendant une connection >> $log/sauvegarde_$jour.log;;
255) echo Erreur inexpliquée >> $log/sauvegarde_$jour.log;;
esac
echo "-----------------------------------------------------------------------" >>$log/sauvegarde_$jour.log
# Heure de fin dans le journal
echo "Heure de fin de la sauvegarde : $(date +%T)" >> $log/sauvegarde_$jour.log
echo "-------------------------------------------------------------" >> $log/sauvegarde_$jour.log
# On supprime les sauvegardes suivant la rétention.
ssh $userssh@$ipssh rm -rf "sauvegardes_$retention"
exit
normalement l'absence de serveur derrière la freebox devrait générer un message d'erreur d'absence de serveur ce qui nest pas le cas
-------------------------------------------------------------
Sauvegarde de du 27-août-2018
-------------------------------------------------------------
Heure de demarrage de la sauvegarde : 19:30:05
-------------------------------------------------------------
opération effectuée
Synchronisation réussite
-----------------------------------------------------------------------
Heure de fin de la sauvegarde : 19:30:09
-------------------------------------------------------------
dans l'attente de votre aide
Hors ligne
#4 Le 29/08/2018, à 07:58
- bruno
Re : [RESOLU]état d'un port d'un PC placé derrière une box
Si :
ipssh="ww.xx.xx.xx."
correspond à ton IP publique ton test de ping ne sert à rien puisque la requête se fait sur la freebox et non le serveur NAS. En outre tes conditions sont trop compliqués.
Je rappelle que $? renvoie l'état de sortie de la dernière commande exécutée (0 si succès)
rsync -arv --stats --delete --backup --backup-dir=$supprime $origine $userssh@$ipssh:$destination >> $log/sauvegarde_$jour.log
echo "opération effectuée" >> $log/sauvegarde_$jour.log
status=$?
Est-ce que tu vois le problème?