首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >退出安全CRT脚本而不关闭应用程序或会话

退出安全CRT脚本而不关闭应用程序或会话
EN

Stack Overflow用户
提问于 2021-09-28 15:37:51
回答 1查看 87关注 0票数 1

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

我想问一下,是否有一种方法可以在到达进程结束之前的任何时候退出脚本,而不使用crt.Quit,因为运行secure crt并可用于其他命令会更好。

我的摘要如下

代码语言:javascript
复制
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

综上所述,我希望可以通过cancel选项在不同的消息输入框阶段退出脚本,而不关闭Secure CRT。

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

谢谢您抽时间见我!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-29 18:21:46

因此,问题最终得到了解决,方法是全局声明subs上使用的变量,添加Do Until循环并重新排列subs,以便脚本可以以Exit和end Sub命令结束。

看起来End Sub (如果使用正确)足以在所需的任何点终止脚本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69364641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档