Shell Script: backup dels repositoris de subversion
La setmana passada vaig fer un petit shell script per fer backup dels repositoris de software del meu servidor. Bàsicament el que fa és mirar a /var/svn/repos quins directoris hi ha. Llavors llença un svnadmin dump i al mateix temps comprimeix amb bzip2 la sortida cap a un fitxer, després aquest fitxer es guarda a /home/backup/subversion que és una unitat de xarxa montada per fer backups en el servidor. L’últim detall que em fa falta comentar és que després de fer la còpia del fitxer, deixa 3 fitxers de cada repositori al directori de backup i la resta els borra. D’aquesta forma tinc 3 còpies de cada un dels repositoris, una d’ahir, l’altre d’abans d’ahir i finalment una de fa 3 dies. Així si passa algún desastre d’incosistència o algo semblant tinc més marge per recuperar el repositori.
Veureu que el codi és molt simple i si algú el vol adaptar no crec que li costi gaire, tot esta programat amb ordres típiques, sense comandes rares ni res. Finalment l’únic que he hagut de fer és posar-lo al cron a alguna hora de matinada.
#!/bin/sh BASE="/var/svn/repos" DATA=`date "+%Y%m%d"` cd $BASE REPOSS=`find . -maxdepth 1 -mindepth 1 -type d | cut -f 2 -d "/"` BACKUPDIR="/home/backup/subversion" for REPOS in $REPOSS do BACKUPFITXER=backup-repos-$REPOS FITXER=$BACKUPFITXER-$DATA.dump.bz2 echo -n "Starting $REPOS backup..." svnadmin dump -q $BASE/$REPOS | bzip2 > $FITXER 2>/dev/null mv $FITXER $BACKUPDIR cd $BACKUPDIR rm -f `ls -t $BACKUPFITXER* | sed -e 1,3d` 2> /dev/null echo "OK" cd $BASE done
Python: Reiniciem el router si no hi ha internet
Malgrat fa uns dies vaig canviar el meu vell Zyxel per un Cisco 837 a casa, la línia ADSL es continua penjant per motius desconneguts. Ja que quan les dades no circulen ni amunt ni aball les interficies ATM estan aixecades i tot sembla funcionar correctament. Així doncs, no m’ha tocat altre remei que fer-me un petit script amb Python a través del qual cada 5min comprovo si tornen els pings contra un dels servidors de OpenDNS. Si això no és així llavors es connecta contra el router Cisco i el reinicia. Ja que he fet proves baixant i pujant la interficie ATM i no hi ha manera. No se m’ha acudit cap millor idea que llençar un reload.
L’script guarda un fitxer de log a /var/log/online.log i usa el modul pexpect de Python. La resta de coses que usa són moduls que van instal·lats per defecte.
Si a algú li pot fer falta l’script el podeu descarregar: router.py.
gubb ja té suport per RSS, Atom i iCal
Fa un parell de mesos vaig parlar-vos de gubb és una web 2.0 que permet crear-nos llistes de la compra, de pel·lícules que volem veure, etc. Com tot el material a lo web 2.0 la seva principal virtut és la interactivitat i la possibilitat de compartir la informació amb altres usuaris. Doncs bé, quan vaig parlar-vos d’aquesta web ja vaig dir que era molt útil, avui mateix he anat a fer la compra i he usat la llista de la compra enviada per email a la Blackberry per saber que havia de comprar. Però com sempre li trobava a faltar algo, concretament la capacitat d’exportar les llistes via RSS o Atom. Doncs no només ja esta solucionat això sinó que si els ítems d’una llista estan associats a una data podem exportar fins hi tot els elements de llista en format iCal.

