This is the old XigmaNAS forum in read only mode,
it will taken offline by the end of march 2021!



I like to aks Users and Admins to rewrite/take over important post from here into the new fresh main forum!
Its not possible for us to export from here and import it to the main forum!

[RESOLU] Script : marche sous console, ne marche pas sous cron

French community

Moderators: velivole18, ernie, mtiburs

Forum rules
Set-Up GuideFAQsForum Rules
Post Reply
User avatar
ernie
Forum Moderator
Forum Moderator
Posts: 1458
Joined: 26 Aug 2012 19:09
Location: France - Val d'Oise
Status: Offline

[RESOLU] Script : marche sous console, ne marche pas sous cron

Post by ernie »

Bonjour,

J'utilise en script pour sauvegarder mon nas vers un backup et m'envoyer le rapport:

Code: Select all

#!/bin/sh
monlog=rsync_versnas2_`date +%Y-%m-%d_%Hh%Mmn`.log
echo "Sauvegarde de document" >> ./$monlog
/usr/local/bin/rsync -avrhstx --stats --progress --exclude '.zfs' /mnt/pool1/documents ip::pool2data>>./$monlog
echo "Sauvegarde de document terminee" >> ./$monlog
echo "-------------------------------------------------------------------" >> ./$monlog
echo "Sauvegarde bis de videos perso" >> ./$monlog
/usr/local/bin/rsync -avrhstx --stats --progress --exclude '.zfs' /mnt/pool1/videos/perso ip::pool3>>./$monlog
echo "Sauvegarde bis de videos perso terminee" >> ./$monlog
PRINTF=/usr/bin/printf
MSMTP=/usr/local/bin/msmtp
MSMTPCONF=/var/etc/msmtp.conf
# change these variables!
FROM="email1"
TO="email2"
SUBJECT="Rsync"
BODY="Sauvegarde effectuée : compte rendu"
# say you want to send the output of file /root/file.txt
# BODY="$(cat /mnt/pool1/sup/script/$monlog)"
BODY="$(cat /mnt/pool1/sup/script/$monlog | sed 's/%/%%/g')"
# send mail
$PRINTF "From:$FROM\nTo:$TO\nSubject:$SUBJECT\n\n$BODY" | $MSMTP --file=$MSMTPCONF -t
cp /mnt/pool1/sup/script/$monlog /mnt/pool1/sup/rsync/
rm /mnt/pool1/sup/script/$monlog
Via la console de Fedora, il s'éxécute et je reçois l'email contenant le rapport.

Via le cron en executer maintenant, il y a une erreur et je reçois un mail vide.
Pour le cron j'ai : /mnt/pool1/sup/script/synchro

Une idée ?

ATTENTION : valable pour la version 1310 de Nayla. Surement different pour les autres versions de Nayla ou de nas4free.
Last edited by ernie on 08 May 2015 14:42, edited 5 times in total.
NAS 1&2:
System: GA-6LXGH(BIOS: R01 04/30/2014) / 16 Go ECC
XigmaNAS 12.1.0.4 - Ingva (revision 7743) embedded
NAS1: Xeon E3 1241@3.5GHz, 2HDD@8To/mirror, 1SSD cache, Zlog on mirror, 1 UFS 300 Go
NAS2: G3220@3GHz, 2x3HDD@2To/strip+raidz1, 1SSD cache, Zlog on mirror
UPS: APC Back-UPS RS 900G
Case : Fractal Design XL R2

Extensions & services:
NAS1: OBI (Plex, BTSync, zrep, rclone, themes), nfs, smb, UPS,
NAS2: OBI (zrep (backup mode), themes)

User avatar
velivole18
Forum Moderator
Forum Moderator
Posts: 647
Joined: 14 Jul 2012 20:23
Location: France
Status: Offline

Re: Script : marche sous console, ne marche pas sous cron

Post by velivole18 »

Bonjour,

