Считать вывод и ввести каждую строку отдельно - Python/SecureCRT
Я пытаюсь заставить скрипт Python прочитать вывод команды, а затем выполнить несколько команд на основе полученного списка. Я обычно не пишу VBS или Python, поэтому я застреваю. (это ужасно)
def Main():
objTab = crt.GetScriptTab()
objTab.Screen.Synchronous = True
objTab.Screen.IgnoreEscape = True
objTab.Screen.Send("scsi i dev select 1" + chr(13))
objTab.Screen.WaitForString("============")
szPrompt = ">"
szResult = objTab.Screen.ReadString(szPrompt)
crt.Dialog.MessageBox(szResult)
crt.Screen.Send("scsi i gen" + (szResult) + "w 0 100 1 0")
Main()
Ввод работает (хотя я хотел бы игнорировать начало> текста (sn200028
в этом случае). Это не важно, что это так.
Следующие 2 части, на которых я застрял, а именно:
Часть 1. Как заставить его отправить правильный вывод. Правильный вывод должен быть:
scsi i gen X w 0 100 1 0
где X
является одним из чисел в этом списке.
Часть 2. Мне нужно, чтобы на самом деле отправить эту команду для каждого элемента в списке. Не весь список как X
,
Любая помощь приветствуется. Прямо сейчас мы должны скопировать и вставить списки, затем поместить их в другой список, который затем вырезается и вставляется. Было бы намного выгоднее просто запустить это из SecureCRT.
1 ответ
Решаемая
def Main():
objTab = crt.GetScriptTab()
objTab.Screen.Synchronous = True
objTab.Screen.IgnoreEscape = True
objTab.Screen.Send("scsi i dev select 1" + chr(13))
objTab.Screen.WaitForString("============")
objTab.Screen.Send(chr(13))
szPrompt = "s"
szResult = objTab.Screen.ReadString(szPrompt)
result = crt.Dialog.MessageBox('Press OK to erase the first 100 blocks of the following devices: \n' + (szResult) , 'Run?' , ICON_QUESTION | BUTTON_YESNO | DEFBUTTON2)
if result == IDNO:
return
if result == IDYES:
vList = szResult.splitlines()
for strString in vList:
crt.Dialog.MessageBox('scsi i gen' + (strString) + ' w 0 100 1 0' + chr(13))
Main()
Мне удалось использовать str.splitlines, чтобы разбить каждую строку, а затем добавить ее в окно сообщения.