secueCRT脚本再试牛刀

  主机调整了登录流程,原本脚本跑不通了,今天针对新流程进行优化,有了新的心得。

1、crt.Screen.WaitForString 与crt.Screen.Get 的配合问题:crt.Screen.Get读取的是"屏幕缓冲区"的当前快照,而 SecureCRT 在收到远程数据后需要时间渲染到屏幕缓冲区。 Synchronous = True 只保证了脚本操作不被打断,但不保证屏幕缓冲区已经刷新,由于终端本身的回显渲染有延迟,而WaitForString只是等待数据流中出现该字符串,所以可能会出现等待到的字符串是上一个页面存在的内容,所以使用WaitForString,最好是等待目标页面独有的字符串,避免与旧页面内容混淆。或者使用Sleep来等待足够久的时间,再读取屏幕缓冲区来判断到了哪一页。

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

Sub Main
    crt.Screen.Synchronous = True

    If crt.Arguments.Count < 1 Then
        crt.Dialog.MessageBox "[ERROR] Need at least 1 arg (IP)"
        crt.Screen.Synchronous = False
        Exit Sub
    End If

    crt.Sleep 1000
    crt.Screen.Send "/" & crt.Arguments(0) & vbcr
    If crt.Arguments.Count < 2 Then
        crt.Screen.Synchronous = False
        Exit Sub
    End If
    crt.Screen.WaitForString "[ r ]"

    totalRows = crt.Screen.Rows
    totalCols = crt.Screen.Columns

    screenText = ""
    For i = 1 To totalRows
        lineText = crt.Screen.Get(i, 1, i, totalCols)
        lineText = RTrim(lineText)
        If lineText <> "" Then
            If InStr(lineText, "[ ") > 0 Then
                If InStr(lineText, crt.Arguments(1)) > 0 Then
                  start = InStr(lineText, "[")
                  endPos = InStr(start + 1, lineText, "]")
                  bracketContent = Mid(lineText, start + 1, endPos - start - 1)
                  crt.Screen.Send bracketContent & vbcr
                  Exit For
                End If
            End If
        End If
    Next

    If crt.Arguments.Count < 3 Then
        crt.Screen.Synchronous = False
        Exit Sub
    End If
    crt.Screen.WaitForString "Password: "
    crt.Screen.Send crt.Arguments(2) & vbcr

    If crt.Arguments.Count < 4 Then
        crt.Screen.Synchronous = False
        Exit Sub
    End If
    crt.Sleep 500
    crt.Screen.WaitForString "$"
    'crt.Screen.Send crt.Arguments(3) & " " & crt.Arguments(4) & vbcr
    crt.Screen.Send crt.Arguments(3) & vbcr
    

    crt.Screen.Synchronous = False
End Sub

 

posted @ 2026-08-21 00:07  badwood  阅读(3)  评论(0)    收藏  举报
Badwood's Blog