Il faut savoir que lorsqu'un script s'exécute via cron, il est dans un environnement "vide", c'est à dire sans aucune variable d'environnement.
Au contraire, lorsqu'on se connecte sur une console, on est déjà dans un environnement "préparé" avec des variables et des scripts d'initialisation qui ont préparé notre environnement d'exécution.
On se fait donc souvent avoir avec cette différence qui fait qu'un script fonctionne lorsqu'on le teste dans sa console et qu'il ne fonctionne plus sous cron.
Donc peut-être à réfléchir de ce côté là. Partez du principe que sous cron, aucune variable de pré-définie et aucun environnement préparé.

Cordialement.
11.2.0.4 - Omnius (revision 6026) x64-embedded
111909 RSDT1411 AMD Athlon(tm) 64 Processor 4000+ 4096MiB RAM - HDD 2 x 6 To in ZFS mirroring + 2 x (2 x 4To in ZFS mirroring) - SSD 32Go - UPS EATON Ellipse MAX 1100.

User avatar
ernie
Forum Moderator
Forum Moderator
Posts: 1458
Joined: 26 Aug 2012 19:09
Location: France - Val d'Oise
Status: Offline

Re: Script : marche sous console, ne marche pas sous cron

Post by ernie »

OK. Cependant je suis novice, donc comment identifier l'environnement sous console ?
NAS 1&2:
System: GA-6LXGH(BIOS: R01 04/30/2014) / 16 Go ECC
XigmaNAS 12.1.0.4 - Ingva (revision 7743) embedded
NAS1: Xeon E3 1241@3.5GHz, 2HDD@8To/mirror, 1SSD cache, Zlog on mirror, 1 UFS 300 Go
NAS2: G3220@3GHz, 2x3HDD@2To/strip+raidz1, 1SSD cache, Zlog on mirror
UPS: APC Back-UPS RS 900G
Case : Fractal Design XL R2

Extensions & services:
NAS1: OBI (Plex, BTSync, zrep, rclone, themes), nfs, smb, UPS,
NAS2: OBI (zrep (backup mode), themes)

dhenin
Starter
Starter
Posts: 63
Joined: 12 Apr 2013 08:47
Location: Poissy (France)
Status: Offline

Re: Script : marche sous console, ne marche pas sous cron

Post by dhenin »

"OK. Cependant je suis novice, donc comment identifier l'environnement sous console ?"

On écrit sur la ligne de commande
$ env
ou
$ set

On peut comprendre la différence entre ces deux commandes là

http://unix.stackexchange.com/questions ... ables-in-b

bon courage
---------------------------------------------------------
(V) Dhénin Jean-Jacques
( ..) 78300 Poissy
c(')(') dhenin@gmail.com
---------------------------------------------------------

User avatar
ernie
Forum Moderator
Forum Moderator
Posts: 1458
Joined: 26 Aug 2012 19:09
Location: France - Val d'Oise
Status: Offline

Re: Script : marche sous console, ne marche pas sous cron

Post by ernie »

Je dirais que c'est la partie d'envoie d'email.

J'ai rajouter | sed 's/%/%%/g' pour traiter les signes % qui apparaissent dans le rapport.

je cherche...
NAS 1&2:
System: GA-6LXGH(BIOS: R01 04/30/2014) / 16 Go ECC
XigmaNAS 12.1.0.4 - Ingva (revision 7743) embedded
NAS1: Xeon E3 1241@3.5GHz, 2HDD@8To/mirror, 1SSD cache, Zlog on mirror, 1 UFS 300 Go
NAS2: G3220@3GHz, 2x3HDD@2To/strip+raidz1, 1SSD cache, Zlog on mirror
UPS: APC Back-UPS RS 900G
Case : Fractal Design XL R2

Extensions & services:
NAS1: OBI (Plex, BTSync, zrep, rclone, themes), nfs, smb, UPS,
NAS2: OBI (zrep (backup mode), themes)

User avatar
velivole18
Forum Moderator
Forum Moderator
Posts: 647
Joined: 14 Jul 2012 20:23
Location: France
Status: Offline

Re: Script : marche sous console, ne marche pas sous cron

Post by velivole18 »

Bonsoir,

Effectivement, je n'ai pas été très clair dans ma réponse.
Pour voir la différence entre le mode cron et console, il suffit de faire s'exécuter un script ne comportant que la commande env sous cron et de faire cette même commande dans une console et on voit la différence.

