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

时间:2015-01-26 23:13:02

标签: python string list secure-crt

我试图让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)。但它并不重要。

enter image description here

接下来我坚持的两部分,即:

第1部分。如何让它发送正确的输出。正确的输出应该是:

scsi i gen X w 0 100 1 0

其中X是此列表中的一个数字。

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

感谢任何帮助。现在我们必须复制并粘贴列表,然后将它们放入另一个列表中,然后剪切并粘贴。从SecureCRT运行它会更有益。

1 个答案:

答案 0 :(得分:0)

解决

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分割每一行,然后将其添加到消息框中。