Ich habe eine einfache Funktion, die den gleichen subprocess.popen
Befehl auf mehrere Elemente aus einer Liste aufruft. Es führt die ersten 2 Elemente in der Liste kein Problem, jedoch die Aktion auf dem dritten hängt.Ich habe Probleme mit Pythons `subprocess.popen` hängen
Es scheint, dass die process_null.communicate()
nie ausgeführt oder zumindest nicht beendet, wie ich nie die Ausgabe von dem 3. Element in der Liste bekomme. Ich habe versucht, die Liste zu ändern, aber die gleichen Ergebnisse zu erhalten. Irgendwelche Ideen, was hier passiert?
def check_list(server_list):
null_list = []
for target in server_list:
command_null="rpcclient -N -U '' {}". format (str(target))
process_null = subprocess.Popen(command_null, shell=True, stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
output_null = process_null.communicate()[0].replace('\n','')
if "NT_STATUS_ACCESS_DENIED" in output_null or "NT_STATUS_CONNECTION_REFUSED" in output_null or "NT_STATUS_UNSUCCESSFUL" in output_null:
print '[-] ' + target + '\tDenied NULL Session'
else:
print '[+] ' + target + '\tAccepted NULL Session'
null_list.append(target)
return null_list
Output
[-] 192.168.1.3 Denied NULL Session
[-] 192.168.1.65 Denied NULL Session
Entschuldigung für die Verzögerung, auch wenn Ihre Antwort auf die Frage im behebt, die es erklären tut, warum nicht nach 3 Ausführungen, aber funktioniert für die vorherigen 2. Nochmals vielen Dank für die Eingabe – iNoob
Es schafft keine Verbindung für die ersten beiden Server, dann gelingt es, eine Verbindung mit der dritten, und nur in diesem Fall versucht, Befehle von stdin nach einem erfolgreichen zu lesen Anmeldung. Aus diesem Grund sehen Sie zwei Mal "verweigert" und dann hängt es, wenn eine Verbindung hergestellt werden kann, die Probleme verursacht. – mata