Soucis avec un script

Ramses7420

Membre actif
21 Juin 2010
451
19
Bonjour

J'ai crée un petit script qui me permets d'effectuer une sauvegarde journalière d'une application (Teslamate)

Lorsque je lance le script (que j'ai transformé en application), il n'y a aucun soucis.

J'ai donc programmé son exécution tous les jours à la même heure via le calendrier.

A l'heure dite, le script s'active bien mais j'ai cette erreur.

Une aide de votre part me serait bien utile

Merci
 

Fichiers joints

  • SCR-20240229-rzm.png
    SCR-20240229-rzm.png
    150,4 KB · Affichages: 19
  • SCR-20240301-8bp.png
    SCR-20240301-8bp.png
    174,6 KB · Affichages: 19
J'aimerai vous répondre, mais je n'y connais rien et j'aimerai vraiment apprendre
le fonctionnement de ces scripts.
Mais encore une fois, où ? J'ai fouillé sur internet mais rien de bien probant.
Où trouver les instructions de "scriptable" ? Il me faudrait des informations complètes.
Apparemment, de ce que j'ai pû comprendre, ce serait pour programmer dans des Raccourcis ! ! !
Mais je n'en sais pas plus.
Moi aussi, si quelqu'un avait ces informations complètes pour ce genre de programmation, ce serait vraiment bien.
Amicalement.
 
Bonjour,

Vérifie que le terminal à bien un accès complet au disque.

éventuellement désactiver le SIP (provisoirement) pour voir si cela permet de fonctionner.

Il serait peut-être plus facile de répondre si on avait ton script pour voir ce qu'il appelle.
 
@zeltron54

Bonjour,

Terminal a bien accès et SIP désactivé

Voilà le script :

cd desktop/tesla
docker compose exec -T database pg_dump -U teslamate teslamate > backup/teslamate.bck
cd backup
rm teslamate.bck.bz2
bzip2 -k teslamate.bck
 
Bonjour,

Je ne peux donc pas tester car je n'ai pas installé "docker"
Je suppose que cela provient de ce logiciel, mais je n'ai pas de solution !
désolé.

Edit: peut-être en lançant le programme avec un "cron" plutôt qu'avec le calendrier (à essayer)
Pour créer le cron un pas à pas :

Tu ouvres le terminal (dans application—>utilitaires), dans la fenêtre du terminal tu tapes
env EDITOR=nano sudo crontab -e
une demande de mot de passe , tu le tapes en aveugle (rien ne s’affiche à l’écran) et tu valides avec enter.

Tu es dans l’application minimaliste Nano

Là tu entres ta commande au format :
minute (entre 0 et 59)
heure (entre 0 et 23)
jour (entre 1 et 31)
mois (entre 1 et 12)
jour semaine (entre 0 et 6 —> 0 = dimanche)
Commande à exécuter (exemple pour un bip: echo -e '\a'

Chaque valeur étant séparée par un espace
Dans les valeurs une * = tous
plusieurs valeurs à séparer par une virgule
Une série —> début-fin

exemple pour 2 bips toutes les heures, de 10h à 16h, les lundi, jeudi et vendredi
0 10-16 * * 1,4,5 echo -e '\a'; echo -e '\a'

Pour enregistrer cette commande faire ctrl+o puis enter
Puis ctrl+x pour quitter nano

Dans le terminal Tu devrais avoir la confirmation: “installing new crontab"


Pour ton cas le cron devrait ressembler à: (exemple tous les jour à 10h00, remplacer " /Users/TON_NOM_UTILISATEUR/Applications/NOM_DE_TON_APPLICATION.app " par le chemin réel de ton application (pour obtenir facilement ce chemin, ouvrir le terminal et glisser ton application sur la fenêtre)

0 10 * * * open /Users/TON_NOM_UTILISATEUR/Applications/NOM_DE_TON_APPLICATION.app
 
Dernière édition:
Apparemment sandbox est une sécurité sans doute activée par le calendrier qui restreint l'accès à des ressources système (faire man sandbox dans le Terminal). Je ne sais pas comment on peut contourner ça. Il y a un autre moyen de lancer automatiquement un script ?
A part le lancer à la main ...
 
Autre piste peut-être:

 
Une solution également serait d’encapsuler le Shell script dans un AppleScript, Calendrier ne faisant pas de difficultés pour exécuter un AppleScript.
Bloc de code:
do shell script "#! /bin/sh" & linefeed & "cd ~/Desktop/tesla" & linefeed & "docker compose exec -T database pg_dump -U teslamate teslamate > backup/teslamate.bck" & "rm backup/teslamate.bck.bz2" & linefeed & "bzip2 -k backup/teslamate.bck"
 
Dernière édition:
Ce qui est étrange, c'est que si je lance la petite app que j'ai générée, seule, tout se passe bien
 
Bonjour,
Ce qui est étrange, c'est que si je lance la petite app que j'ai générée, seule, tout se passe bien
OK! c'est pour cela que l'on te propose de la lancer différemment , @sinbad21 avec un applescript toujours depuis le calendrier, et moi avec un Cron directement par le système sans passer par le calendrier !

Que donne ces essais ?
 
  • J’aime
Réactions: sinbad21
Je réitère mes souhaits: J'aimerai bien apprendre cette façon de programmer avec script,
mais je n'ai aucune notion et ne sais où m'informer. Disons que je suis comme devant une montagne.
Amicalement.
 
Je réitère mes souhaits: J'aimerai bien apprendre cette façon de programmer avec script,
mais je n'ai aucune notion et ne sais où m'informer. Disons que je suis comme devant une montagne.
Amicalement.
Une petite recherche en ligne donne pas mal de pistes:



(après, il faut naviguer dans les liens ...)
 
Bonjour,

OK! c'est pour cela que l'on te propose de la lancer différemment , @sinbad21 avec un applescript toujours depuis le calendrier, et moi avec un Cron directement par le système sans passer par le calendrier !

Que donne ces essais ?
Voilà ce que j'ai saisi pour que la sauvegarde se fasse à 14h18

1814 * * * open/Users/ramses/Desktop/Sauvegarde\ Grafana

Et rien ne s'est passé
 
Une solution également serait d’encapsuler le Shell script dans un AppleScript, Calendrier ne faisant pas de difficultés pour exécuter un AppleScript.
Bloc de code:
do shell script "#! /bin/sh" & linefeed & "cd ~/Desktop/tesla" & linefeed & "docker compose exec -T database pg_dump -U teslamate teslamate > backup/teslamate.bck" & "rm backup/teslamate.bck.bz2" & linefeed & "bzip2 -k backup/teslamate.bck"
Avec ce script, je suis obligé d'effacé manuellement le fichier teslamata.bck.bz2 (or sous terminal, ça la fait tout seul) ?
Ensuite cela me génère un fichier teslamate.bckrm qui n'a pas la bonne taille par rapport au fichier généré sous terminal.
 
Voilà ce que j'ai saisi pour que la sauvegarde se fasse à 14h18

1814 * * * open/Users/ramses/Desktop/Sauvegarde\ Grafana

Et rien ne s'est passé
Il manque un espace entre les minutes et les secondes !
et la commande doit être:
Open
suivi d'un espace puis le chemin de ton application .
dans le tien , il manque un espace après open et tu t'arrêtes au dossier "sauvegarde Grafana" ce chemin n'est pas celui d'une application !

(pour obtenir facilement le chemin, ouvrir le terminal et glisser ton application sur la fenêtre) puis faire un copier,coller !

Comment as-tu créé ton application ? c'est un simple fichier texte .sh ou une application créé avec un logiciel style automator ou ???
 
Voilà la ligne que j'ai ressaisi après correction : 48 14 Open /Users/ramses/Desktop/Sauvegarde\ Grafana

En sachant que Sauvegarde Grafana est bien le nom de l'application que j'utilise pour faire ma sauvegarde

Et rien ne s'est lancé
 

Fichiers joints

  • SCR-20240311-kiw.png
    SCR-20240311-kiw.png
    168,6 KB · Affichages: 5
Tu devrais relire correctement mon post #6

Ta ligne saisie n'est toujours pas bonne : il manque les * pour jour, mois et jour semaine.

Une application sur mac a un nom qui se termina par l'extension .app
Comment as tu réalisé la tienne ?
 
Un petit truc simple à tester pour voir si on pourra lancer ton appli avec le cron:

Tu ouvres une fenêtre du terminal
Tu tapes open puis un espace et tu fais un gilssé, déposé de ton application
Tu valides avec entrée
Est-ce que cela fonctionne ?
 
Pour l'application de mémoire avec automator, si je me rappelle bien.

Ligne corrigée : 04 15 * * * Open /Users/ramses/Desktop/Sauvegarde\ Grafana

Et rien ne se passe