我希望迭代一系列服务器,用户名和密码。
我们的想法是使用用户名密码对,并尝试使用服务器列表中的服务器。看起来很简单,但是我无法弄清楚如何浏览服务器列表和用户通过列表。
也许创建一个包含用户名的文件并传递给每个服务器(每行1个服务器)?
以下是我到目前为止所获得的代码。从一个文件中捕获用户+密码列表。从另一个获取服务器列表。将用户名传递对拆分为字典。将服务器粘贴在一个列表中,删除\ n(换行符)。
我尝试遍历def keycmd
函数中的每一个,但正如您所看到的,它只需要第一个用户名密码并迭代服务器。
任何想法或帮助都将不胜感激。
示例CLI&输出
c:\Python27>python rdpcheck.py -u userpass.txt -s servers.txt
#This output is based on 1 user in the userlist
CMDKEY: Credential added successfully.
192.168.1.122 User1 Passw1
CMDKEY: Credential added successfully.
192.168.1.111 User1 Passw1
CMDKEY: Credential added successfully.
192.168.1.112 User1 Passw1
CMDKEY: Credential added successfully.
192.168.1.113 User1 Passw1
CMDKEY: Credential added successfully.
192.168.1.114 User1 Passw1
CMDKEY: Credential added successfully.
192.168.1.115 User1 Passw1
CMDKEY: Credential added successfully.
192.168.1.116 User1 Passw1
CMDKEY: Credential added successfully.
192.168.1.117 User1 Passw1
CMDKEY: Credential added successfully.
192.168.1.118 User1 Passw1
CODE
#!/usr/bin/python
"""
Description:
Valid user credentials used to test RDP access to list of RDP enabled servers. credentials against a list of servers
Usage:
rdpcheck.py (-u <FILE>) (-s <FILE>)
rdpcheck.py -h | --help
rdpcheck.py --version
Options:
-h --help Show this screen.
--version Show version.
-u --user=FILE
-s --server=FILE
"""
from docopt import docopt
import subprocess
def getuserpass(userpass):
nlist = {}
with open(userpass, 'r') as f:
for line in f:
k = line.split()
nlist[k[0]] = k[1]
return nlist
def getservers(servers):
slist = open(servers).readlines()
return [s.replace('\n', '') for s in slist]
def rdpcall(userpass, servers):
print "This is doing stuff"
subprocess.call(['mstsc'])
def keycmd(listuserpass, servers):
nlist = listuserpass
for username, password in nlist.iteritems():
for server in servers:
print server, username, password
print subprocess.check_output("cmdkey /generic:TERMSERV/%s /user:%s /pass:%s"), server, username, password
if __name__ == "__main__":
arguments = docopt(__doc__, version='0.1a')
returned_userlist = getuserpass(arguments['--user'])
returned_servers = getservers(arguments['--server'])
print keycmd(returned_userlist, returned_servers)
答案 0 :(得分:0)
我不明白设置。为什么你有一个用户名,密码对的列表,你不知道他们属于哪个服务器? (对不起句子的逻辑)
话虽这么说,你的代码似乎主要做正确的事情。 (我有一些非功能性的狡辩,但没有什么可以改变代码的行为。)你得到什么输出?你能提供示例输入文件和示例输出吗?
顺便说一句:keycmd不会返回任何内容。你打算打印什么?
答案 1 :(得分:0)
似乎我是个傻瓜,并没有在列表中添加超过1个用户。所以这个帖子的结果只是我的代表下降了2 ^ _ ^。