script facétieux

Venez poser vos questions, répondre aux interrogations des autres ou simplement vous renseigner.
Jeune Pingouin
Message(s) : 22
Inscription : 23 Jan 2016 19:44

script facétieux

Message par sechanbask » 28 Mars 2017 10:21

Bonjour,
J'ai un script qui me permet de copie des données vers un nas distant :


Code : Tout sélectionner
#!/bin/bash


#donne l'accès au disque
pct mount 200



(echo Savegarde data vers nasq ; rsync -avzu --delete --stats \
/var/lib/lxc/200/rootfs/media/data/ -e 'ssh -p xxxxx' \
 admin@XX.XX.XX.XX:/share/homes/admin/ATEN/data/ATEN/ ; ) | \
mail -a "Content-Type: text/plain; charset=UTF-8" -v -s "HYPER pveg6- data vers nasq" c.barribaud@xxxxxx.fr




#démonte le disque
pct unmount 200




Si je le lance à la main, les fichiers sont correctement transférés et le mail est complet :

Code : Tout sélectionner
sh /root/script/copie_data_nasq.sh




Code : Tout sélectionner
[...]
TEMP/RGA/TEST.txt
Number of files: 228,242 (reg: 204,229, dir: 24,013)
Number of created files: 102 (reg: 101, dir: 1)
Number of regular files transferred: 119
Total file size: 534,736,391,912 bytes
Total transferred file size: 1,034,692,060 bytes
Literal data: 136,651,608 bytes
Matched data: 898,042,562 bytes
File list size: 655,133
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 128,332,572
Total bytes received: 696,167

sent 128,332,572 bytes  received 696,167 bytes  819,230.09 bytes/sec
total size is 534,736,391,912  speedup is 4,144.32



Si je le lance par crontab, il ne copie rien et m'envoie un mail indiquant aucun fichier copié


Code : Tout sélectionner
38 9 * * * sh /root/script/copie_data_nasq.sh




Code : Tout sélectionner
Savegarde data vers nasq
sending incremental file list

Number of files: 0
Number of created files: 0
Number of regular files transferred: 0
Total file size: 0 bytes
Total transferred file size: 0 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 0
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 24
Total bytes received: 11

sent 24 bytes  received 11 bytes  23.33 bytes/sec
total size is 0  speedup is 0.00



avez-vous une idée sachant que ces scripts marchait bien avant que je change de nas (dlink vers qnap), et que l'échange de clé SSH s'est bien passé ?

·
Avatar de l’utilisateur
Message(s) : 146
Inscription : 10 Août 2014 08:36

Re: script facétieux

Message par greg » 28 Mars 2017 12:02

Pour bien faire il faudrait un peu plus d'infos, notamment en ce qui concerne les variables d'environnement.
un simple "set" au début du script permettra de voir si l'environnement change entre l'execution directe et via cron


Plusieurs remarques cependant :
(pas forcément responsables des soucis, juste bonnes pratiques)

1- #!/bin/bash ou sh ? il faut choisir :-)
2- ssh -p xxx ? pourquoi avoir changé le port ? si c'est rendu obligatoire par le qnap OK, si c'est pour cacher le service ssh, c'est inutile, et donne un faux sentiment de securité.
3- correlation : ssh admin@ pour un backup ?! cree un user non privilegié ;-)
4 - si tu es obligé de rajouter -a "Content-Type.... c'est que mail est mal configuré.
5 - les pct mount et umount : tu verifies pas que ca monte correctement, le souci via cron a de fortes chances de venir de là (le mount se passe mal via cron, forcément du coup tu sauvegardes rien)
6- pct mount n'est de toute façon pas la bonne méthode de sauvegarde d'un LXC. Soit tu choppes directement le snapshot via PVE (du coup, pas de rsync, faut tout prendre), soit tu fais le rsync depuis l'intérieur du lxc (dans la VM). Monter un LXC depuis l'hyperviseur (en R/W en plus) alors qu'il tourne, c'est un peu chercher la merde :-)

Jeune Pingouin
Message(s) : 22
Inscription : 23 Jan 2016 19:44

Re: script facétieux

Message par sechanbask » 28 Mars 2017 15:30

Merci pour ces précieux conseils, je vais donc commencer par corriger les bases :

- si je fait un script qui débute par
Code : Tout sélectionner
#!/bin/sh
, je le lance avec sh ?
- le port est changé car j'ai plusieurs machine qui écoute du ssh et pas de reverse
- sur mon nas (qnap 451A) seul l'admin peut apparemment accéder à ssh... c'est con
- pour le mail, j'y connais rien, faut que je vois sans...
- ça marchait avant, mais si c'est pas une bonne idée, je vais revoir ça, il me semble que j'avais fait ça car ma VM n'avais pas accès à internet

Je préfére rsync au snapshot. C'est dommage de copier un snapshot d'1 To pour seulement 250 Mo de modification par jour, c'est pas optimisé.

Très vieux Pingouin
Message(s) : 265
Inscription : 23 Juil 2015 13:56

Re: script facétieux

Message par frem » 28 Mars 2017 17:21

sechanbask a écrit :- si je fait un script qui débute par
Code : Tout sélectionner
#!/bin/sh
, je le lance avec sh ?


Pour être cohérent, oui.

Si ton cron est
Code : Tout sélectionner
38 9 * * * /root/script/copie_data_nasq.sh
(donc sans l’indication de l’interpréteur), il utilisera l’interpréteur donné en entête.
⚠ par contre il faut que ton script soit exécutable.

Retour vers Entraide Linux