Je suis plus jeune en python et je crois qu'il y a une réponse simple à cela, mais je n'arrive pas à le comprendre. Est-il possible de faire un appel de fonction au début de ce programme. Comme vous pouvez le voir, je cours le code et demande ensuite de l'exécuter à nouveau, c'est là que se fait l'appel de la fonction en ce moment. Cela fonctionne comme il est, mais je voudrais me débarrasser de tout sauf la boucle while et la fonction afin que je puisse nettoyer le code. Merci.Appel de fonction Python au début du programme
import subprocess
import re
print ("This will print any service that is stopped or unknown \n")
#servers
server = str(input("Enter server to query(IP Address): "))
server_list = server.split(",")
server_count = len(server_list)
#services
service = str(input("Enter service to query: "))
service_list = service.split(",")
service_count = len(service_list)
#server loop
for a in range(len(server_list)):
server_net_use = 'net use'+r' \\'+server_list[a]+r'\ipc$ /user:Administrator itv'
server_disconnect = 'net use'+r' \\'+server_list[a]+r'\ipc$ /d'
server_sc = r'\\'+server_list[a]
subprocess.check_output(server_net_use, universal_newlines=True)
#service loop
for i in range(len(service_list)):
x = subprocess.check_output(['sc', server_sc, 'query', service_list[i]], universal_newlines=True)
y = re.sub('\s+',' ',x)
if 'FAILED' in y:
print ('\n'+server_list[a]+' - '+service_list[i]+' - Unknown Service!')
elif 'STOPPED' in y:
print ('\n'+server_list[a]+' - '+service_list[i]+' - '+y.split(" ")[10])
def repeat():
#servers
server = str(input("Enter server to query(IP Address): "))
server_list = server.split(",")
server_count = len(server_list)
#services
service = str(input("Enter service to query: "))
service_list = service.split(",")
service_count = len(service_list)
#server loop
for a in range(len(server_list)):
server_net_use = 'net use'+r' \\'+server_list[a]+r'\ipc$ /user:Administrator itv'
server_disconnect = 'net use'+r' \\'+server_list[a]+r'\ipc$ /d'
server_sc = r'\\'+server_list[a]
subprocess.check_output(server_net_use, universal_newlines=True)
#service loop
for i in range(len(service_list)):
x = subprocess.check_output(['sc', server_sc, 'query', service_list[i]], universal_newlines=True)
y = re.sub('\s+',' ',x)
if 'FAILED' in y:
print ('\n'+server_list[a]+' - '+service_list[i]+' - Unknown Service!\n')
elif 'STOPPED' in y:
print ('\n'+server_list[a]+' - '+service_list[i]+' - '+y.split(" ")[10]+'\n')
while(True):
a = str(input("Do you want to query another service? y/n: "))
if 'y' in a:
subprocess.check_output(server_disconnect, universal_newlines=True)
print ("\n")
repeat()
elif 'n' in a:
subprocess.check_output(server_disconnect, universal_newlines=True)
break;
else:
print ('Enter y/n')
Il semble toujours y avoir beaucoup de code répété ici. Je suggère que la fonction 'repeat()' est inutile et peut être omise. De plus, il me semble que la boucle 'while' ne devrait pas être dans' service_checker() '(elle appelle actuellement' service_checker() 'récursivement) mais devrait être dans le programme principal à la fin du fichier. – Simon
point équitable. Je suppose que je me suis emporté en répondant à la question directe, je vais ranger le code plus tard, mais mon intention principale était de répondre à la question et donner une idée de la façon de le faire correctement ne pas réécrire 80 lignes de code. – Noelkd
@Simon vous étiez 100% à droite n'a même pas regardé le code correctement. – Noelkd