Считать вывод и ввести каждую строку отдельно - 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, чтобы разбить каждую строку, а затем добавить ее в окно сообщения.

Другие вопросы по тегам