Welcome to the VanDyke Software Forums

Join the discussion today!


Go Back   VanDyke Software Forums > Scripting

Reply
 
Thread Tools Rate Thread Display Modes
  #1  
Old 12-05-2019, 11:38 AM
conneryc conneryc is offline
Registered User
 
Join Date: Dec 2019
Posts: 2
Cannot escape to online command mode (modem) in script

So I have a script to dial a locally attached modem to connect to remote modems connected to Cisco routers that I manage. Everything in the script works perfectly except getting the modem to hang up.

To do that, I have to send +++ to the connection to get to command mode with the modem to issue the ATH0 command to go on-hook.

This is the section of the script for that:

Code:
	crt.Screen.WaitForString ("Press RETURN to get started.")
		crt.Screen.Send "+++"
		crt.Screen.WaitForString ("OK")
		crt.Screen.Send "ATH0" & vbcr
		crt.Session.Disconnect
        Exit Sub
I'm using version 8.1.2 of SecureCRT

With echo on, I can see that the +++ is being sent by the script, but the modem doesn't see it. The script just pauses waiting for "OK". However, if I manually type the +++ on my keyboard the modem DOES see it and returns the "OK" and the script then sends the ATH0 and the modem hang up the line.

I can't seem to determine why the modem isn't getting the +++ from the script, but does when entered manually from the keyboard?

Thanks

Last edited by jdev; 12-05-2019 at 11:50 AM. Reason: wrap code in [code][/code] blocks for easier viewing
Reply With Quote
  #2  
Old 12-05-2019, 12:52 PM
jdev's Avatar
jdev jdev is offline
VanDyke Technical Support
 
Join Date: Nov 2003
Location: Albuquerque, NM
Posts: 955
Quote:
Originally Posted by conneryc View Post
With echo on, I can see that the +++ is being sent by the script, but the modem doesn't see it. The script just pauses waiting for "OK". However, if I manually type the +++ on my keyboard the modem DOES see it and returns the "OK" and the script then sends the ATH0 and the modem hang up the line.

I can't seem to determine why the modem isn't getting the +++ from the script, but does when entered manually from the keyboard?
The modem is receiving the +++, that's a certainty.

What's probably the issue here is that -- according to what I've briefly researched outside the scope of any SecureCRT involvement -- with a number of modems, the "+++" escape sequence has to be prefaced/followed by a 1-second delay in order for the modem to recognize it as an actual escape sequence (as opposed to just three '+' chars coming in as part of a normal data stream).

One thing that comes to mind is to try something to make it seem more like you're typing things in manually, by slowing things down a wee bit and introduce a 1-second delay before you send it. For example:

Code:
    crt.Screen.WaitForString "Press RETURN to get started."
    ' The escape sequence needs a 1-second delay before...
    crt.Sleep 1000

    ' Increase the character send delay to make it seem more
    ' like things are being typed in by a human -- instead of
    ' a machine... First, store the current char send delay:
    nOrigValue = crt.Session.Config.GetOption("Character Send Delay"))
    ' Next, set the value to 50 ms to simulate a fast typer
    crt.Session.Config.SetOption "Character Send Delay", 50

    ' Now, let's "send" the +++
    crt.Screen.Send "+++"

    ' Now, let's restore the char send delay to orig value
    crt.Session.Config.SetOption "Characters Send Delay", CINT(nOrigValue)

    crt.Screen.WaitForString "OK"
    crt.Screen.Send "ATH0" & vbcr

    crt.Session.Disconnect

Exit Sub
If that doesn't work, you'll need to explore and experiment with adjusting the timing/delay until you get a value set that works for sending the escape sequence to your modem.

--Jake
__________________
Jake Devenport
VanDyke Software
Technical Support
YouTube Channel: https://www.youtube.com/vandykesoftware
Email: support@vandyke.com
Web: https://www.vandyke.com/support
Reply With Quote
  #3  
Old 12-05-2019, 01:01 PM
conneryc conneryc is offline
Registered User
 
Join Date: Dec 2019
Posts: 2
Jake,

The "crt.Sleep 1000" command resolved the issue. Script working perfectly now.

Thank you!
Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


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