diff options
author | Sébastien Dailly <sebastien@chimrod.com> | 2013-05-08 11:06:31 +0200 |
---|---|---|
committer | Sébastien Dailly <sebastien@chimrod.com> | 2013-05-08 19:30:28 +0200 |
commit | 5bd3c5ca95731e81ceaabedc04367e832ffbf5bb (patch) | |
tree | a98c63ca4cfbbbc47c62611f7973f36ac8b1b72c | |
parent | 22e881fa89e4b3b8f6207d2c2e8713c2ff919400 (diff) |
New article on fcron to cron migration
-rw-r--r-- | content/Informatique/backup.rst | 2 | ||||
-rw-r--r-- | content/Informatique/fail2ban.rst | 2 | ||||
-rw-r--r-- | content/Informatique/fcron2cron.rst | 123 | ||||
-rw-r--r-- | content/Informatique/fcron2cron_en.rst | 62 | ||||
-rw-r--r-- | content/Informatique/sftp.rst | 2 | ||||
-rw-r--r-- | content/images/time/time.jpg | bin | 0 -> 22554 bytes | |||
-rw-r--r-- | content/images/time/time_75.jpg | bin | 0 -> 9570 bytes | |||
-rw-r--r-- | content/resources/fcron2cron.py | 68 | ||||
-rwxr-xr-x | theme/static/css/main.css | 15 |
9 files changed, 269 insertions, 5 deletions
diff --git a/content/Informatique/backup.rst b/content/Informatique/backup.rst index ebd54e3..957a42d 100644 --- a/content/Informatique/backup.rst +++ b/content/Informatique/backup.rst @@ -5,7 +5,7 @@ Un système de backup automatique ################################ :date: 2009-10-18 -:tags: Libre +:tags: Libre, Administration :summary: |summary| .. |summary| replace:: diff --git a/content/Informatique/fail2ban.rst b/content/Informatique/fail2ban.rst index a276ca4..951f030 100644 --- a/content/Informatique/fail2ban.rst +++ b/content/Informatique/fail2ban.rst @@ -5,7 +5,7 @@ Une gestion avancée de fail2ban ------------------------------- :date: 2008/09/15 -:tags: Libre, Hébergement +:tags: Libre, Hébergement, Administration Beaucoup d'articles sont déjà parus sur l'utilisation de fail2ban pour protéger son ordinateur. Je vais parler ici d'une utilisation avancée de diff --git a/content/Informatique/fcron2cron.rst b/content/Informatique/fcron2cron.rst new file mode 100644 index 0000000..031e28d --- /dev/null +++ b/content/Informatique/fcron2cron.rst @@ -0,0 +1,123 @@ +.. -*- mode: rst -*- +.. -*- coding: utf-8 -*- + +=============== +De fcron à cron +=============== + +:date: 2013-05-09 +:tags: Libre, Python, Administration +:summary: |summary| +:logo: static/images/time/time_75.jpg +:lang: fr +:slug: fcron-to-cron + + +.. figure:: |filename|/images/time/time.jpg + :figwidth: 150 + :figclass: floatleft + :alt: Pavement + + Image : `Toni Verdú Carbó`_ (creativecommons_) + +.. _Toni Verdú Carbó: http://www.flickr.com/photos/tonivc/2283676770/in/photostream/ +.. _creativecommons: http://creativecommons.org/licenses/by-nc-nd/2.0/deed.fr + +|summary| + +.. |summary| replace:: + Debian Wheezy est sortie, et cette nouvelle version a fait un peu de ménage + dans les paquets disponibles. Parmi ceux-ci, fcron_ a disparu. Il s'agit du + gestionnaire de tâche planifiées que j'utilisais jusqu'alors. Ce petit + guide a pour vocation de vous expliquer comment migrer la configuration. + +.. _fcron: http://fcron.free.fr/ + +Fcron avait l'avantage de pouvoir gérer l'arrêt de la machine, et lancer les +tâches en attente lors du redémarrage. Quand on s'auto-héberge, cela permet de +prendre en charge les coupures inopinées, et se passer du couple cron/anacron. +Debian a fait le choix de préférer ce dernier couple plutôt que fcron, voici +donc un petit guide pour passer de l'un a l'autre. + +Migration ? +=========== + +Pour commencer, pas de panique, le paquet est supprimé des dépôts, mais reste +parfaitement fonctionnel sur votre machine. Vous n'avez donc pas besoin de vous +précipiter, tout va continuer de tourner tout seul comme auparavant. Vous +pouvez même choisir de ne pas migrer et continuer à l'utiliser. Toutefois, +si des failles de sécurités sont trouvées sur le programme, aucune mise à jour +ne sera effectuée : c'est à vous de vous tenir informé du développement de +l'application et de faire l'installation. + +La transformation +================= + +Voici un `script python`_ qui se charge de faire la migration d'un fcrontab +vers un crontab. Il ne fait que générer les fichiers de configuration, et +n'enregistre rien sur le système. Le script va lire les fcrontab enregistrées +dans le répertoire `/var/spool/fcron/` et génère en sortie les crontab +correspondantes pour chacun de ces utilisateurs. + +.. _script python: |filename|/resources/fcron2cron.py + +Usage +~~~~~ + +Le programme doit être lancé en root pour pouvoir lire les fichiers présents +dans le répertoire `/var/spool/fcron/` ainsi que les fcrontabs des différents +utilisateurs du système: + +.. code-block:: console + + $ mkdir crontabs + $ cd crontabs + $ sudo python ~/fcron2cron.py + +Il y a beaucoup moins de paramètres chez cron que fcron, il est toutefois +possible de convertir quelques instructions : + +Les options +~~~~~~~~~~~ + +Les seules options possibles dans cron sont celles qui concernent le mail : + +`mail(bool)` devient `MAILTO=""` si bool est à false `mailto(string)` devient +`MAILTO="string"` + +Les autres options sont ignorées\ [#]_. + + +Les directives +~~~~~~~~~~~~~~ + +Les directives `hourly`, `daily`\ [#]_, `weekly`, `monthly` sont transformées +en leur équivalent dans cron, ainsi que leur équivalent `mid-*ly`. Les +directives `mins`, `hours`, `days`, `mons`, `dow` ne sont pas prises en compte +et sont ignorées dans la ligne générée. + +L'édition +========= + +Le programme ne fait pas l'insertion de la crontab dans le système, ainsi, dans +le cas ou une telle crontab existe déjà, elle ne sera pas écrasée. C'est à +l'adminstrateur de mettre le paramétrage à jour. Une fois le script lancé, des +fichiers `UTILISATEUR.crontab` vont être générés. + +Si l'utilisateur n'a pas de crontab correspondante, il est possible de le +charger directement avec la commande suivante : + +.. code-block:: console + + # crontab -u ${USER} ${USER}.crontab + +Si l'utilisateur possède déjà une crontab, il va falloir éditer le fichier pour +le faire correspondre. Maintenant qu'il ne reste plus que ça à faire, il est +temps de se remonter les manches et y aller à la main ! Une fois que les +modifications sont faites, vous pouvez désinstaller fcron de votre système. + +Notes +===== + +.. [#] Y compris les options en début de commande (ligne débutant par `&`) +.. [#] `nightly` est traité de la même manière diff --git a/content/Informatique/fcron2cron_en.rst b/content/Informatique/fcron2cron_en.rst new file mode 100644 index 0000000..1fe9e54 --- /dev/null +++ b/content/Informatique/fcron2cron_en.rst @@ -0,0 +1,62 @@ +.. -*- mode: rst -*- +.. -*- coding: utf-8 -*- + +================== +From fcron to cron +================== + +:date: 2013-05-08 +:tags: Libre, Administration +:summary: |summary| +:logo: static/images/time/time_75.jpg +:lang: en +:slug: fcron-to-cron +:translation: true +:status: draft + + +.. figure:: |filename|/images/time/time.jpg + :figwidth: 150 + :figclass: floatleft + :alt: Pavement + + Image : `Toni Verdú Carbó`_ (creativecommons_) + +.. _Toni Verdú Carbó: http://www.flickr.com/photos/tonivc/2283676770/in/photostream/ +.. _creativecommons: http://creativecommons.org/licenses/by-nc-nd/2.0/deed.fr + +|summary| + +.. |summary| replace:: + Debian Wheezy is now out, and this new realease removed some packages, + including fcron_. + Il s'agit du + gestionnaire de tâche planifiées que j'utilisais jusqu'alors. Ce petit + guide a pour vocation de vous expliquer comment migrer la configuration. + +.. _fcron: http://fcron.free.fr/ + +Fcron avait l'avantage de pouvoir gérer l'arrêt de la machine, et lancer les +tâches en attente lors du redémarrage. Quand on s'auto-héberge, cela permet de +prendre en charge les coupures inopinées, et se passer du couple cron/anacron. +Debian a fait le choix de préférer ce dernier couple plutôt que fcron, voici +donc un petit guide pour passer de l'un a l'autre. + +Migration ? +=========== + +Pour commencer, pas de panique, le paquet est supprimé des dépôts, mais reste +parfaitement fonctionnel sur votre machine. Vous n'avez donc pas besoin de vous +précipiter, tout va continuer de tourner tout seul comme auparavant. Vous +pouvez même choisir de ne pas migrer et continuer à l'utiliser. Toutefois, +si des failles de sécurités sont trouvées sur le programme, aucune mise à jour +ne sera effectuée : c'est à vous de vous tenir informé du développement de +l'application et de faire l'installation. + +Voici un programme python qui se charge de faire la migration d'un fcrontab +vers un crontab. Il ne fait que générer les fichiers de configuration, et +n'enregistre rien sur le système. Le script va lire les fcrontab enregistrées +dans le répertoire `/var/spool/fcron/` et génère en sortie les crontab +correspondantes pour chacun de ces utilisateurs. + +Les instructions spécifiques sont converties, dans la mesure du possible. diff --git a/content/Informatique/sftp.rst b/content/Informatique/sftp.rst index 5d73c5d..4207725 100644 --- a/content/Informatique/sftp.rst +++ b/content/Informatique/sftp.rst @@ -5,7 +5,7 @@ Mettre en place un environnement sftp chrooté (2) ################################################# :date: 2011-06-07 -:tags: Hébergement, sftp +:tags: Hébergement, sftp, Administration Il y a quelque temps, j'avais publié un billet indiquant comment mettre en place un environnement sftp chrooté, dans lequel l'utilisateur ne peut pas diff --git a/content/images/time/time.jpg b/content/images/time/time.jpg Binary files differnew file mode 100644 index 0000000..c632f0e --- /dev/null +++ b/content/images/time/time.jpg diff --git a/content/images/time/time_75.jpg b/content/images/time/time_75.jpg Binary files differnew file mode 100644 index 0000000..b5820d9 --- /dev/null +++ b/content/images/time/time_75.jpg diff --git a/content/resources/fcron2cron.py b/content/resources/fcron2cron.py new file mode 100644 index 0000000..26bd4e1 --- /dev/null +++ b/content/resources/fcron2cron.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import sys +import subprocess +import os + +FCRON_LIST="/var/spool/fcron" + +def transform_variable(variables): + """ Transform a list of variables like + bootrun(true),nice(15),serial(true) + """ + + variable_operators = { + 'mail': lambda x: x == "false" and 'MAILTO=""' or "", + 'mailto': lambda x : 'MAILTO="%s"' %x, + + } + + transforms = "" + + for variable in variables.split(","): + attribute, value = variable.split('(') + transforms += variable_operators.get(attribute, lambda x:"")(value[:-1]) + return transforms + +def transform_directive(line): + operators = { + 'hourly': ('@hourly', 2), + 'midhourly': ('@hourly', 2), + 'daily': ('@daily', 3), + 'middaily': ('@daily', 3), + 'nightly': ('@daily', 3), + 'weekly': ('@weekly', 3), + 'midweekly': ('@weekly', 3), + 'montly': ('@montly', 4), + 'midmonthly': ('@montly', 4), + } + operator = line.split(" ")[0].split(',')[0] + substitute, to_trim = operators.get(operator, ("", 0)) + return "%s\t%s" %(substitute, line.split(None, to_trim)[to_trim]) + +def transform(line): + if line == '': + return '' + transformation = { + '!': lambda x:transform_variable(x[1:]), + '%': lambda x:transform_directive(x[1:]), + '&': lambda x: x.split(None, 1)[1], + } + return transformation.get(line[0], lambda x:x)(line) + +def main(parameters): + configs = os.listdir(FCRON_LIST) + for config in configs: + process = subprocess.Popen(["fcrontab", "-l", config], universal_newlines=True, stdout=subprocess.PIPE) + f = open('%s.crontab' % config, 'w') + for line in process.stdout: + transformation = transform(line.strip().expandtabs(1)) + if transformation is not None: + f.write("%s\n" % transformation) + f.close() + + +if __name__ == "__main__": + main(sys.argv) + diff --git a/theme/static/css/main.css b/theme/static/css/main.css index 944856d..f5e457b 100755 --- a/theme/static/css/main.css +++ b/theme/static/css/main.css @@ -57,6 +57,12 @@ ul, ol { padding: 0; padding-right: 10px; } + +.footnote-reference { + position: relative; + bottom: 0.5em; + font-size: 0.8em; +} p { margin: .75em; @@ -91,10 +97,15 @@ table.docutils { border: none; } -table.footnote td { - border: none; +table.footnote { + margin: 0px; + } + table.footnote td { + border: none; + } + td, th { margin: 0; padding: 2px 5px; |