Python Docopt函数参数问题
我不完全确定如何使用所有必需的参数调用我的Python Docopt函数参数问题,python,Python,我不完全确定如何使用所有必需的参数调用我的tasklist函数。我猜我把语法弄错了。有人能指出我的愚蠢吗 代码 #!/usr/bin/python """ Description: Used for checking users logged into a list of servers. Usage: hunter.py (-u <username>) (-p <password>) (-d <domain>) (-s <FILE>)
tasklist
函数。我猜我把语法弄错了。有人能指出我的愚蠢吗
代码
#!/usr/bin/python
"""
Description:
Used for checking users logged into a list of servers.
Usage:
hunter.py (-u <username>) (-p <password>) (-d <domain>) (-s <FILE>)
hunter.py -h | --help
hunter.py --version
Options:
-u --username
-h --help Show this screen.
--version Show version.
-p --password
-d --domain
-s --serverfile=FILE
"""
from docopt import docopt
import subprocess
from subprocess import CalledProcessError
def tasklist(serverlist, domain, username):
for serverl in serverlist():
try:
print "%s Services Listed Below" % serverl
cmd = 'tasklist /V /S %s -u%s\%s /FI "USERNAME eq $s"' % serverl, domain, username, domain
print cmd
subprocess.check_output(cmd)
except CalledProcessError as e:
print(e.returncode)
def getservers(servers):
slist = open(servers).readlines()
return [s.replace('\n', '') for s in slist]
if __name__ == "__main__":
arguments = docopt(__doc__, version='0.1a')
print arguments
serverlist = getservers(arguments['--serverfile'])
print serverlist
tasklist(serverlist,(arguments['<domain>'], ['<username>']))
tasklist()
函数需要3个参数,您只需要传递两个参数。替换:
tasklist(serverlist,(arguments['<domain>'], ['<username>']))
此外,替换:
cmd = 'tasklist /V /S %s -u%s\%s /FI "USERNAME eq $s"' % serverl, domain, username, domain
与:
希望能有所帮助。谢谢我现在得到了
回溯(最近一次调用):文件“C:\Python27\hunter.py”,第44行,在任务列表中(serverlist,arguments[''),arguments['')文件“C:\Python27\hunter.py”,第26行,在serverlist()中的serverl的任务列表中:TypeError:“list”对象不可调用
谢谢我知道它一定很简单。在修复上述代码中的$s
之后,还有一个问题。我在任务列表(serverlist,arguments['',arguments[''])中的文件“C:\Python27\hunter.py”,第44行;任务列表cmd='tasklist/V/S%S-u%S\%S/FI“USERNAME eq%S”'%serverl,domain,u sername,domain TypeError:没有足够的参数用于格式化字符串`
tasklist(serverlist, arguments['<domain>'], arguments['<username>'])
for serverl in serverlist:
cmd = 'tasklist /V /S %s -u%s\%s /FI "USERNAME eq $s"' % serverl, domain, username, domain
cmd = 'tasklist /V /S %s -u%s\%s /FI "USERNAME eq %s"' % (serverl, domain, username, domain)