我试图让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
)。但它并不重要。
接下来我坚持的两部分,即:
第1部分。如何让它发送正确的输出。正确的输出应该是:
scsi i gen X w 0 100 1 0
其中X
是此列表中的一个数字。
第2部分。我需要它来为列表中的每个项目实际发送此命令。不是整个列表X
。
感谢任何帮助。现在我们必须复制并粘贴列表,然后将它们放入另一个列表中,然后剪切并粘贴。从SecureCRT运行它会更有益。
答案 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分割每一行,然后将其添加到消息框中。