Cordialement.
11.2.0.4 - Omnius (revision 6026) x64-embedded
111909 RSDT1411 AMD Athlon(tm) 64 Processor 4000+ 4096MiB RAM - HDD 2 x 6 To in ZFS mirroring + 2 x (2 x 4To in ZFS mirroring) - SSD 32Go - UPS EATON Ellipse MAX 1100.

User avatar
ernie
Forum Moderator
Forum Moderator
Posts: 1458
Joined: 26 Aug 2012 19:09
Location: France - Val d'Oise
Status: Offline

Re: Script : marche sous console, ne marche pas sous cron

Post by ernie »

Merci

J'ai le résultat de env de la console.

Par contre via le cron comment voir le résultat ?

J'ai tenté :

Code: Select all

#!/bin/sh
monlog=env_`date +%Y-%m-%d_%Hh%Mmn`.log
env >> ./$monlog
mais rien dans root ni dans le répertoire où il y a le script.

De plus dans le resultat de ENV sous la console je vois:
MAIL=/var/mail/root

je soupçonne que cela manque à cron. J'ai juste à le rajouter tel quel dans le script ?
NAS 1&2:
System: GA-6LXGH(BIOS: R01 04/30/2014) / 16 Go ECC
XigmaNAS 12.1.0.4 - Ingva (revision 7743) embedded
NAS1: Xeon E3 1241@3.5GHz, 2HDD@8To/mirror, 1SSD cache, Zlog on mirror, 1 UFS 300 Go
NAS2: G3220@3GHz, 2x3HDD@2To/strip+raidz1, 1SSD cache, Zlog on mirror
UPS: APC Back-UPS RS 900G
Case : Fractal Design XL R2

Extensions & services:
NAS1: OBI (Plex, BTSync, zrep, rclone, themes), nfs, smb, UPS,
NAS2: OBI (zrep (backup mode), themes)

User avatar
ernie
Forum Moderator
Forum Moderator
Posts: 1458
Joined: 26 Aug 2012 19:09
Location: France - Val d'Oise
Status: Offline

Re: Script : marche sous console, ne marche pas sous cron

Post by ernie »

Complément:

J'ai retrouvé le resultat du script contenant env: c'est mis dans /usr/local/www

Sous la console j'ai en executant le script (d'ailleurs le resultat n'est pas mis au meme endroit, à cause des variables d'environnements différentes)

Code: Select all

VENDOR=amd
LOGNAME=root
PAGER=more
LANG=en_US.UTF-8
OSTYPE=FreeBSD
MACHTYPE=x86_64
MAIL=/var/mail/root
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin
EDITOR=nano
UNISON=/mnt
PWD=/mnt/pool1/sup/script
GROUP=wheel
TERM=xterm-256color
SSH_TTY=/dev/pts/1
HOME=/root
USER=root
LANGUAGE=en_US.UTF-8
HOSTTYPE=FreeBSD
SHELL=/bin/tcsh
LC_ALL=en_US.UTF-8
BLOCKSIZE=K
SHLVL=1
Via cron j'obtiens :

Code: Select all

LANG=fr
HTTP_ACCEPT_LANGUAGE=fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
HTTP_CONTENT_LENGTH=265
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
DOCUMENT_ROOT=/usr/local/www
HTTP_CONNECTION=keep-alive
SCRIPT_NAME=/system_cron_edit.php
REDIRECT_STATUS=200
HTTP_USER_AGENT=Mozilla/5.0 (X11; Linux i686; rv:35.0) Gecko/20100101 Firefox/35.0
PWD=/usr/local/www
REQUEST_METHOD=POST
SERVER_SOFTWARE=lighttpd/1.4.35
SERVER_PROTOCOL=HTTP/1.1
CONTENT_LENGTH=265
HTTP_ACCEPT_ENCODING=gzip, deflate
CONTENT_TYPE=application/x-www-form-urlencoded
REQUEST_URI=/system_cron_edit.php
GATEWAY_INTERFACE=CGI/1.1
HTTP_COOKIE=PHPSESSID=43734f3a004a091e6869984b68f9bfbe; GUID=jwqcoEUwUqb2chB5wxwl
SCRIPT_FILENAME=/usr/local/www/system_cron_edit.php
HTTP_ACCEPT=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Bon voila voila

