Matériel utilisé:

 

Samsung Galaxy GT-I9100G, Android 4.1.2 rooté

 

Prérequis:

 

Smartphone rooté.

Application SuperUser

Application BusyBox

Accès au shell terminal emulator

bash shell X

 

Confort d'utilisation:

 

- Installer un serveur ssh sur le téléphone, par exemple SSH/SFTP Server for Android

- Utiliser les commandes busybox avant celles du système (ls en couleur par exemple):

Le shell utilisé par défaut est mksh, Il suffit de modifier le path dans son fichier de configuration:

mount -o rw,remount -t ext4 /system
vi /system/etc/mkshrc

et mettre à la fin:

PATH=/system/xbin:$PATH

 

Méthode:

 

Ouvrir le Terminal emulator, faire un

su 

(SuperSu doit vous donner l'accès)

 

Créer un fichier cron, et y inscrire le script à exécuter:

echo 15 * * * * bash /data/mon_script.sh > /data/cronjobs/root
chmod 755 /data/cronjobs/root

Démarrer le service:

crond -b -L /data/log/crontab.log -c /data/cronjobs

L'inscrire au démarrage:

Par défaut, le /system est monté en readonly;

mount -o rw,remount -t ext4 /system
echo crond -b -L /data/log/crontab.log -c /data/crontab > /system/etc/init.d/99startcron
chmod 755 /system/etc/init.d/99startcron

Normalement, l'ajout de

MAILTO=[destinataire@un_domaine] CONTENT-TYPE="text/html"; charset=utf-8"

au début du fichier de cron permet d'envoyer la sortie à un mail destinataire. Hélas je n'ai pas réussi à configurer le sendmail de busybox pour que cet envoi réussisse, j'ai donc choisi de l'envoyer "moi-même"

 

Exemple de script /data/mon_script.sh:

#!/bin/bash
echo 'FROM: Cron daemon' > /data/cron_mail_to_send.tmp
echo Subject: Cron sur Android >> /data/cron_mail_to_send.tmp
echo 'MIME-Version: 1.0' >> /data/cron_mail_to_send.tmp
echo 'Content-Type: text/html' >> /data/cron_mail_to_send.tmp

[...] puis à la fin du script:

cat /data/cron_mail_to_send.tmp | sendmail -f [expediteur@mon_domaine] -S [ip_serveur_smtp]:[port] [destinataire@un_domaine]