Me desperté en una cama desconocida completamente desnudo. Recuerdo que salimos juntos del bar y subimos a un coche, pero a partir de este punto, los recuerdos se espesan. El reloj de la mesita marcaba más de las dos de la tarde. Llevaba durmiendo un montón de horas. Fui al aseo. Del espejo colgaba una nota de la chica: «Buenos días pendejo, he ido a trabajar. En la cocina encontraras algo de comer. Tu ropa está en el tendedero y espero que seca, sino, busca algo mío en el armario. Vuelvo a las tres». Me duché. Cuando me miré en el espejo, pude observar que mi aspecto facial era penoso pero al menos andaba, dolorido, pero casi normal. Me vestí; mi ropa estaba seca y me ahorré hurgar en sus trapitos. Me comí unas galletas integrales que encontré en un bote de la cocina y mientras, di una vuelta por el apartamento. Era pequeño, muy pequeño, pero para una persona sola o una pareja muy, muy, muy enamorada, más que suficiente. En el cuarto libre, en medio de montones de cosas perfectamente colocadas y medio oculto por unas cajas, un ordenador con el espacio justo para trabajar con él. Tenia el clásico salvapantallas de las banderitas del logo activadas, su mera visión casi me echa a perder el ojo que me quedaba. De repente me acordé del lápiz. Lo busqué en los bolsillos y me asaltó la terrible visión de verlo formateado en la lavadora con Ariel automáticas.
- ¿Buscas esto?
¡Mi lápiz!
- Es que sin él me encuentro desnudo.
- ¿A si?
De la forma que dijo aquel «¿A si?» y la media sonrisa que esbozó su cara deduje que, a la vista de como había dormido, el símil no era el más apropiado.
- He traído del bar tortilla de patatas y un reserva Marques de Paparrucha del 2006
Mi otra debilidad (la tortilla, no el reserva) junto con el sexo y las ttyl-6 (sin precisar el orden). Nos sentamos a comer y empezamos a hablar. O mejor, empecé mi monólogo. Le conté que mi amigo, no visible .(punto)Antúnez, mucho antes de meterse con C++ decía que haciendo chorradas uno va entrando en la lógica de la programación. Uno de sus primeros y más impresionantes scripts que nos tubo a todos anonadados mucho tiempo era:
#!/bin/bash
#
clear nombre=’who 1 grep tty7 1 awk ‘{print $1}» hora=’date «+%H: %M»‘
sleep 2s echo
Hora=$ (date + %H) case $Hora in
O? 1 1[01])echo «¡Buenos días! $nombre la hora es
$hora de la mañana»
1[2-7] )echo «¡Buenas tardes! $nombre la hora es
$hora de la tarde»
* ) echo «¡Buenas noches! $nombre la hora es $hora de la noche»
esac echo
echo «y el listado de archivos y directorios de tu carpeta en la que te encuentras es:»
ls
Que, como deja muy claro la última linea, viene a ser como un «ls» pero sin tanta amabilidad . .(punto)Antúnez decía que cuando uno consigue hacer unos cuantos cientos de scripts inútiles debería de haber obtenido suficientes conocimientos como para ofrecerse voluntario para terminar de una vez el núcleo HURD (para los muy valientes: http:/ /ftp.debian-ports.org / debian-cd / K16/ ). Ella escuchaba y de vez en cuando decía «¿A si?, ¿case qué?, ¡no me digas!» pero estaba claro que no tenia ni repajotera idea de lo que le hablaba, lo único que quería era acostarse conmigo y enseñarme python.
– ¿Sabes que para conocer los puertos abiertos y los servicios que corren en ellos basta con … ?
# apt-get install nmap
# nmap -O localhost 1 grep "open"
– Y con esto ¿sabes los puertos abiertos?
A saber en qué puertos pensaba o, mejor dicho, tenía la certeza absoluta de en qué puertos pensaba, pero yo, entre sorbo y sorbo del reserva Marqués de Paparrucha, proseguía impasible:
– También podemos hacer un pequeño script y lanzarlo como root:
#!/bin/bash
echo «Los puertos y servicios que tienes abiertos son: » echo
nmap -O localhost echo
grep «open» 1 awk ‘{print$1,$3 }’
Y así solo tendremos que teclear ./ puertos o también lo podemos poner como alias, pero no así:
$ alias puertos=' sudo nmap -O localhost 1 grep "open"'
$ puertos
Porque esto durará menos que el último trozo de tortilla de patatas, sino direc tamente en el archivo .bashrc en el apartado de los alias:
$ nano .bashrc
Y le encasquetas: alias puertos=’sudo nmap -O localhost 1 grep «open»‘
Y si cuando lo ejecutas (# puertos) te dice «command not found», «hacer releer» bash:
$ source .bashrc
– Y… ¿Qué podemos hacer con los puertos abiertos?
Dijo apoyando su cabeza por la barbilla con su mano. Yo desgañitándome por explicarle una profundísima filosofía de la vida y ella, con la boquita de piñón preguntando que «qué podíamos hacer con los puertos abiertos». Llegué a pensar que la chica que tenia delante era una Guerrillera del Ventanuco. Por esto y por el intento de asesinato por ingestión del Marqués de Paparrucha del 2006 que más que reserva debía ser un «veinte años y un día» porque era condenadamente malo.
– Bueno si queremos cerrar uno y desconocemos la aplicación (o demonio) que corre en él:
# fuser -n tcp puerto
Te da el PID, luego:
# ps -1 PID
Te muestra la aplicación, concretamente la ruta al ejecutable y luego puedes pararla de un montón de formas antes de usar el mallo del 5 y la botella de ácido. Algunas a lo fino
# /etc/init.d/aplicación stop
O a lo pedreste:
# fuser -nk tcp puerto
# killall servicio
# kill -9 PID
Escoger cada cual según el temperamento. Y si no se consigue de ninguna man era, ahora ya sí, el mallo y la botella de ácido.
– Así que…¿Demonio? … ¿Kill?…. ¿Matar?….
Madre mía, madre mía, si la mato … y a golpes de ntop, que uno, aunque tenga voluntad de hierro, no ha nacido ni de piedra ni con vocación de santo, y, con el tiempo que llevo sin darle al cupsys, se te pone por delante una noble doncella que, como dice el poeta, poco de noble y menos de doncella y con un iptables que desconoce la política DROP puedes terminar montando una intranet de lo más gratificante.