Lesquelles doivent être rejoutées au script ? et comment ?
NAS 1&2:
System: GA-6LXGH(BIOS: R01 04/30/2014) / 16 Go ECC
XigmaNAS 12.1.0.4 - Ingva (revision 7743) embedded
NAS1: Xeon E3 1241@3.5GHz, 2HDD@8To/mirror, 1SSD cache, Zlog on mirror, 1 UFS 300 Go
NAS2: G3220@3GHz, 2x3HDD@2To/strip+raidz1, 1SSD cache, Zlog on mirror
UPS: APC Back-UPS RS 900G
Case : Fractal Design XL R2

Extensions & services:
NAS1: OBI (Plex, BTSync, zrep, rclone, themes), nfs, smb, UPS,
NAS2: OBI (zrep (backup mode), themes)

User avatar
ernie
Forum Moderator
Forum Moderator
Posts: 1458
Joined: 26 Aug 2012 19:09
Location: France - Val d'Oise
Status: Offline

Re: Script : marche sous console, ne marche pas sous cron

Post by ernie »

Complément 2 :

J'ai trouvé : c'est l'emplacement.

La console considère l'emplacement dans le répertoire où s'exécute le script.

Cron met tout dans /usr/local/www

donc mon script ne trouvait pas les fichiers pour les commandes cp, rm et l'email.

Je corrige et je vous dis.
NAS 1&2:
System: GA-6LXGH(BIOS: R01 04/30/2014) / 16 Go ECC
XigmaNAS 12.1.0.4 - Ingva (revision 7743) embedded
NAS1: Xeon E3 1241@3.5GHz, 2HDD@8To/mirror, 1SSD cache, Zlog on mirror, 1 UFS 300 Go
NAS2: G3220@3GHz, 2x3HDD@2To/strip+raidz1, 1SSD cache, Zlog on mirror
UPS: APC Back-UPS RS 900G
Case : Fractal Design XL R2

Extensions & services:
NAS1: OBI (Plex, BTSync, zrep, rclone, themes), nfs, smb, UPS,
NAS2: OBI (zrep (backup mode), themes)

User avatar
ernie
Forum Moderator
Forum Moderator
Posts: 1458
Joined: 26 Aug 2012 19:09
Location: France - Val d'Oise
Status: Offline

Re: Script : marche sous console, ne marche pas sous cron

Post by ernie »

Eureka

J'ai modifié le script au niveau des commandes avec chemins par :

BODY="$(cat /usr/local/www/$monlog | sed 's/%/%%/g')"
mv /usr/local/www/$monlog /mnt/pool1/sup/rsync/

Et j'ai remplacé mes 2 commandes (cp puis rm par mv)

CQFD :)
NAS 1&2:
System: GA-6LXGH(BIOS: R01 04/30/2014) / 16 Go ECC
XigmaNAS 12.1.0.4 - Ingva (revision 7743) embedded
NAS1: Xeon E3 1241@3.5GHz, 2HDD@8To/mirror, 1SSD cache, Zlog on mirror, 1 UFS 300 Go
NAS2: G3220@3GHz, 2x3HDD@2To/strip+raidz1, 1SSD cache, Zlog on mirror
UPS: APC Back-UPS RS 900G
Case : Fractal Design XL R2

Extensions & services:
NAS1: OBI (Plex, BTSync, zrep, rclone, themes), nfs, smb, UPS,
NAS2: OBI (zrep (backup mode), themes)

User avatar
ernie
Forum Moderator
Forum Moderator
Posts: 1458
Joined: 26 Aug 2012 19:09
Location: France - Val d'Oise
Status: Offline

Re: Script : marche sous console, ne marche pas sous cron

Post by ernie »

Faux eurêka.

Le cron en exécution manuelle fonctionne bien:
Pas d erreur dans le log, le log explique que cela s est bien passé
Email avec le contenu du rapport reçu

Le cron en automatique à une heure précise ne marche pas:
Pas d erreur dans le log, même message que pour le manuel
Email vide

