#Scripter MacOS

Dans ma très récente période Ubuntu/Linux, j’avais rédigé un petit script en python qui vérifiait régulièrement la présence de nouveaux fichiers dans un répertoire FTP - ce script étant basé sur GTK, il était nécessaire de le changer pour notamment utiliser Growl, le système de notification disponible dans MacOS.

Ainsi le code en python donne
#!/usr/bin/python # -- coding: utf8 -- “”” Vérifie si du nouveau contenu a été rajouté sur le FTP “”” import ftplib import os,sys import Growl

try:
    session = ftplib.FTP('xxServeur','xxLogin','xxMdP') # On se connecte au serveur
    fileList = [] # La liste des fichiers sera dedans
    session.retrlines('LIST',fileList.append)
    session.quit() #On se déconnecte
    for txt in fileList:
        if txt.find(".DS_Store") > -1: #macOS a parfois de drole de spécificité
            fileList.remove(txt)
    if len(fileList) == 0:
        print "Vide"
    else: 
        gn = Growl.GrowlNotifier( "CheckMyFTP", ["Nouveau contenu"] )
        gn.register()
        image = Growl.Image.imageFromPath(os.path.join(os.path.dirname(__file__), "kfind.png"))
        gn.notify( "Nouveau contenu", "Nouveau contenu disponible", "Un nouveau contenu a été ajouté sur le FTP de papa",icon=image )
except:
    print "Impossible de se connecter"

Puis, il s’agit de faire jouer ce script régulièrement (toutes les heures par exemple). Dans le cas de MacOS 10.5+, il faut utiliser launchd à la place de crontab: dans le répertoire ``$HOME/Library/LaunchAgents, il suffit alors de créer un fichier fr.zeneffy.checkftp.plist qui contiendra:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>label</key>
        <string>fr.zeneffy.checkftp.plist</string>

        <key>ProgramArguments</key>
        <array>
                <string>/Users/julien/Code/scripts/CheckMyFTP/CheckMyFTP.py</string>
        </array>

        <key>Nice</key>
        <integer>1</integer>

        <key>StartInterval</key>
        <integer>3600</integer>

        <key>StandardErrorPath</key>
        <string>/tmp/checkftp.err</string>

        <key>StandardOutPath</key>
        <string>/tmp/checkftp.out</string>
</dict>
</plist>

puis de charger ce fichier de configuration

launchctl load fr.zeneffy.checkftp.plist

et voilà, toutes les heures CheckMyFTP.py sera lancé et il m’affichera une notification en cas de nouveaux fichiers disponibles sur le répertoire FTP.

Ressources: http://www.devdaily.com/mac-os-x/mac-osx-startup-crontab-launchd-jobs

Date de publication: 11/03/2011
Mots-clefs: #macOS #outils #python