Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 04/12/2018, à 13:06

ethan7888

Script bash qui fonctionne manuellement mais pas en cron

Bonjour à tous,

Je souhaiterais mettre en place un script qui backup les stacks rancher (rancher est un orchestrateur, cela permet de déployer du docker). Pour le moment, j'essaie de backuper juste la stack database. De plus, le script fonctionne manuellement, mais pas via le cron.

J'ai donc rajouté des lignes "echo" afin d'avoir une idée d'ou pourrait provenir le problème smile

Je pense (mais je ne suis pas sur) que cela pourrait venir de ma ligne $stacks que la commande "echo" n'affiche pas ^^

Auriez-vous une idée ?

Voici le script avec les commandes "echo":

#!/bin/bash

set -ex

TODAY=$(date +"%Y-%m-%d")
echo "valeur de TODAY est: $TODAY" > /home/backup/test.log
BACKUP_DIR=/mnt/lacinetek-backup/backup/$TODAY
echo "valeur de BACKUP_DIR est: $BACKUP_DIR" >> /home/backup/test.log
STACKS=$(rancher stacks  ls | awk 'NR>1 {print $2}')
echo "valeur de STACKS est: $STACKS" >> /home/backup/test.log
MYSQL_PASSWD="AZTYPOURNVODPDZNZDnkn,of,ocofdfpdpf"
echo "valeur de MYSQL_PASSWD est: $MYSQL_PASSWD" >> /home/backup/test.log


export RANCHER_ENVIRONMENT=987564412
export RANCHER_URL=https://url.infraweb.local
export RANCHER_ACCESS_KEY=1244899366545419646464
export RANCHER_SECRET_KEY=Azkndov,nfonvfolb,fofopbgfobngob,fp,fpgfpĝbfpb,gpbfgb


for folder in database infra
do
  if [ ! -d "$BACKUP_DIR/$folder" ]; then
echo "on créer le dossier $BACKUP_DIR/$folder" >> /home/backup/test.log
    mkdir -p "$BACKUP_DIR/$folder"
  fi
done

script --return --quiet --command "rancher exec -it site/db /bin/bash -c 'export MYSQL_PWD=\"${MYSQL_PASSWD}\"; mysqldump -uroot site 2>/dev/null'" \
  | gzip -c9 > "$BACKUP_DIR/db/site.sql.gz"


#echo 'la commande sera : script --return --quiet --command "rancher exec -it lacinetek/database /bin/bash -c '"'"'export MYSQL_PWD=\"${MYSQL_PASSWD}\"; mysqldump -uroot lacinetek 2>/dev/null'"'"'" \ | gzip -c9 > "$BACKUP_DIR/db/site.sql.gz"' >> /home/backup/test.log


for stack in $STACKS
do
  rancher export -f "$BACKUP_DIR/infra/$stack.tar" $stack

done

Merci d'avance pour votre aide smile

Hors ligne

#2 Le 04/12/2018, à 15:56

cqfd93

Re : Script bash qui fonctionne manuellement mais pas en cron

Modération

Bonjour,

Pour ajouter toi-même les balises code à ton message :

  • Cliquer sur le lien « Modifier » en bas à droite du message

  • Sélectionner le texte

  • Cliquer sur le <> de l'éditeur de message
    1471986854.png


cqfd93

Hors ligne

#3 Le 04/12/2018, à 16:02

bruno

Re : Script bash qui fonctionne manuellement mais pas en cron

Bonjour,

Généralement ce genre de problème se produit parce que la tâche cron ne connaît pas la variable PATH (à préciser dans le fichier crontab ou utiliser les emplacement complets des exécutables dans les scripts).

Hors ligne

#4 Le 04/12/2018, à 16:11

grandtoubab

Re : Script bash qui fonctionne manuellement mais pas en cron

Je signale simplement qu'avec Systemd on peut aussi créer un service .timer qui lance un service périodiquement.

Exemple j'ai un service qui lance un script d'update personnalisé

/etc/systemd/system/maj.service

[Unit]
Description=Mise à jour périodique
After=exim4.service

