summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSébastien Dailly <sebastien@chimrod.com>2013-05-08 11:06:31 +0200
committerSébastien Dailly <sebastien@chimrod.com>2013-05-08 19:30:28 +0200
commit5bd3c5ca95731e81ceaabedc04367e832ffbf5bb (patch)
treea98c63ca4cfbbbc47c62611f7973f36ac8b1b72c
parent22e881fa89e4b3b8f6207d2c2e8713c2ff919400 (diff)
New article on fcron to cron migration
-rw-r--r--content/Informatique/backup.rst2
-rw-r--r--content/Informatique/fail2ban.rst2
-rw-r--r--content/Informatique/fcron2cron.rst123
-rw-r--r--content/Informatique/fcron2cron_en.rst62
-rw-r--r--content/Informatique/sftp.rst2
-rw-r--r--content/images/time/time.jpgbin0 -> 22554 bytes
-rw-r--r--content/images/time/time_75.jpgbin0 -> 9570 bytes
-rw-r--r--content/resources/fcron2cron.py68
-rwxr-xr-xtheme/static/css/main.css15
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
new file mode 100644
index 0000000..c632f0e
--- /dev/null
+++ b/content/images/time/time.jpg
Binary files differ
diff --git a/content/images/time/time_75.jpg b/content/images/time/time_75.jpg
new file mode 100644
index 0000000..b5820d9
--- /dev/null
+++ b/content/images/time/time_75.jpg
Binary files differ
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;