VanDyke Software Forums

VanDyke Software Forums (https://forums.vandyke.com/index.php)
-   Scripting (https://forums.vandyke.com/forumdisplay.php?f=14)
-   -   Problem with running script with Telnet (https://forums.vandyke.com/showthread.php?t=10443)

mr_dre2u 05-03-2012 04:14 PM

Problem with running script with Telnet
 
when running the following script the script sometimes skips ip's. Using connectInTab method instead of connect I realised that it was executing the next iteration of the for-loop before the previous one completed for some items. Why is that?


Sub Main

On Error Resume Next

Dim response
Dim ips
Dim ip
Dim count
set count=0
Dim test
'Array of IPM IPs
ips= array("10.227.44.37","10.227.44.40","10.227.44.41")

'Array of IPM Names
area=array("Arnos1","Arnos2","Arnos3")

'user input prompt
Dim strUserInput
strUserInput = InputBox( "Enter the current month and year separated by a '.' Example: 'Mar.2012'" )
'crt.Screen.Synchronous = True
'Driver. Iterates through all the IPs in the ips array
for each ip in ips
crt.Session.Connect "/TELNET " + ip 'Creates telnet connection
Saver(area(count))
crt.Screen.Send count
'BackUp area(count), strUserInput
count= count+1

next
End Sub

'performs save action
Sub Saver(strMSAN)
crt.Screen.WaitForString ">>User name:"
crt.Screen.Send "root" & chr(13)
crt.Screen.WaitForString ">>User password:"
crt.Screen.Send "admin" & chr(13)
crt.Screen.WaitForString(strMSAN+">")
crt.Screen.Send "en" & chr(13)
crt.Screen.WaitForString(strMSAN+"#")
crt.Screen.Send "con" & chr(13)
crt.Screen.WaitForString(strMSAN+"(config)#")
crt.Screen.Send "save" & chr(13)
response=crt.Screen.WaitForStrings (chr(123)+" <cr>" & chr(124) & "configuration<K>" & chr(124) & "data<K> " & chr(125) & ":" , strMSAN+"(config)#")

If response = 1 Then
crt.Screen.Send "configuration" & chr(13)
crt.Screen.WaitForString( ":Duplicate complete")
End If


End Sub

'performs back-up action
Sub BackUp(strMSAN, strUserInput)
crt.Screen.Send ("backup configuration tftp 172.20.224.139 config_"+strMSAN+"."+strUserInput+".txt" & chr(13))
crt.Sleep 100
crt.Screen.WaitForString(strMSAN+"(config)#")
crt.Screen.Send "quit" & chr(13)
crt.Screen.WaitForString(strMSAN+"#")
crt.Screen.Send "quit" & chr(13)
crt.Screen.WaitForString "Are you sure to log out? (y/n)[n]:"
crt.Screen.Send "y" & chr(13)

End Sub

miked 05-03-2012 04:53 PM

Greetings,

Do you get better results if you uncomment 'crt.Screen.Synchronous = True?

mr_dre2u 05-04-2012 07:24 AM

no. Same results

miked 05-04-2012 10:26 AM

You're using crt.Session.Connect, and no crt.Session.Disconnect. I think the session must be getting closed in a way that's not obvious in the code, because you would probably see an error if trying to use Connect when already connected. So, I think there's more going on than has been shown.

Are you disconnecting from the remote through some other command before trying again to connect?

When you say it's skipping IP's, how are you making that determination?

Which version of SecureCRT are you using (Help / About SecureCRT...)?

Can you add a msgbox do you see that IP's are not skipped, and see if you notice anything different about the SecureCRT connections?
Code:

for each ip in ips
  crt.Session.Connect "/TELNET " + ip 'Creates telnet connection
  Saver(area(count))
  crt.Screen.Send count
  'BackUp area(count), strUserInput
  count= count+1

  ' Debug MsgBox to help verify that no IP addresses are skipped
  MsgBox "IP = " & ip & vbcr & "count = " & count 
next



All times are GMT -6. The time now is 01:32 PM.