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 () |
We, te presumiré cuando sea mi primera vez en python y sabré más que tú.
No si puedo evitarlo
Pa que te complicas la vida Peke.
awk -F : ‘{print $1}’ /etc/passwd | awk ‘{ if ($0 == $1) print $0,”:”,$2} ‘ archivo2
awk -F : ‘{print $1}’ /etc/passwd | awk ‘{ if ($0 == $1) print $0,”:”,$2} ‘ archivo2 | chpasswd
Pero parece que si te gusto el python jajajajja
@Jorge Beltran
¿Si quiera lo probaste?, eso no hace lo que tu crees que hace. Que bueno que “trozaste” mi script. Prefiero mi “largo” script en python que funciona en lugar de tu tu half-baked script de awk que no se acerca siquiera a la funcion del snippet de código que puse. Hay para la otra te encargo que si no dominas un lenguaje pruebes tu código en una terminal de linux antes de andar fanfarroneando con soluciones incorrectas.
Aun así, gracias