Проверьте, выводит ли команда пустую строку в vbscript
У меня есть следующая команда VBScript:
crt.Screen.Send "cat myfile.txt | grep 'L[0-9]*' " & vbcr
Я хочу знать, если есть способ узнать, выводит ли команда что-нибудь или нет, мне нужно сделать это в VBScript
1 ответ
Из того, что я могу извлечь из ограниченного примера, который вы опубликовали, видно, что вы используете продукт SecureCRT от VanDyke Software, который поддерживает автоматизацию задач с помощью сценариев.
На веб-сайте поставщиков программного обеспечения есть довольно подробное Руководство по основам сценариев.
В руководстве подробно описано, как собирать данные с удаленного компьютера (см. 4.3 в руководстве).
Из основ сценариев: руководство по использованию VBScript в SecureCRT
Следующие методы, связанные с объектом Screen, можно использовать для сбора данных через соединение с удаленным компьютером:ReadString()
,Get()
, а такжеGet2()
, Хотя возможности протоколирования SecureCRT также можно использовать для захвата данных с удаленного устройства, на API журналирования ссылаются и обсуждают в следующей главе (Запись данных в файлы с использованием FileSystemObject). Если вы ищете способы доступа к данным, которые в данный момент выбраны на экране терминала SecureCRT, см. Предыдущий раздел "Доступ к выбранному тексту на экране".
Вы также можете найти эту статью полезной, которая объясняет, как 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
Что вы должны быть в состоянии изменить, чтобы соответствовать вашим требованиям.
Пример работает на предпосылке, что после отправки команды и возврата символа возврата каретки (введите Enter в Linux) (для обозначения выполнения команды) он затем использует ReadString()
захватить вывод, но только когда он обнаруживает подсказку pixfirewall#
в окне терминала.