Visual Basic Scripting

Hola gente:
En estos ultimos dias (semanas) estuve jugando un poco con visual basic script(.vbs) y con javascript (.js) para un proyecto semi-personal en el trabajo. Ya terminé lo básico asi que ahora ya voy a aflojarle un poco a boludear con esto, pero la verdad me encantó aprender sobre estos dos lenguajes. Sobre todo javascript, que me pareció muy completo y bastante heterogéneo entre navegadores y sistemas operativos(a excepción de internet explorer, donde para algunas cosas tuve que cambiar 60 lineas solo para que pueda funcionar a medias).

Aca dejo tonterías que armé, que tal vez le sirvan a alguien. Aclaro por supuesto que dado que tenían originalmente información del trabajo, hay cosas como “Carpetas de Red” o “telnet” que pierden funcionalidad sin tener una aplicación mas específica.
Un ejemplo claro es que Carpetas de Red agregaba carpetas de mi trabajo, cuyas direcciones no puedo compartir, por lo que el archivo esta vacío. El script de telnet en realidad se conecta a un proxy(de mi trabajo, con claves que no puedo compartir) y desde ahi se conecta a un destino final(con usuario y clave fijos generalmente) para hacer un ping a google(basicamente comprobar navegación).

Algo que me interesó, es que agregué la opcion de parametros externos, de forma que pueden ejecutar telnet2.vbs , o llamar a “telnet2 IPDEDESTINO” (sin comillas) y funciona igual. Esto también lo hice con el “ejecutar2.vbs” y el “nslookup3.vbs”

Para usarlos solo tienen que copiarlos en un archivo de texto y guardarlos con extensión vbs.

ejecutar2.vbs

No tiene mucho sentido y fue principalmente para practicar. En mi caso particular lo encontré útil porque en mi trabajo no está el botón ejecutar de windows ni el diálogo de ejecutar con [Windows]+R , y estoy muy acostumbrado a abrir algunas aplicaciones mas rápido así (como el notepad o mspaint o calc ). Como dije antes, tambien se puede usar “ejecutar2 APLICACION” , aunque probablemente si pueden llamar al proceso así, también podrían llamar fácilmente a la aplicación en cuestión.


dim objshell
dim command
Set objArgs = WScript.Arguments
Set objshell = createobject(“Wscript.shell”)
If (objArgs.Count = 0) Then
command=trim(InputBox(“Ejecutar”,”Ejecutar”,”cmd”))
else
For Each strArg In objArgs
command = strArg & ” ” & command
Next
end if
if command = “” or command=” ” then
msgbox “Escriba comando”,16,”Error”
wscript.quit
end if
objshell.run(command)
wscript.quit

NSLookup3.vbs

Este script simplemente corre un nslookup con q=mx para verificar estado de dominios de correo. Al igual que antes, puede ser usando directamente(doble click) o con “nslookup3 DOMINIOCORREO” (sin comillas).

Nota: en esto también incluí la creación de una carpeta en el disco C para guardar Logs de cada dominio consultado. Para esto se verifica primero que la carpeta no exista, luego se crea. Se lanza el nslookup, se crea el archivo de texto y finalmente, se abre el archivo de texto, para poder copiar de allí los datos en lugar de la consola.


Public objFSO

Public objshell

Dim dom

Dim ruta

Dim strargum

dim comandd

Set objArgs = WScript.Arguments

Set objshell = CreateObject(“Wscript.shell”)

Set objFSO = CreateObject(“Scripting.FileSystemObject”)

If (objArgs.Count > 0) Then

For Each strArg In objArgs

strargum = strArg

Next

End If

If (objArgs.Count = 0) Then

dom = Trim(InputBox(“Escriba Dominio y pulse aceptar. Los datos se guardan en un archivo de texto en C:\NSLookup_logs\”, “Nslookup”, “jazztel.es”))

If dom = “” or dom = ” ” or dom = “/” Then

MsgBox “Dominio no valido”, 16, “Dominio no valido”

WScript.quit

End If

ElseIf (objArgs.Count > 1) Then

MsgBox “Demasiados Argumentos”, 16, “Deasiados Argumentos, por favor solo incluir un dominio o IP”

WScript.quit

ElseIf strargum = ” ” or strargum = “/” or  strargum = “” Then

MsgBox “Dominio no valido”, 16, “Dominio no valido”

WScript.quit

Else

dom = strargum

End If

Call GeneratePath(“C:\NSLookup_logs”)

Call nsl(dom)

objshell.run (“C:\NSLookup_logs\” & dom & “.txt”)

WScript.quit

Function nsl(dom)

comandd=”nslookup -q=mx ” & dom & ” >C:\NSLookup_logs\” & dom & “.txt”

objshell.run (“cmd”)

WScript.sleep 350

objshell.SendKeys comandd

objshell.SendKeys “{ENTER}”

WScript.sleep 1200

objshell.SendKeys “exit”

objshell.SendKeys “{ENTER}”

End Function

Function GeneratePath(pFolderPath)

GeneratePath = False

If Not objFSO.FolderExists(pFolderPath) Then

If GeneratePath(objFSO.GetParentFolderName(pFolderPath)) Then

GeneratePath = True

Call objFSO.CreateFolder(pFolderPath)

End If

Else

GeneratePath = True

