Hace tiempo que habia visto a python, me llamo la atención por sus características poco usuales, como que los espacios tenga un valor semántico a diferencia de uno puramente visual, donde la identación en el código crea los bloques de codigos que en otros lenguajes se crean con “begin y end”, “{ y }”, etc.
Desgraciadamente no habia tenido oportunidad de usarlo para un requerimiento real de mi trabajo, pero eso cambio el día de hoy.
Hoy fue mi primera vez.
El siguiente script fue mi primero con python, toma dos parámetros de la linea de comando, el primero es un archivo con una lista de nombres de usuarios, como el que se obtiene con el siguiente comando:
1 | awk -F : '{print $1}' /etc/passwd > userDatabase.txt |
El segundo parámetro es un archivo que contiene una lista de usuario{Tabulador}password como por ejemplo:
1 2 3 | panchito pancho123 albertein paparazi dariamox password |
Lo que hace es imprimir el usuario y contraseña (separado por “:”) del segundo archivo cuando el usuario se encuentre listado en el primer archivo. Un formato idóneo para usarlo junto con chpasswd (utilería que cambia las contraseñas del sistema en modo batch).
1 | python passwordFormatter.py systemUsers passwordDatabase | chpasswd |
El dichoso script, es este:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import sys file = open (sys.argv [1], 'r') userList = file.read ().split ('\n') file.close () file = open (sys.argv [2], 'r') for line in file: userData = line.split ('\t') username = userData [0] password = userData [1] if username in userList: print username + ':' + password, file.close () |