Y lo hago presentando un Script que hará, mediante una función recursiva para realizar varios intentos Telnet a un equipo y realizará ping constantemente contra otro, dejando que indiquemos IP origen, destino y clase de servicio. Los resultados se irán volcando en un fichero para poder analizar latencia y pérdida de paquetes.
Tal y como se estructura, el script requiere que exista una conexión de SecureCrt ya establecida a una máquina Unix que tenga visibilidad contra el router al que vamos a hacer Telnet. Si se desea que la conexión de SecureCrt sea directamente al router, el código sería muy distinto. Además, la función que hace Telnet a los equipos presupone que se utiliza validación de usuario por TACACS+ con Usuario, Password y validación de modo Enable. La clave del modo Enable debe ser establecida en la constante PassEnable. Si el servidor TACACS+ no responde, el script tratará de acceder con User "admin" Pass "admin".
De igual modo, requiere que exista ya un fichero en la carpeta de la Constante "fichero" cuyo nombre tenga la estructura
#$language = "VBScript"
#$interface = "1.0"
Const ForReading = 1 'Constante para indicar apertura de fichero en modo lectura
Const ForWriting = 2 'Constante para indicar apertura de fichero en modo escritura
Const ForAppending = 8 'Constante para indicar apertura de fichero en modo apunte, es decir, escritura al final del fichero
Const fichero = "C:\Users\pablo\Desktop\"
Const PassEnable = "clave"
dim fso,file,fsoerror,fileerror,str,conterr,Ip_Gest,equipo 'Variables para manejo de Ficheros
dim auxreadline 'Variables auxiliares y de control
Dim shell 'Variables para manejo de shell de Windows
Dim Destino
Dim Origen
Dim TOS
Dim Gestion
Sub main 'Inicio de rutina principal
'Pedimos los datos necesarios al usuario
User = crt.Dialog.Prompt("Introduce tu Usuario:", "Introducción de usuario Tacac", "", False)
Tacac = crt.Dialog.Prompt("Introduce tu Password:", "Introducción de password Tacac", "", True)
Gestion = crt.Dialog.Prompt("Introduce IP de gestión:", "Introducción de IP Gestion", "", False)
Destino = crt.Dialog.Prompt("Introduce IP Destino:", "Introducción IP Destino", "", False)
Origen = crt.Dialog.Prompt("Introduce IP Origen:", "Introducción IP Origen", "", False)
TOS=crt.Dialog.Prompt("Introduce Type of Service:", "Introducción Type of Service", "", False)
Hora = crt.Dialog.Prompt("Introduce Fecha/Hora Limite:", "Introducción Hora Limite", "", False)
'Abrimos el fcero de texto sobe el que volcaremos los datos
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile(fichero & Gestion & "_" & TOS & ".txt",ForAppending,False)
crt.Screen.Synchronous = True 'Comenzamos sincronizacion con pantalla
'Ejecutamos la función de conexión al router y, si tiene éxito, lanzamos los comandos necesarios para el ping
If Conectar_Router(Gestion,2,User,Tacac) = 1 Then
While Now < CDate(Hora)
crt.Screen.Send "ping" & VbCr
crt.Screen.WaitForString ":",2
crt.Screen.Send VbCr
crt.Screen.WaitForString ":",2
crt.Screen.Send Destino & VbCr
crt.Screen.WaitForString ":",2
crt.Screen.Send "1000" & VbCr
crt.Screen.WaitForString ":",2
crt.Screen.Send VbCr
crt.Screen.WaitForString ":",2
crt.Screen.Send VbCr
crt.Screen.WaitForString ":",2
crt.Screen.Send "y" & VbCr
crt.Screen.WaitForString ":",2
crt.Screen.Send Origen & VbCr
crt.Screen.WaitForString ":",2
crt.Screen.Send TOS & VbCr
crt.Screen.WaitForString ":",2
crt.Screen.Send VbCr
crt.Screen.WaitForString ":",2
crt.Screen.Send VbCr
crt.Screen.WaitForString ":",2
crt.Screen.Send VbCr
crt.Screen.WaitForString ":",2
crt.Screen.Send VbCr
crt.Screen.WaitForString ":",2
crt.Screen.Send VbCr
crt.Screen.WaitForString ":",2
crt.Screen.WaitForString "#",100
auxreadline= Trim(crt.Screen.Get(crt.Screen.Rows -1,1,crt.Screen.Rows -1,crt.Screen.Columns))
file.Write Now & " - " & auxreadline & vbCrLf
Wend
Else
MsgBox "Error de conexion"
End If
file.close
crt.Screen.Synchronous = False 'Terminamos sincronizacion con pantalla
msgbox "Script finalizado"
End Sub 'Fin de rutina principal
'Función para conectar al router
Private Function Conectar_Router(IP_router,contador,User,Tacac)
Dim aux
If contador > 0 then
crt.Screen.Send "telnet "& IP_router & VbCr
aux=crt.Screen.WaitForStrings("Username:","Password:",10)
Select Case aux
Case 0
crt.Screen.Send Chr(3) & VbCr
crt.Screen.WaitForString "$"
Conectar_Router=Conectar_Router(IP_router,contador - 1,User,Tacac)
Case 1
crt.Screen.Send User & VbCr
if (crt.Screen.WaitForString("Password:",20) <> False) Then
crt.Screen.Send Tacac & VbCr
if (crt.Screen.WaitForStrings(">","#",20) = 1) then
crt.Screen.Send "en" & VbCr
crt.Screen.WaitForString "Password:"
crt.Screen.Send PassEnable & VbCr
crt.Screen.WaitForString "#"
end if
Conectar_Router=1
else
crt.Screen.Send Chr(3) & VbCr
crt.Screen.WaitForString "$"
Conectar_Router=Conectar_Router(IP_router,3,User,Tacac)
end if
Case 2
crt.Screen.Send "admin" & VbCr
if(crt.Screen.WaitForString(">",20)<>False) then
crt.Screen.Send "en" & VbCr
crt.Screen.WaitForString "Password:"
crt.Screen.Send "admin" & VbCr
if(crt.Screen.WaitForString("#",15)<>False) then
Conectar_Router=1
Else
crt.Screen.Send "exit" & VbCr
crt.Screen.WaitForString "$"
Conectar_Router=3
End if
Else
crt.Screen.WaitForStrings "Password","Username:", 10
crt.Screen.Send VbCr
crt.Screen.WaitForStrings "Password","Username:", 10
crt.Screen.Send VbCr
crt.Screen.WaitForString "$"
Conectar_Router=3
End if
End Select
else
crt.Screen.Send Chr(3) & VbCr
crt.Screen.WaitForString "$"
Conectar_Router=0
End if
End Function
Hasta la próxima, sabe Dios cuándo