== Scripts == 1. Lister les machines /usr/local/bin/ls-machines {{{ #!/bin/bash for SALLE in $@ ; do fping -c 1 -g 192.168.$SALLE.min 192.168.$SALLE.max 2>/dev/null |awk '{print "root@" $1}' done }}} 2. Mise à jour salle {{{ nfs# ls-machine > masalle nfs# dsh -f masalle -M -w 'aptitude -q -y update && aptitude -q -y full-upgrade' }}} . {i} éviter le -q qui risque de te cacher ce qui se passe... on sait jamais... -- ThomasNoël <> . {i} faire d'abord la m-à-j d'une machine "à la main", sans le -y, pour voir si le -y ne pose pas de problème -- ThomasNoël <> 3. Fixé les adresses ip sur le serveurs - Recupérer les adresses mac et etiquetté les machines - Copier l'output dans dhcpd.conf {{{ m=101 for i in $(cat cdr.macs) do echo "host cdr-$m { hardware ethernet $i; fixed-address cdr-$m.cnfd.; }" # on met le nom de la machine, pas son IP m=$((m+1)) done }}} 4. Ajouter 28 utilisateurs avec auf-django-users {{{ from aufusers import User for i in range(28): User(username="formation%s" % i, password="essayetjrs").save() }}} 5. Suppression {{{ for u in range(28): ....: try: ....: User.objects.get(username="formation%d" % u).delete() ....: ....: except: ....: pass }}} 5. Vérification {{{ from aufusers import User for u in User.objects.filter(username__startswith="formation"): print "%s expire le %s" % (u.username, u.expire) }}} == Script d'info des abonnées sans mailman == {{{#!python # -*- encoding:utf-8 -*- import smtplib import locale from email.mime.text import MIMEText from aufusers import User from datetime import date from datetime import timedelta import time mail = """ Ici on écrit le mail d'information """ locale.setlocale(locale.LC_ALL, '') s = smtplib.SMTP("localhost") d = date.today() for u in User.objects.filter(source="LOCAL"): utilisateur={'username':u.username.decode('iso-8859-1').encode('utf-8')} # 'gecos':u.gecos.decode("utf8").encode("latin1").decode("utf8")} msg = mail % utilisateur msg = MIMEText(msg,_charset='UTF-8') msg['Subject'] = '[INFORMATION] Attention au piratage' msg['From'] = 'Abonnements Campus numerique francophone de Dakar ' msg['To'] = "%s@refer.sn" % u.username if u.active(): s.sendmail("abonnement@refer.sn", "%s@refer.sn" % u.username, msg.as_string()) # un petit timeout entre les envoies de mail time.sleep(5) print u.username.decode('iso-8859-1').encode('utf-8') s.quit() }}} == Script de migration contact Horde vers Roundcube == # on extrait de la base horde, la table turba_objects > listecontacts # on modifie le fichier pour qu'il ressemble à login#Nom du contact#mail {{{ fballa#ndimby#ndimby@refer.sn }}} # On extrait aussi les id_contacts de la table horde_users > listecontact_id {{{ fballa;206 }}} # Enfin le petit script qui fait la moulinette {{{#!python import os, sys, MySQLdb connexion = MySQLdb.connect('localhost', 'root', 'passMysql', 'roundcube') fichier_contacts = open('/root/listecontacts','r') curseur = connexion.cursor() for ligne in fichier_contacts: username = ligne.split('#')[0] contact = ligne.split('#')[1] email = ligne.split('#')[2] command = """grep -i "%s;" listecontact_id | cut -d ";" -f2 > /tmp/resultat""" % (username) os.system(command) resultat = open('/tmp/resultat','r') user_id = resultat.readline().splitlines()[0] resultat.close() requete = """ insert into contacts (name, email, user_id) values ("%s", "%s", "%s" ) """ % (contact, email, user_id) print requete curseur.execute(requete) connexion.commit() curseur.close() connexion.close() fichier_contacts.close() }}} == Récupérer les addresses mail depuis un spreadsheet googledoc == Prérequis {{{ aptitude install python-gdata wget http://gdatacopier.googlecode.com/files/gdatacopier-2.1.2.tgz tar -xzvf gdatacopier-2.1.2.tgz }}} La grousse bidouille {{{ #!/bin/bash MOIS=$(date +"%B") NOW=$(date +"%j") CNF='/home/ndimby/auf/usagers-cnf' cd $CNF gcp.py -f csv -o -u lambda@gmail.com:/spreadsheet/all/$MOIS* $CNF if [ -e old ]; then cut -d',' -f4 $CNF/*$MOIS*.csv | grep -v "E-mail" > $CNF/$NOW diff -n old $NOW | grep "@" > /tmp/diffusagers mv -v $NOW old else echo "pas de comparaison possible" cut -d',' -f4 $CNF/*$MOIS* | grep -v "E-mail" > $CNF/"old" fi # Envoie sur le serveur de mail pour traitement if [ -s /tmp/diffusagers ]; then scp /tmp/diffusagers mail-dakar.sn.auf.org:/tmp/diffusagers ssh root@mail-dakar.sn.auf.org add_members -r /tmp/diffusagers --admin-notify=n --welcome-msg=n Usager-cnfdakar ssh root@mail-dakar.sn.auf.org rm -v /tmp/diffusagers else echo "Fichier vide, rien à ajouter dans la mailing liste" fi }}}