End If

End Function


Telnet2.vbs

Al igual que antes, esto puede usarse con doble click o con “telnet2 IP-DESTINO” (sin comillas). Cabe aclarar que si no requieren el uso d eun proxy , deben editar el código y si lo requieren, deberán editar IP-DEL-PROXY para colocar la dirección correcta y la autenticación del proxy con USUARIO-PROXY y PASSWORD-PROXY, así como la del destino final con USUARIO-DESTINO y PASSWORD-DESTINO . También pueden cambiar el comando final (ping a google) para personalizar algo via telnet.


dim objshell

dim Telt

dim ip

Set objArgs = WScript.Arguments

Set objshell = createobject(“Wscript.shell”)

If (objArgs.Count =1) Then

For Each strArg In objArgs

ip = strArg

Next

elseif (objArgs.Count =0) then

ip=trim(InputBox(“Escriba ip del router”,”Cliente Telnet”,”0.0.0.0″))

else

msgbox “IP no valida”,16,”Ip no valida”

wscript.quit

end if

if ip = “” or ip= “0.0.0.0” then

msgbox “IP no valida”,16,”Ip no valida”

wscript.quit

else

objshell.run(“telnet”)

Wscript.sleep 500

Objshell.sendkeys “O IP-DEL-PROXY

Wscript.sleep 200

Objshell.sendkeys “{ENTER}”

Wscript.sleep 3000

objshell.sendkeys “USUARIO-PROXY

Wscript.sleep 500

Objshell.sendkeys “{ENTER}”

Wscript.sleep 500

Objshell.sendkeys “PASSWORD-PROXY

Wscript.sleep 700

Objshell.sendkeys “{ENTER}”

Wscript.sleep 2000

Objshell.sendkeys “telnet ” & ip

Wscript.sleep 1000

Objshell.sendkeys “{ENTER}”

Wscript.sleep 2300

objshell.sendkeys “USUARIO-DESTINO

Wscript.sleep 500

Objshell.sendkeys “{ENTER}”

Wscript.sleep 1000

Objshell.sendkeys “PASSWORD-DESTINO

Wscript.sleep 700

Objshell.sendkeys “{ENTER}”

Wscript.sleep 1000

Objshell.sendkeys “ping www.google.com”

Wscript.sleep 500

Objshell.sendkeys “{ENTER}”

end if

wscript.quit


Carpetas de Red 2.0.vbs

Este script no tiene parámetros externos. En este ejemplo doy 3 carpetas de red, pero en el original se usó para cerca de 10 Carpetas de Red.  En pocas palabras, este script genera carpetas de Red que indiquemos en el código. Es muy útil si deben agregar sitios de Red a muchas computadoras a la vez (se podría enviar en alguna red con dominio para ser ejecutado automáticamente en todas las máquinas).  Por supuesto, como dije antes, no puedo compartir información laboral, así que les toca editar el nombre de cada carpeta y su dirección. (para mas carpetas simplemente copien y peguen las partes de asignación de nombre, dirección y el código que le sigue). Al finalizar el proceso, aparece un cuadro de aviso y se abre “Mis Sitios de Red” automáticamente.


msgbox “Comenzando agregado de carpetas de Red (By TomCaram), se le avisara cuando el proceso termine “,16,”Carpetas de Red”

Const NETHOOD = &H13&

Set objWSHShell = CreateObject(“Wscript.Shell”)

Set objShell = CreateObject(“Shell.Application”)

Set objFolder = objShell.Namespace(NETHOOD)

Set objFolderItem = objFolder.Self

strNetHood = objFolderItem.Path

strShortcutName = “Carpeta 1

strShortcutPath = “\\DIRECCION\DE\CARPETA\1\

Set objShortcut = objWSHShell.CreateShortcut _

(strNetHood & “\” & strShortcutName & “.lnk”)

objShortcut.TargetPath = strShortcutPath

objShortcut.Save

strShortcutName = “Carpeta 2

strShortcutPath = “\\DIRECCION\DE\CARPETA\2\

Set objShortcut = objWSHShell.CreateShortcut _

(strNetHood & “\” & strShortcutName & “.lnk”)

objShortcut.TargetPath = strShortcutPath

objShortcut.Save

strShortcutName = “Carpeta 3

strShortcutPath = “\\DIRECCION\DE\CARPETA\3\

Set objShortcut = objWSHShell.CreateShortcut _

(strNetHood & “\” & strShortcutName & “.lnk”)

objShortcut.TargetPath = strShortcutPath

objShortcut.Save

msgbox “FINALIZADO el agregado de carpetas de Red (By TomCaram). Pueden encontrarlas en Mis Sitios de Red”,16,”Carpetas de Red”

Set objshell = createobject(“Wscript.shell”)

objshell.run (“explorer.exe %USERPROFILE%\Entorno de red”)

wscript.quit


Hasta acá comparto. Proximamente voy a compartir una calculadora IP que me fue muy útil y un reloj y cronómetro hechos en javascript que recién hoy pude completar (Y funcionan bien!) gracias a la ayuda de un amigo(Maty Pino) que me pasó algunas lineas de código que terminaron de convencerme de que tenía que empezar TODO de nuevo para que el cronómetro sea eficiente.

Saludos

Tom

One thought on “Visual Basic Scripting”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *