测试命令是否在vbscript中输出空字符串

时间:2016-04-14 03:51:11

标签: linux vbscript command output secure-crt

我有以下vbscript命令:

var dictionary = [
    "timeStamp": ["123","345","456","234"],
    "condition": ["dry","wet","very wet","dry"]
]

let sorted = Array(0..<dictionary["timeStamp"]!.count)
    .map { (timeStamp: dictionary["timeStamp"]![$0], condition: dictionary["condition"]![$0]) }
    .sort { $0.timeStamp < $1.timeStamp }

dictionary["timeStamp"] = sorted.map { $0.timeStamp }
dictionary["condition"] = sorted.map { $0.condition }

print(dictionary)

我想知道是否有办法知道命令是否输出任何内容,我需要在vbscript中执行此操作

1 个答案:

答案 0 :(得分:1)

从我发布的有限示例中我可以收集的内容看起来好像您正在使用VanDyke Software's SecureCRT产品,该产品支持使用脚本执行任务自动化。

在软件提供商网站上发现了相当详细的Scripting Essentials Guide

在指南中详细介绍了如何从远程计算机捕获数据(参见指南中的4.3)

  

来自Scripting Essentials: A Guide to Using VBScript in SecureCRT
  以下与Screen对象关联的方法可用于通过a捕获数据   与远程计算机的连接:ReadString()Get()Get2()。虽然SecureCRT的   日志记录功能也可用于从远程设备捕获数据,日志API也是如此   在后面的章节中引用和讨论(使用FileSystemObject将数据写入文件)。如果   您正在寻找访问SecureCRT终端当前所选数据的方法   屏幕,请参阅前面的部分,在屏幕上访问所选文本。

您可能还会发现this article有用,它解释了ReadString()的工作原理,并举例说明如何使用它将命令输出捕获到变量中。

该指南提供了使用ReadString()如何从Cisco设备检索序列号的基本示例。

crt.Screen.Synchronous = True
' Send a command to a Cisco device to get the serial number
' of the device.
crt.Screen.Send "sh tech-support | in ([sS]erial)" & vbcr
' Wait for the CR to be echoed back to us so that what is
' read from the remote is only the output of the command
' we issued (rather than including the command issued along
' with the output).
crt.Screen.WaitForString vbcr
' Capture the result into a script variable
strResult = crt.Screen.ReadString("pixfirewall#")
' strResult will contain something like:
' Serial Number: 1850889413810201 (0x6935FC6075819)
MsgBox strResult

您应该根据自己的要求进行修改。

该示例的工作原理是,一旦发送命令并且回车字符(在Linux上影响输入密钥)返回(表示命令已运行)然后使用ReadString()捕获输出,但只有在终端窗口中检测到提示符pixfirewall#时才会捕获。