【问题标题】:Exit a Secure CRT script without clossing the application or session退出 Securecrt 脚本而不关闭应用程序或会话
【发布时间】:2021-09-28 15:37:51
【问题描述】:

我通过 Secure CRT 使用 vbscript,包含不同的 subs 以及全局变量,在 main sub 之外,以便对 subs 可用。

我想问一下是否有一种方法可以在任何需要的时候退出脚本,在到达进程结束之前并且不使用 crt.Quit,因为最好让安全的 crt 运行并用于额外的命令。

我的脚本如下

Intro = msgbox ("ONLY FOR AUTHORISED USE!!!", 1+16+0+4096)
    If Intro =2 Then
        MsgBox"Operation Cancelled"
    ThisIsTheEnd
    End If

DSLAM=inputbox ("Please Enter Dslam Name","Login")
    If DSLAM="" Then
        MsgBox"Operation Cancelled"
    ThisIsTheEnd
    End If

crt.Screen.Send "telnet " &  DSLAM & Chr(13)
crt.Screen.WaitForString "login:"
crt.Screen.Send "xxxx" & Chr(13)
crt.Screen.WaitForString "Password:"
crt.Screen.Send "xxxxxxxx" & Chr(13)
crt.Screen.WaitForString ">"
crt.Screen.Send "enable" & Chr(13)
crt.Screen.WaitForString "Password:"
crt.Screen.Send "xxxxxxxx" & Chr(13)
crt.Screen.WaitForString "#"
crt.Screen.Send "conf t" & Chr(13)
crt.Screen.WaitForString "(config)#"
crt.Screen.Send "br" & Chr(13)
crt.Screen.WaitForString "#"

CARD=inputbox("Please Enter Dslam Card", "Dslam Card")
    If Card="" Then
        MsgBox"Operation Cancelled"
        crt.Screen.Send "end" & Chr(13)
        crt.sleep 500
        crt.Screen.Send "exit" & Chr(13)
        ThisIsTheEnd
    End If
    
PORT=inputbox("Please Enter Dslam Port", "Dslam Port")
    If Port="" Then
        MsgBox"Operation Cancelled"
        crt.Screen.Send "end" & Chr(13)
        crt.sleep 500
        crt.Screen.Send "exit" & Chr(13)
        ThisIsTheEnd
    End If  

Sub Main() 

Profile

NextAction

ThisIsTheEnd

End Sub

Sub Profile

SELPROFILE=inputbox("1.free_VDSL_8B_Default" & Chr(13) & "2.free_VDSL_12A" & Chr(13) & "3.free_VDSL_17A", "Please Select the Profile")
crt.Screen.Send "port lre" & " " & CARD & "/" & PORT & " disable" & Chr(13)
crt.sleep 500

    If SELPROFILE=1 Then
            MsgBox "Default 8B Profile Selected"
        crt.Screen.Send "lre" & " " & CARD & "/" & PORT & " xdsl line-config free_VDSL_8B_Default" & Chr(13) 
        ElseIf SELPROFILE=2 Then
        MsgBox "12A Profile Selected"
        crt.Screen.Send "lre" & " " & CARD & "/" & PORT & " xdsl line-config free_VDSL_12A" & Chr(13) 
    ElseIf SELPROFILE=3 Then 
        MsgBox "17A Profile Selected"
        crt.Screen.Send "lre" & " " & CARD & "/" & PORT & " xdsl line-config free_VDSL_17A" & Chr(13)
    ElseIf SELPROFILE<>1 or 2 or 3 Then
        MsgBox "INVALID PROFILE!!!", 0+16+0+4096
        Profile
    End If 
    
crt.sleep 500
crt.Screen.Send "port lre" & " " & CARD & "/" & PORT & " enable" & Chr(13)
crt.sleep 500
crt.Screen.Send "end" & Chr(13)
crt.sleep 500
crt.Screen.Send "wr mem" & Chr(13)
crt.Screen.WaitForString "#"

End Sub 

Sub NextAction

GOON=inputbox("1.Exit" & Chr(13) & "2.Show Sync" & Chr(13) & "3.Repeat", "Please select next action")
    if GOON=1 then 
        crt.Screen.Send "exit" & Chr(13)
    ElseIf GOON=2 then 
        crt.Screen.Send "sho lre" & " " & CARD & "/" & PORT & " xdsl phys-table linerates" & Chr(13)
        NextAction
    ElseIf GOON=3 then
        crt.Screen.Send "conf t" & Chr(13)
        crt.Screen.WaitForString "(config)#"
        crt.Screen.Send "br" & Chr(13)
        crt.Screen.WaitForString "#"    
        Profile
    Else    MsgBox "INVALID SELECTION!!!", 0+16+0+4096
        NextAction  
    End if

End Sub

Sub ThisIsTheEnd

    MsgBox"Thank you, come again"
    crt.Quit

End Sub

所以总结一下,我希望可以选择在各个消息输入框阶段退出脚本,通过取消选项而不关闭 Secure CRT。

整个脚本必须通过 Secure CRT 运行,因此 WScript.Quit 不是一个选项。

感谢您的宝贵时间!

【问题讨论】:

    标签: vbscript exit crt


    【解决方案1】:

    因此,问题最终通过全局声明 subs 上使用的变量、添加 Do Until 循环并重新排列 subs 以使脚本可以以 Exit 和 End Sub 命令结束来解决。

    看起来 End Sub(正确使用时)足以在任何需要的时候终止脚本。

    【讨论】:

      猜你喜欢
      • 2011-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 2020-09-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多