Un peu d'python parce que c'est bon !

Histoire d'apprendre un peu le python voici un script que j'ai réalisé permettant de gérer les sauvegardes de fichiers de configuration.

Ce script permet de gérer les fichiers de configuration en créant une sauvegarde du fichier originel et utilisant un système de liens symboliques

exemple :

pour appliquer le script au fichier /etc/init.d/networking

voici l'état des choses :

florent@flopc:~$ ls -l /etc/init.d/networking 
-rwxr-xr-x 1 root root 1772 2007-05-08 12:33 /etc/init.d/networking

appliquons ensuite le script au fichier de configuration

florent@flopc:~$ sudo  Bureau/SSD_TEMP/scripts/./config_backup.py /etc/init.d/networking 
/etc/init.d/networking /etc/init.d/default_networking
florent@flopc:~$

Voyons un peu ce qui c'est passé :

florent@flopc:~$ ls -l /etc/init.d/networking 
lrwxrwxrwx 1 root root 30 2008-10-29 23:12 /etc/init.d/networking -> /etc/init.d/current_networking
florent@flopc:~$ 

Le script

Et maintenant voici le script que j'ai réalisé pour automatiser la manipulation

#!/usr/bin/env python
# -*- coding:utf-8 -*-
 
# cette fonction permet de traiter les fichiers de configuration
#Usage ./config_backup /chemin/vers/le/fichier/concerné
 
# ce script renomme le fichier original en default_[Nom_du_fichier] puis crée un fichier ou les lignes commentées ont étées omises nommé current_[Nom_du_fichier]. Enfin un lien symbolique pointant vers current_[Nom_du_fichier] nommé [nom_du_fichier] est crée
 
import os, sys
#
def config_backup(source):
    destination = os.path.split(source)
    destination = destination[0] + '/current_' + destination[1]
    #recopie un fichier en éliminant les lignes de remarques
    fs = open(source, 'r')
    fd = open(destination, 'w')
    while 1:
        txt = fs.readline()
        if txt =='':
             break
        if txt[0] != '#':
             fd.write(txt)
    fs.close()
    fd.close()
    #créer un lien symbolique  et renomme le fichier
    backup = os.path.split(source)
    backup = backup[0] + '/default_' + backup[1]
    #sauvegarde du fichier original
    print source, backup	
    os.rename(source, backup)
    os.symlink(destination, source)
    return
 
 
def main():
	config_backup(sys.argv[1])
 
 
 
if __name__ == '__main__':
    main()

Ajouter un commentaire

Les commentaires peuvent être formatés en utilisant une syntaxe wiki simplifiée.

La discussion continue ailleurs

URL de rétrolien : http://blog.tools-fm.com/index.php?trackback/35

Fil des commentaires de ce billet