L environnement serait il différent ?
NAS 1&2:
System: GA-6LXGH(BIOS: R01 04/30/2014) / 16 Go ECC
XigmaNAS 12.1.0.4 - Ingva (revision 7743) embedded
NAS1: Xeon E3 1241@3.5GHz, 2HDD@8To/mirror, 1SSD cache, Zlog on mirror, 1 UFS 300 Go
NAS2: G3220@3GHz, 2x3HDD@2To/strip+raidz1, 1SSD cache, Zlog on mirror
UPS: APC Back-UPS RS 900G
Case : Fractal Design XL R2

Extensions & services:
NAS1: OBI (Plex, BTSync, zrep, rclone, themes), nfs, smb, UPS,
NAS2: OBI (zrep (backup mode), themes)

User avatar
ernie
Forum Moderator
Forum Moderator
Posts: 1458
Joined: 26 Aug 2012 19:09
Location: France - Val d'Oise
Status: Offline

Re: Script : marche sous console, ne marche pas sous cron

Post by ernie »

En lançant le script avec la commande env via le cron automatique j'ai :
LOGNAME=root
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
PWD=/var/log
HOME=/var/log
USER=root
SHELL=/bin/sh

donc environnement différent du cron en execution manuel. J avoue que c'est très pratique. :cry:

Peut on s'affranchir du chemin ? la variable HOME ne peut elle pas etre utilisée ?

Donc je vais change le répertoire de travial par /var/log , d'ailleurs j'y ai retrouvé le rapport rsync de cette nuit.

Attention ceci est valable pour Nayla 1310. Pas sur que cela soit pareil pour les autres versions de Nayla et de nas4free.
NAS 1&2:
System: GA-6LXGH(BIOS: R01 04/30/2014) / 16 Go ECC
XigmaNAS 12.1.0.4 - Ingva (revision 7743) embedded
NAS1: Xeon E3 1241@3.5GHz, 2HDD@8To/mirror, 1SSD cache, Zlog on mirror, 1 UFS 300 Go
NAS2: G3220@3GHz, 2x3HDD@2To/strip+raidz1, 1SSD cache, Zlog on mirror
UPS: APC Back-UPS RS 900G
Case : Fractal Design XL R2

Extensions & services:
NAS1: OBI (Plex, BTSync, zrep, rclone, themes), nfs, smb, UPS,
NAS2: OBI (zrep (backup mode), themes)

User avatar
ernie
Forum Moderator
Forum Moderator
Posts: 1458
Joined: 26 Aug 2012 19:09
Location: France - Val d'Oise
Status: Offline

Re: Script : marche sous console, ne marche pas sous cron

Post by ernie »

Hello

Cela marche en ecrivant en dur le chemin.

Mais vu que j'ai mis le chemin pour l'execution automatique, je ne peux plus executer manuellement.

J'ai testé ceci

BODY="$(cat $HOME/$monlog | sed 's/%/%%/g')"
mv $HOME/$monlog /mnt/pool1/sup/rsync/

Sans succès. Je cherche en parallèle de vos potentielles remarques/idées. :)
NAS 1&2:
System: GA-6LXGH(BIOS: R01 04/30/2014) / 16 Go ECC
XigmaNAS 12.1.0.4 - Ingva (revision 7743) embedded
NAS1: Xeon E3 1241@3.5GHz, 2HDD@8To/mirror, 1SSD cache, Zlog on mirror, 1 UFS 300 Go
NAS2: G3220@3GHz, 2x3HDD@2To/strip+raidz1, 1SSD cache, Zlog on mirror
UPS: APC Back-UPS RS 900G
Case : Fractal Design XL R2

Extensions & services:
NAS1: OBI (Plex, BTSync, zrep, rclone, themes), nfs, smb, UPS,
NAS2: OBI (zrep (backup mode), themes)

User avatar
ernie
Forum Moderator
Forum Moderator
Posts: 1458
Joined: 26 Aug 2012 19:09
Location: France - Val d'Oise
Status: Offline

Re: Script : marche sous console, ne marche pas sous cron

Post by ernie »

Apparemment cela serait plutot la variable PWD à utiliser:

