我試圖做一個使用python的登錄腳本,它將嘗試登錄shell命令login -q MyUsername
並嘗試多個密碼。我已經可以生成所需的密碼,但是當我嘗試使用下面的代碼登錄時,login
命令響應我輸入了錯誤的用戶名,但我知道我正確寫入了它。澄清:我創建了一個腳本,當我已經知道用戶名而不是密碼時,使用shell命令login
登錄。下面的代碼顯示了我在做什麼(迭代密碼)。Python subprocess.Popen使用登錄腳本失敗
for password in passwordList:
p = Popen(["login","-q","MyUsername"], stdin=PIPE, stdout=PIPE) #The username MyUsername is correct, 100% sure
print repr(p)
stdout_value = p.communicate(password)[0] #
print(str(stdout_value))
if repr(stdout_value).startswith('Login incorrect\nlogin: '):
print "ERROR"
else:
print "GOOD"
break
如果我在命令login -q MyUsername
鍵入直接到終端,我得到提示,而使用腳本返回「登錄不正確」寫我的密碼。我也很困惑Popen
如何工作,以及如何寫入stdout
。
在此先感謝! (使用多個密碼嘗試登錄)我使用login
,因爲它沒有鎖定,如果用戶數據不是由超級用戶)。
謝謝,pexpect爲我的需要工作。關於第二個問題,我查看了/ etc/passwd,但該文件不包含任何散列,它包含應用程序的地址(我認爲?)例如:_mysql:*:74:74:MySQL服務器:/ var/empty:/ USR /斌/假。 – romsearcher 2014-10-27 15:20:11
@romsearcher:你在答案中看到任何其他文件名(除了'/ etc/passwd')嗎? – jfs 2014-10-27 15:40:40