def default(self, line):
tab=line.split(" ",1)
if tab[0] in self.aliases:
arg_parser = PupyArgumentParser(prog=tab[0], add_help=False)
arg_parser.add_argument('-f', '--filter', metavar='<client filter>', help="filter to a subset of all clients. All fields available in the \"info\" module can be used. example: run get_info -f 'platform:win release:7 os_arch:64'")
arg_parser.add_argument('--bg', action='store_true', help="run in background")
arg_parser.add_argument('arguments', nargs=argparse.REMAINDER, metavar='<arguments>', help="module arguments")
if len(tab)==1:
self.do_run(self.aliases[tab[0]])
else:
left=[]
try:
modargs,left=arg_parser.parse_known_args(shlex.split(tab[1]))
except PupyModuleExit:
return
#putting run arguments (-f and --bg) back at their place in case of aliases
newargs_str=""
if modargs.bg:
newargs_str+=" --bg"
if modargs.filter:
newargs_str+=" -f '"+modargs.filter.replace("'","'\\''")+"'"
newargs_str+=" "+self.aliases[tab[0]]
if left:
newargs_str+=" "+' '.join(left)
if modargs.arguments:
newargs_str+=" '"+(' '.join(modargs.arguments)).replace("'","'\\''")+"'"
self.do_run(newargs_str.strip())
else:
self.display_error("Unknown syntax: %s"%line)
评论列表
文章目录