J'ai donc fait et scanner IP/nom d'hôte et j'essaie d'obtenir la sortie à imprimer dans un fichier après qu'il exécute le ping ou ne parvient pas à exécuter le ping. Mon problème est que je reçois ces erreurs:Comment faire pour écrire Popen dans un fichier
Traceback (most recent call last):
File ".\IPlookup.py", line 59, in <module>
print >> IPtext," is down!", 'Filename:', filename
AttributeError: 'str' object has no attribute 'write'
Traceback (most recent call last):
File ".\IPlookup.py", line 55, in <module>
print >> output, 'Filename:', filename
AttributeError: 'Popen' object has no attribute 'write'
C'est ce que le code actuel ressemble
#This here code is used to scan IP's hostnames or files and ping them, then if there is 0% packet loss it does an nslookup...
import sys
import os
import subprocess
#This is supposed to print the output to a txt file but boy howdy does it not work
elif userType == '-l':
IPtext = raw_input("Please enter IP or URL: ")
response = os.system("ping -c 1 " + IPtext)
output = subprocess.Popen(['nslookup',IPtext])
if response == 0:
f = open('out.txt','w')
print >> output, 'Filename:', filename
f.close()
else:
f = open('out.txt','w')
print >> IPtext," is down!", 'Filename:', filename
f.close()
Y at-il un moyen d'obtenir à la fois la sortie str et le popen d'écrire dans un fichier ou faire J'ai besoin de changer complètement mon code?
Résolu une partie de mon problème en faisant cela au lieu
elif userType == '-l':
with open('out.txt','a') as f:
IPtext = raw_input("Please enter IP or URL: ")
response = os.system("ping -c 1 " + IPtext)
output = subprocess.Popen(['nslookup',IPtext])
if response == 0:
f.write(output)
f.close()
else:
f.write(IPtext)
f.close()
La seule chose qui ne fonctionne plus est l'impression de popen qui jette l'erreur
TypeError: Argument 1 doit être une chaîne ou lire tampon de caractères -Seulement, non popen
elif userType == 't -l' or userType == 't --logfile':
with open('Pass.txt','a') as f:
IPtext = raw_input("Please enter IP or URL: ")
response = os.system("ping -c 1 " + IPtext)
merp = subprocess.Popen(['nslookup',IPtext], stdout=subprocess.PIPE)
out, err = merp.communicate()
if response == 0:
f.write('\n')
f.write(out)
f.close()
else:
with open('Fail.txt','a') as f:
f.write('\n')
f.write(IPtext)
f.close()