密钥环使用读取Windows凭据中的服务和用户名的变量

时间:2014-08-26 15:19:36

标签: windows python-2.7 python-keyring

所以问题是我们有一个openLDAP服务器用于在办公室中验证我们的NAS驱动器。每次重新启动计算机时,用户都必须再次输入密码才能访问驱动器。只需运行批处理脚本即可在早上登录其驱动器,但是大老板不喜欢他们的密码只是放在文件中的原始文本中。

所以我一直在插入python尝试获取一个简单的程序从Windows凭据中检索他们的密码并将其丢入os.system中的NET USE:

os.system("net use X: \\\\x.x.x.x password /user:username@domain.com")

我可以从一个打开文件并从一行读取的变量中简单地从文件中检索用户名。问题是密码。

test_a = open('passtest.cfg', 'r')
test_b = open('passtest2.cfg', 'r')
test2_a = test_a.readline()
test2_b = test_b.readline()
drivepass = keyring.get_password(test2_a, test2_b)

问题似乎是密钥环因为某种原因不喜欢从变量中读取。至少我似乎无法弄清楚它为什么没有。如果我使用它,它的工作正常:

drivepass = keyring.get_password("x.x.x.x", "username@domain.com")

真正的问题是我们需要它足够简单,我们可以将它从工作站移动到工作站,只需将username@domain.com更改为文件并运行即可。所以最终产品看起来像

os.system("net use X: \\\\x.x.x.x\foldername" + drivepass + "/user:" + test2_b)

1 个答案:

答案 0 :(得分:0)

我似乎无意中解决了自己的问题。

没有工作:

drivepass = keyring.get_password(test2_a, test2_b)

使用:

drivepass = keyring.get_password("x.x.x.x", test2_b)

所以密钥环中的服务arg显然不需要变量。公平,虽然它不需要反正。希望在这条线的某个地方,这有助于其他人。