在python中使用cmd模块以及argparse或optparse
我试图用python编写一个交互式shell,用于管理不同类型的硬件,以配置和发出一些命令集 它将如何工作:在python中使用cmd模块以及argparse或optparse,python,cmd,argparse,optparse,Python,Cmd,Argparse,Optparse,我试图用python编写一个交互式shell,用于管理不同类型的硬件,以配置和发出一些命令集 它将如何工作: import cmd, shlex import argparse class ChooseHardware(cmd.Cmd): """Simple command processor example.""" hardware = [ 'netapp', 'isilon', 'ibm' ] def do_netapp(self, argv):
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()
因此,一旦进入交互式shell提示符,我需要键入一个硬件名称,比如说HardwareA,然后我的shell提示符将变为HardwareA。一旦我得到一个特定的硬件提示,在那之后,我输入的任何cmd(s)或option(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:
提前感谢。请仔细阅读。要求我们推荐或查找工具、库或喜爱的非站点资源的问题对于堆栈溢出来说是离题的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决问题所做的工作。请查看
plac
。这是一个基于argparse
@hpaulj构建的模块非常感谢,我会读到的。