PWD = /home/utilisateur/Desktop = Le répertoire de travail courant de l'interpréteur de commande.

Edit:

Et cela marche en mettant: $PWD au lieu de /var/log/
NAS 1&2:
System: GA-6LXGH(BIOS: R01 04/30/2014) / 16 Go ECC
XigmaNAS 12.1.0.4 - Ingva (revision 7743) embedded
NAS1: Xeon E3 1241@3.5GHz, 2HDD@8To/mirror, 1SSD cache, Zlog on mirror, 1 UFS 300 Go
NAS2: G3220@3GHz, 2x3HDD@2To/strip+raidz1, 1SSD cache, Zlog on mirror
UPS: APC Back-UPS RS 900G
Case : Fractal Design XL R2

Extensions & services:
NAS1: OBI (Plex, BTSync, zrep, rclone, themes), nfs, smb, UPS,
NAS2: OBI (zrep (backup mode), themes)

User avatar
ernie
Forum Moderator
Forum Moderator
Posts: 1458
Joined: 26 Aug 2012 19:09
Location: France - Val d'Oise
Status: Offline

Script : marche sous console, ne marche pas sous cron

Post by ernie »

Hello

Je relance ce post car j ai un soucis avec le cron et zrep.
Mon script se lance bien via une console, via exécuter maintenant dans cron.
Mais ne marche pas via le cron programme.

Ceci vient des variableś environnement. Zrep utilise une connexion ssh sécurisé et je suppose que dans le cas du cron programme il ne trouve pas les noms d hôtes ou/et les clés de sécurité.
Comment cela se paramètre t il en variable environnement ?
Merci par avance
NAS 1&2:
System: GA-6LXGH(BIOS: R01 04/30/2014) / 16 Go ECC
XigmaNAS 12.1.0.4 - Ingva (revision 7743) embedded
NAS1: Xeon E3 1241@3.5GHz, 2HDD@8To/mirror, 1SSD cache, Zlog on mirror, 1 UFS 300 Go
NAS2: G3220@3GHz, 2x3HDD@2To/strip+raidz1, 1SSD cache, Zlog on mirror
UPS: APC Back-UPS RS 900G
Case : Fractal Design XL R2

Extensions & services:
NAS1: OBI (Plex, BTSync, zrep, rclone, themes), nfs, smb, UPS,
NAS2: OBI (zrep (backup mode), themes)

User avatar
ernie
Forum Moderator
Forum Moderator
Posts: 1458
Joined: 26 Aug 2012 19:09
Location: France - Val d'Oise
Status: Offline

Script : marche sous console, ne marche pas sous cron

Post by ernie »

Hello,

Je tourne en rond et j'arrive pas à régler les variables d'environnement dans mon script.

Je pense qu'il faut ajouter cela:
SSH_CLIENT=adresseipsource unchiffre un port
SSH_CONNECTION=adresseipsource unchiffre adresseipdestination port
HOST=hostname1.local
REMOTEHOST=adresseipsource

1) Comment ajouter c'est variable au script ? Est ce une ligne telle que la suivant ?
HOST="hostname1.local"
Faut il enlever les guillemets ?

2) pour le point ssh, je ne sais pas ce qu'il faut mettre pour 'unchiffre'. A quoi cela correspond vu qu'à la fin il y a le port ?
Ce chiffre change t il à chaque connexion ?

Merci par avance

EDIT : resolu avec les variables d'environnement absente de zrep
NAS 1&2:
System: GA-6LXGH(BIOS: R01 04/30/2014) / 16 Go ECC
XigmaNAS 12.1.0.4 - Ingva (revision 7743) embedded
NAS1: Xeon E3 1241@3.5GHz, 2HDD@8To/mirror, 1SSD cache, Zlog on mirror, 1 UFS 300 Go
NAS2: G3220@3GHz, 2x3HDD@2To/strip+raidz1, 1SSD cache, Zlog on mirror
UPS: APC Back-UPS RS 900G
Case : Fractal Design XL R2

Extensions & services:
NAS1: OBI (Plex, BTSync, zrep, rclone, themes), nfs, smb, UPS,
NAS2: OBI (zrep (backup mode), themes)

Post Reply

Return to “Français”