Forum Linux.général lancer des scripts via cron ? besoin d'aide...

Posté par . Licence CC by-sa.
1
1
mar.
2018

Bonjour,

je gère un petit paquet de mac et j'ai pris goût, au fil du temps, à la partie "terminal" de la chose.

J'aimerais avoir une machine, sous linux, qui me serve essentiellement à lancer des scripts de maintenance sur mes macs, à intervalle régulier.
Ce sera probablement une Debian de base, sur une machine en atom ou en ARM pour avoir qq chose de fanless, discret, de petite taille. Pour démarrer, j'ai mis une Debian dans un VM, avec un VNC, SSH, VPN, tout le tintouin. Là où ca bloque c'est que… J'ai l'habitude d'AppleScript qui me permet de lancer mes commandes à travers le terminal… mais là, sous Linux, je me sens un peu en slip !

L'idée c'est de lancer les commandes pour les mises à jour à intervalle régulier (genre le mercredi soir à 04h00 du matin), de lancer le nettoyage des dossiers publics (genre tous les jours à minuit), etc…

J'ai installé gnome scheduler… mais après, mes lacunes en linux ne me permettent pas de savoir quoi en faire ?!

Merci d'avance !!

  • # euh... crontab?

    Posté par (page perso) . Évalué à 1.

    Ou alors j'ai pas du tout compris l'objet de la demande puisque la réponse est dans le titre.

    crontab -l (pour lister)
    crontab -e (pour éditer)

  • # man ?

    Posté par . Évalué à 2.

    en console 'man crontab' te donnera le mode d'emploi de cron

    http://www.linux-france.org/article/man-fr/man5/crontab-5.html

    le plus souvent 95% du temps man nomlogiciel te donnera un mode d'emploi du logiciel

  • # Le shell est ton ami

    Posté par . Évalué à 1. Dernière modification le 02/03/18 à 15:20.

    Salut,

    Je pense que tu cherches à exécuter des scripts AppleScript à distance depuis le serveur Linux.

    Nativement, et comme son nom l'indique (AppleScript), ces scripts sont écris dans un langage proprio d'Apple, ils ne marcheront donc sur ton serveur.

    Par contre, tu peux te connecter à distance sur tes macs à travers SSH pour y exécuter les scripts qui y sont présent, ou pousser des scripts présents sur le serveur Linux (ça reste des fichiers texte) vers tes macs.

    Tu devra donc faire un script sur le serveur qui se connecte sur les différents macs, puis y lancer des commandes.

    Le langage de script utilisé sur le serveur est un shell, souvent bash, et il existe aussi sur les macs. Il est accessible sur mac via le terminal (je n'ai pas touché de macs depuis des lustres, mais c'est natif dans MacOS X), et directement à la console quand tu te connecte sur le Linux si tu n'as pas installé de système graphique.

    Par exemple:

    $ echo "Hello world" # Commende qui affiche le texte "Hello world"
    est une commande exécutée dans un shell.

    Ce shell est également scriptable, et si tu dois "faire des choses" depuis le serveur Linux vers les Macs, bah c'est lui qui sera utilisé.

    #!/usr/bin/env sh 
    echo "Hello world"
    exit 0
    

    est un script shell qui affiche "Hello world" quand on l'exécute:

    $ chmod +x hello.sh # Rend le script exécutable
    $ ./hello.sh
    Hello world
    $
    Pour connecter des machines via ssh de Linux vers Mac:

    https://apple.stackexchange.com/questions/55636/how-do-i-run-an-os-x-command-script-on-remote-xserves-from-a-desktop-os-x-script

    Bon courage !

    PS :
    + Attention aux fins de lignes: sur Mac c'est un [CR], sur linux un [LF], sous windows les deux : [CR][LF]. Je ne sais pas si c'est toujours d'actualité, mais ça m'a fait galérer ce genre de trucs (plutôt dans le mode Windows, mais méfie toi…)
    + Les caractères accentuées ne sont pas codés pareil sur les 2 OS : pour les noms de fichiers, ça peut poser problème… https://blog.hbis.fr/2010/08/30/macox-utf8_filenames_normalization/

    C'est un peu piégeux, méfie-t-en si tu édites un fichier sur le serveur Linux avant de le pousser vers les Macs

  • # soyons plus précis

    Posté par . Évalué à 1.

    J'ai lu le manuel de cron, mais çà ne m'a pas franchement aidé: il me manque trop de bases en terminal linux.

    Je vais essayer d'etre plus clair et surtout plus précis, avec un exemple.

    Quand je fais avec AppleScript, sur un mac, je demande au terminal après l'avoir appelé, de taper (keystroke) "ssh admin@192.168.XX.XXX" et return, puis de taper le mot de passe (et return), d'attendre 2 secondes (si la machine est en veille, çà met généralement ce temps là pour émerger tranquillement) puis je lui dit de taper "cd /dossier/sous-dossier/" (et return) pour aller dans le sous-dossier qui contient les répertoires ou fichiers que je veux nettoyer, puis de taper "rm -rf asl" (et return)

    Si je souhaitais que çà ne soit plus le mac admin qui fasse cela mais le Debian… que dois je faire ? Le simple principe de lancer un script, sous linux, m'est étranger, car j'ai toujours fonctionné avec AppleScript.

    Merci d'avance

  • # Qq précisions de plus

    Posté par . Évalué à 1. Dernière modification le 05/03/18 à 02:35.

    Quand je dis que le manuel de cron ne m'a pas permis d'avancer, que je précise: j'ai pu programmer un reboot à heure fixe dans cron. J'ai compris l'idée.

    C'est le lancement d'un script… et comment le rédiger qui me fait défaut, en fait.

    J'ai avancé un peu mon souci en me servant de xdotool, qui me permet de fonctionner un peu comme je le fais avec AppleScript. Ce que je ne sais pas, c'est comment rédiger le script… (je veux dire, oui, je fais un nano script et je créé l'objet.. ok… mais après ?)

    En fait, je crois que c'est plus une question de vocabulaire bash qu'il me manque.. et comment relier tout cela.

    Il me faut un script bash, qui se lance avec cron à l'heure dite… script qui lance le terminal (xdotool exec /usr/bin/lxterminal si j'ai bien saisi) et qui rentre les infos dans le terminal (xdotool type .. ou bien xdotool key "").

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.