[Service]
Type=oneshot
ExecStart=/opt/update-perso

je l'active toutes les 6h

/etc/systemd/system/maj.timer

[Unit]
Description=Exécuter le service maj periodicité 6h à la 20ieme minute

[Timer]
OnCalendar=*-*-* 0/6:20:00
Persistent=true

[Install]
WantedBy=timers.target

Vérification

systemctl list-timers

NEXT                         LEFT          LAST                         PASSED       UNIT                         ACTIVATES

Tue 2018-12-04 18:20:00 CET  2h 10min left Tue 2018-12-04 12:20:03 CET  3h 49min ago maj.timer                    maj.service


Linux tout seul sur HP Pavilion DV7 et Acer Aspire T650, Canon MG3650 en wifi
Debian 11 Bullseye Gnome/Xorg, Gnome/Wayland avec SDDM
https://bidouilledebian.wordpress.com/
ON M'A VU DANS LE VERCORS, SAUTER A L'ELASTIQUE..... J'AI DANS LES BOTTES DES MONTAGNES DE QUESTIONS....

Hors ligne

#5 Le 04/12/2018, à 16:47

Watael

Re : Script bash qui fonctionne manuellement mais pas en cron

c'est bon ça !

tu sais si ça a une "granularité"(?) plus fine que cron : exécution périodique minimale inférieure à la minute ?


Connected \o/
Welcome to sHell. · eval is evil.

En ligne

#6 Le 04/12/2018, à 17:18

grandtoubab

Re : Script bash qui fonctionne manuellement mais pas en cron

Watael a écrit :

c'est bon ça !

tu sais si ça a une "granularité"(?) plus fine que cron : exécution périodique minimale inférieure à la minute ?

laptop-mode-tools fait du polling toutes les 150s

 cat /lib/systemd/system/laptop-mode.timer
[Unit]
Description=Runs Laptop Mode Tools - Polling Service, every 150 seconds


[Timer]
# Let's run every 150 secs, to poll the battery
OnUnitActiveSec=150s
OnActiveSec=150s
Unit=lmt-poll.service

[Install]
WantedBy=multi-user.target


donc l'unité seconde (s) existe


systemctl status lmt-poll.service
● lmt-poll.service - Laptop Mode Tools - Battery Polling Service
   Loaded: loaded (/lib/systemd/system/lmt-poll.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Tue 2018-12-04 17:26:30 CET; 57s ago
     Docs: man:laptop_mode(8)
           man:laptop-mode.conf(8)
           http://github.com/rickysarraf/laptop-mode-tools
  Process: 13618 ExecStart=/lib/udev/lmt-udev auto (code=exited, status=0/SUCCESS)
 Main PID: 13618 (code=exited, status=0/SUCCESS)

déc. 04 17:26:30 debian systemd[1]: Starting Laptop Mode Tools - Battery Polling Service...
déc. 04 17:26:30 debian systemd[1]: Started Laptop Mode Tools - Battery Polling Service.
root@debian:~# cat /lib/systemd/system/lmt-poll.service
[Unit]
Description=Laptop Mode Tools - Battery Polling Service
Documentation=man:laptop_mode(8) man:laptop-mode.conf(8)
Documentation=http://github.com/rickysarraf/laptop-mode-tools

[Service]
Type=oneshot
RemainAfterExit=no
ExecStart=/lib/udev/lmt-udev auto
ExecReload=/lib/udev/lmt-udev auto
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

https://bidouilledebian.wordpress.com/2 … c-systemd/

Dernière modification par grandtoubab (Le 04/12/2018, à 17:28)


Linux tout seul sur HP Pavilion DV7 et Acer Aspire T650, Canon MG3650 en wifi
Debian 11 Bullseye Gnome/Xorg, Gnome/Wayland avec SDDM
https://bidouilledebian.wordpress.com/
ON M'A VU DANS LE VERCORS, SAUTER A L'ELASTIQUE..... J'AI DANS LES BOTTES DES MONTAGNES DE QUESTIONS....

Hors ligne