2017-05-26 1 views
0

Pourquoi ce script n'imprime pas la sortie sur une page Web?
Il me donne le:Imprimer une sortie de script vers une page Web à l'aide de Flask

* Fonctionnant sur http://127.0.0.1:5000/ (Appuyez sur CTRL + C pour quitter)

un message

mais rien ne se imprime à la page Web.

from flask import Flask 
app = Flask(__name__) 
import wmi 
ip=['server1','server2','server3','server4','server5'] 
user="username" 
password="password" 
append_services=[] 

words = 'win32' 


@app.route("/") 

def service_status(): 

    for a in ip: 
     global append_services 
     print ('\n'+a+'\n') 
     c = wmi.WMI (a,user=user,password=password) 
     get_names= c.Win32_Service() 



     for y in get_names: 
      convert = str(y.Name) 
      append_services.append(convert)   
      append_services=[w for w in append_services if w.startswith(words)] 


     for l in append_services: 
      state_of_services = c.Win32_Service(Name=l) 
      if state_of_services: 
       for x in state_of_services: 
        convert1 = str(x.State) 
        convert2 = str(x.Caption) 
        print convert1,"  ",convert2 

if __name__ == "__main__": 
    app.run() 
+2

Si vous utilisez 'print', il sera imprimé sur la console. Si vous voulez l'imprimer sur html pour que l'utilisateur puisse le voir, pourriez-vous essayer de le retourner (au lieu d'imprimer, je n'utilise jamais cette configuration) ou le passer à votre modèle de rendu, puis le mettre en HTML. –

+0

Le retour fonctionne sur le ('\ n' + a + '\ n') qui imprime le nom du serveur mais le retour ne fonctionne pas sur le 'convert1, "", covert2' –

+0

Parce qu'à votre retour, la fonction s'est déjà arrêtée pense. vous devez les conserver tous dans une variable, et lorsque vous quittez la boucle, renvoyez-les. –

Répondre

0

Vous devez obtenir tous les résultats dans une variable, générer votre code html revenir alors si l'utilisateur peut le voir. Essayons:

from flask import Flask 
import wmi 

app = Flask(__name__) 

ip = ['server1', 'server2', 'server3', 'server4', 'server5'] 
user = "username" 
password = "password" 
append_services = [] 

words = 'win32' 


@app.route("/") 
def service_status(): 
    results = [] # Temp for result to return to html 
    for a in ip: 
     global append_services 
     print('\n'+a+'\n') 
     c = wmi.WMI(a, user=user, password=password) 
     get_names = c.Win32_Service() 

     for y in get_names: 
      convert = str(y.Name) 
      append_services.append(convert) 
      append_services = \ 
       [w for w in append_services if w.startswith(words)] 

     for l in append_services: 
      state_of_services = c.Win32_Service(Name=l) 
      if state_of_services: 
       for x in state_of_services: 
        convert1 = str(x.State) 
        convert2 = str(x.Caption) 
        results.append([a, [convert1, convert2]]) # Append results 
        print(convert1 + "  " + convert2) 

    # This part for generate HTML for return 
    html = '' 
    for i in results: 
     html += '<h2>Ip: ' + i[0] + '</br>' 
     html += '<h3>From ' + i[1][0] + ' to ' + i[1][1] 

    return html 

if __name__ == "__main__": 
    app.run() 
+0

je reçois une adresse IP, mais quand je vais à l'URL, je reçois une erreur interne du serveur. Est-ce que cela fonctionne pour vous? –

+0

Quelle url de toute façon, je ne l'ai pas essayé, je suppose que votre code fonctionne et change la façon dont il exporte résultat –

+0

Je vais tester et corriger le code dans les prochaines 24 heures, je vous souhaite bien –