Realment ara mateix ja es mereix una molt bona nota aquesta web sota el meu punt de vista. A més, té funcions molt útils com els elements arxivats. Que permeten fer llistes de la compra en un moment en base als elements que has usat en el passat. Realment s’ha de felicitar a l’equip d’aquest servei perquè han fet un producte molt útil, simple i complert.
Montar un HotSpot Gateway amb Mikrotik i Linksys WRT54GL
La setmana passada vaig posar en producció un hotel amb un HotSpot controlat per un Mikrotik RouterBoard 150 i amb diversos AP Linksys WRT54GL funcionant com a bridge. Bàsicament la idea és la d’aquest gràfic:

Doncs bé si voleu montar-ho al wiki ahir vaig fer aquest document per mirar d’ajudar als interessats: DIY HotSpot Wifi. Per cert, l’he fet en anglès perquè m’ho ha demanat gent que no enten el català. Si algú s’anima a fer la traducció que avisi que li dono accés al wiki i en un moment ho té arreglat. De totes formes ja veureu que he escrit ben poc i és molt entendor tot el que posa ja que el realment important és la configuració del Mikrotik.
Per altre banda, qualsevol dubte o consulta ja ho sabeu, podeu penjar comentari en aquest mateix article i faré el possible per ajudar-vos.
PHPClasses: VirtualCron, GoogleMaps i InsertFTP
A través de PHPClasses he trobat aquestes tres classes de PHP que tenen bona pinta així que espero que algún dia li facin servei a algú o a mi mateix:
- Insert FTP: This class can be used to manage FTP user accounts stored in a MySQL database.It can connect to a MySQL server that has a database of FTP user accounts used by FTP servers like pure-ftpd. It can: add new user accounts, block an user, change account quotas, retrieve the details of an FTP user account.
- Karatag Google Maps HTTP Request: The Google Maps API is mostly known for being able to present maps of anywhere in the world in any Web site. However, Google Maps API is also able to provide other interesting features, like determining the geographic coordinates of a given address. This class uses the Google Maps API just for the purpose of determining the location associated to an address from PHP programs.
- Virtual Cron: Many Web applications need to execute periodical tasks, like sending newsletters, processing pending e-commerce orders, etc. Some operating systems come with programs, like cron or at, to execute scheduled tasks. However, under some Web hosting environments these programs cannot be used. This class provides an alternative solution that can be used in more restricted hosting environments. It uses files to keep track of the last time when a periodical task was executed. The site Web page scripts can use the class to check these files. The class can tell when it is time to execute a task again. When it is time, the same script can execute the scheduled task without depending on external programs.
LinkedIn: actualitzat el meu perfil

Tampoc hi he perdut massa estona però com que just aquesta setmana he rebut un nou contacte a través d’aquesta xarxa social de contactes a la que potser només hi he entrat dues vegades. Doncs avui no sé com m’ha picat actualitzar una mica el meu perfil, tampoc és que hi hagi posat gran cosa ni que hagi explicat res de l’altre món però si voleu donar-hi un cop d’ull: Oriol Rius a LinkedIn. Així si algú em vol afegir com a contacte ja sap on fer-ho. Per altre banda, si voleu continuar ben informats sobre el meu curriculum el millor lloc conitnua sent a la web del CV. Com sempre passa amb aquest tipus de documents s’ha d’actualitzar però amb uns 6 mesos de retard el porto més o menys al dia.
Per altre banda comentar que és obvi que aquesta setmana he anat prou de cul, perquè hi ha ben pocs articles nous al blog. Bàsicament el problema ha estat que arribat tard a casa quasi tots els dies i la veritat l’última cosa que tenia ganes de fer era posar-me davant de l’ordinador. Així doncs, malgrat com sempre els temes s’acumulen a la llista de temes per publicar jo continua intentat sobrevieure 😉
A més aquest cap de setmana seré fora i per tant, serà difícil que actualitzi el blog. De fet, aquesta setmana vaig tornar a montar una xarxa wifi molt interessant. Aquest cop amb 10 linksys i 1 mikrotik routerboard 150. Així doncs tinc moltes ganes de donar-vos quatre detalls tècnics per si a algú li poden ser útils. Sobretot perquè la simplicitat és excepcional i la potència impresionant.