Mi primera vez (python)

January 31st, 2009 by AlbertEin Leave a reply »

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 ()
Advertisement

6 comments

  1. Fire_tony says:

    We, te presumiré cuando sea mi primera vez en python y sabré más que tú.

  2. AlbertEin says:

    No si puedo evitarlo :twisted:

  3. Jorge Beltran says:

    Pa que te complicas la vida Peke.
    awk -F : ‘{print $1}’ /etc/passwd | awk ‘{ if ($0 == $1) print $0,”:”,$2} ‘ archivo2

  4. Jorge Beltran says:

    awk -F : ‘{print $1}’ /etc/passwd | awk ‘{ if ($0 == $1) print $0,”:”,$2} ‘ archivo2 | chpasswd

  5. Jorge Beltran says:

    Pero parece que si te gusto el python jajajajja

  6. AlbertEin says:

    @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. :P

    Aun así, gracias :D

Leave a Reply