我正在尝试在python中编写一个交互式shell,用于管理不同类型的硬件以配置和发出一些命令集。
如何运作
因此,一旦进入交互式shell提示符,我需要输入硬件名称 HardwareA ,之后我的shell提示符将更改为 HardwareA 。一旦我得到一个特定的硬件提示,之后我输入的cmd(s)或选项将解析并调用HardwareA模块中的特定函数或方法。
为了实现这一目标,我尝试使用 argparse 或 optparse 以及 cmd 模块获得一些想法。
但到目前为止,我无法从中得到清晰的图片或任何好的文档。
所以,如果有人有某种解决方案或良好的链接,请告诉我并告诉我一些事情。
这是我的代码:
import cmd, shlex
import argparse
class ChooseHardware(cmd.Cmd):
"""Simple command processor example."""
hardware = [ 'netapp', 'isilon', 'ibm' ]
def do_netapp(self, argv):
parser = argparse.ArgumentParser(description='Process netapp argument.')
parser.add_argument('--qtree', dest='qtree',
help='qtree name')
args = parser.parse_args(argv.split())
print args
def do_isilon(self, argv):
pass
def do_ibm(self, argv):
pass
def do_EOF(self, line):
return True
def do_exit(self, s):
return True
def do_help(self, h):
print 'Unknown: hardware type'
def help_exit(self):
print "Exit the interpreter."
print "You can also use the Ctrl-D shortcut."
if __name__ == '__main__':
obj = ChooseHardware()
obj.prompt = 'cmd_prompt:'
obj.cmdloop()
输出:
yopy:/test$ python choose_hw.py
cmd_prompt:
cmd_prompt:netapp
Namespace(qtree=None)
cmd_prompt:netapp --qtree /opt/var
Namespace(qtree='/opt/var')
cmd_prompt:
先谢谢。