2017-08-05 5 views
0

Mon code est censé traquer un paquet renifla avec scapy et vérifiez quel programme envoyé/reçu le paquet, mis « Inconnu » si le programme ne se trouve paspython - Erreur lorsque vous essayez de recevoir la sortie de check_output

code:

source_software = check_output(["netstat", "-nb"], shell = True).decode() 
source_software = source_software[source_software.find(str(packet_dictionary["Port"])) : ] 
source_software = source_software[source_software.find("\n") + 2 : source_software.find("]")] 
if "Can not" not in source_software and len(source_software) > MINIMUM_LENGTH: 
    packet_dictionary["Software"] = source_software 
else: 
    packet_dictionary["Software"] = "Unknown" 

Erreurs:

File "Client.py", line 44, in add_to_list 
source_software = check_output(["netstat", "-nb"], shell = True).decode() 
File "C:\Python36\lib\subprocess.py", line 336, in check_output 
**kwargs).stdout 
File "C:\Python36\lib\subprocess.py", line 418, in run 
output=stdout, stderr=stderr) 
subprocess.CalledProcessError: Command '['netstat', '-nb']' returned non-zero 
exit status 1. 

Répondre

0

il pourrait être python ne pas l'autorisation d'exécuter netstat ou tout autre, mais vous pouvez le déboguer avec la commande suivante

source_software = check_output("netstat -nb; exit 0", stderr=subprocess.STDOUT, shell=True).decode() 
print source_software 
+0

Je l'ai oublié, je codé ce morceau de code il y a quelques semaines et est revenu aujourd'hui, j'ai oublié de le faire en tant qu'administrateur – NeXoR

0

Comme vous pouvez le voir dans la ligne de fond des exceptions, le problème est que:

Command '['netstat', '-nb']' returned non-zero exit status 1. 

... ce qui signifie qu'il est pas check_output lui-même, il est plutôt juste faire rapport que la commande que vous avez essayé d'exécuter l'utiliser, Failed et quitté avec le code 1.

Vous souhaiterez peut-être exécuter la commande dans le shell et vérifiez si cela fonctionne comme prévu.