VanDyke Software Forums

VanDyke Software Forums (https://forums.vandyke.com/index.php)
-   Scripting (https://forums.vandyke.com/forumdisplay.php?f=14)
-   -   Script to execute a command based on ping result (https://forums.vandyke.com/showthread.php?t=14271)

knightmare 09-01-2020 11:11 AM

Script to execute a command based on ping result
 
Hi,

I'm new here and I have no experience with programming.
I'm trying to create my first script to be used with switch/routers.

This script should connect to the device (router/switch), ping an IP address and depending on the result/reply, it execute a command.

Example:
> If ping fails (100% packet loss) = execute command "Y" (in the script, it sends a command to "reset slot 5").
> If ping is successful (0% packet loss) = execute command "X" and exit.

For now, I tried this script below. It worked when the ping fails. When the string "100% packet loss" is matched, it executes the reset.

I suppose I have to make a IF/THEN condition to first to check the ping result and then it decides to run command X or command Y. How can I implement that?

Code:

#$language = "VBScript"
#$interface = "1.0"

crt.Screen.Synchronous = True

Sub Main
        crt.Screen.WaitForString "name:"
        crt.Screen.Send "username" & vbcr
        crt.Screen.WaitForString "password:"
        crt.Screen.Send "password" & vbcr
        crt.Screen.WaitForString ">"
        crt.Screen.Send "enable" & vbcr
        crt.Screen.WaitForString "#"
        crt.Screen.Send "show date" & vbcr
        crt.Screen.WaitForString "#"
        crt.Screen.Send "ping 10.0.0.1" & vbcr
        crt.Screen.WaitForString "100% packet loss"
        crt.Screen.WaitForString "#"
        crt.Screen.Send "reset slot 5" & vbcr
        crt.Screen.WaitForString "confirm (y) or (n)"
        crt.Screen.Send "y" & vbcr
        crt.Screen.WaitForString "#"
        crt.Screen.Send "show date" & vbcr
End Sub

My SecureCRT is version 8.7.0

Thanks

bgagnon 09-01-2020 11:43 AM

Hi Knightmare,

You would want to use ReadString() instead of WaitForString() following sending the ping command so you actually capture the output so you can check it for the expected phrase.
Code:

crt.Screen.Send "ping 10.0.0.1" & vbcr
strResult = crt.Screen.ReadString("#")

If InStr(strResult, "100% packet loss") Then
    ' Run Command X
Else
    ' Run Command Y
End If

If your browser supports the site command (I know Edge does), you might run that with the search term ping because I think there are a few examples of this sprinkled throughout the forums (ie: site:forums.vandyke.com ping).

knightmare 09-01-2020 01:43 PM

Thank you very much Brenda.

It worked perfectly !

Best regards

bgagnon 09-01-2020 02:29 PM

Hi knightmare,

You are quite welcome. I am glad to hear it worked well for you. :)


All times are GMT -6. The time now is 02:19 PM.