在python中使用cmd模块以及argparse或optparse

时间:2014-01-17 09:38:39

标签: python cmd argparse optparse

我正在尝试在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:

先谢谢。

0 个答案:

没有答案