分别读取输出和输入每一行-Python/SecureCRT

分别读取输出和输入每一行-Python/SecureCRT,python,string,list,secure-crt,Python,String,List,Secure Crt,我试图获取一个Python脚本来读取命令的输出,然后根据它接收到的列表运行多个命令。我通常不写VBS或Python,所以我陷入了困境。(很难看) 输入正常(尽管我希望它能忽略>文本的开头(sn200028),但这并不重要 接下来我要讲的两个部分是: 第1部分:如何让it发送正确的输出。正确的输出应为: scsi i gen X w 0 100 1 0 其中X是此列表中的数字之一 第2部分。我需要它为列表中的每个项目实际发送此命令。而不是将整个列表作为X 非常感谢您的帮助。现在我们必须复制并粘

我试图获取一个Python脚本来读取命令的输出,然后根据它接收到的列表运行多个命令。我通常不写VBS或Python,所以我陷入了困境。(很难看)

输入正常(尽管我希望它能忽略>文本的开头(
sn200028
),但这并不重要

接下来我要讲的两个部分是:

第1部分:如何让it发送正确的输出。正确的输出应为:

scsi i gen X w 0 100 1 0
其中
X
是此列表中的数字之一

第2部分。我需要它为列表中的每个项目实际发送此命令。而不是将整个列表作为
X

非常感谢您的帮助。现在我们必须复制并粘贴这些列表,然后将它们添加到另一个列表中,然后进行剪切和粘贴。只需从SecureCRT运行此操作将更加有益。

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()

我可以使用Stru.SPLITELIN来分割每一行,然后将它添加到消息框中。

我不知道你正在解决什么问题,但可能还是更合适的工具。如果不是,请考虑直接使用,而不是编写一个终端仿真器。
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()