Obsecionado Programando Macros en un Excel que escanea puertos | Primera parte

Algo que me ha quitado tiempo este ultimo tiempo han sido las Macros en Excel, hace una semana no tenia idea de como crear una macro y tampoco había tenido la necesidad, pero surgieron dos razones, la primera es que estoy migrando y configurando una serie de servidores en total unos 20, y algunos servidores tienen unos problemas o situaciones muy particulares como por ejemplo un sistema con 17 millones de registros en el MFT o 4 millones de archivos, un sitio que pesa 200 GB, un servidor con mas de 400 sitios y un dominio con mas de 300 subdominios, en fin hay muchas otras situaciones mas, el problema es que necesito generar un informe de donde esta cada servicio o web y también necesito revisar de una manera simple las configuraciones. Con estas ideas constantemente en mente, y escribiendo diariamente cada configuración o servicio en un Excel comencé a ocupar la información del Excel para hacer nslookup. ping, dig, tracert en batch, tanto en CMD (Windows) o SSH (Linux) luego una vez configurado el 90% comencé con la seguridad, ahora nuevamente utilizando el Excel para crear comandos en Nmap, utilice codigo en php separado por tab \t o chr(9) para agregarlo fácilmente a documentos excel y vice versa, en excel use Concatenate() para unir direcciones ip con puertos o dominios con subdominios para crear rutas conexiones etc.

Por otra parte vi que mi Novia usualmente sale tarde de su trabajo por que tiene que actualizar información desde Booking.com, Agoda y otros 3 sitios con un Excel que contiene todas las habitaciones del hotel en las filas y en las columnas todos los días del mes, es una tarea similar a la mía pero mas tediosa por que cada vez que llega un email avisando que hay una nueva reserva ella tiene que actualizar el Excel y los otros 4 sitios para evitar que dos reservan coincidan con la misma habitación.

How to: En mi caso no necesito una base de datos de los cambios anteriores ya que esto es un cambio cada mas de 3 años o incluso mas, pero necesito revisar muchos cambios en un corto periodo, ya había probado anteriormente importar contenido desde una web usando Web QueryTable una función de Excel, revise esa función y encontré que podía conectar un servicio de revisión de puertos, con el Excel asi que comence a escribir y adaptar codigo, la parte en PHP fue facil pero Excel ocupa VBA Visual Basic, yo comencé a programar en Basic hace mas de 20 años en un Atari 120 XE y luego me pase a QBasic en DOS en un 286 y después a Visual Basic, pero hasta ahí llegue, detesto tener que hacer click en propiedades o usar el mouse para programar, ademas que era una porquería conectar un programa a Internet en ese tiempo y ademas ya estaba entusiasmado con la idea de poner una biblioteca en linea que me llevo a explorar PHP y JavaScript que hasta el día de hoy me resulta entretenido.

Con esta olvidada habilidad me resulto fácil programar el Excel sin embargo hay una serie de limitaciones que y de cosas absurdas que incluso son casi desconocida para la mayoría, por ejemplo cree varios botones dinámicamente y al hacerlo de esta manera hay que asignar una función, rutina o clase al al evento OnAction pero es absurdamente complicado agregar parametros y mas aun parámetros dinámicos, quizas esto merezca una propia entrada para clarificar como funcion esto en VBA

una llamada a una funcion sin variables es simplemente

.OnAction = ScanTest

Pero al agregar dos variables una dinámica (que va cambiando a medida que se ejecuta) y una fija que no cambia, resulta un código completamente difícil de explicar (pero funciona)

.OnAction = “‘ScanTest “”” & Target.Value & “””,””time”” ‘”

Tres comillas juntas, dos comillas, entre  comillas y apostrofe, literalmente utilice fuerza bruta hasta llegar a este código y que todo el resto de mi Excel funcionara perfecto…

Continuara…

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s