Python 使用Flask将脚本输出打印到网页

Python 使用Flask将脚本输出打印到网页,python,windows,python-2.7,flask,wmi,Python,Windows,Python 2.7,Flask,Wmi,为什么此脚本不将输出打印到网页? 它给了我: *正在运行(按CTRL+C退出) 消息,但没有打印到网页 from flask import Flask app = Flask(__name__) import wmi ip=['server1','server2','server3','server4','server5'] user="username" password="password" append_services=[] words = 'win32' @app.rout

为什么此脚本不将输出打印到网页?
它给了我:

*正在运行(按CTRL+C退出)

消息,但没有打印到网页

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()

您需要在一个变量中获得所有结果,生成html,然后返回,以便用户可以看到它。让我们试试:

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()
从烧瓶导入烧瓶
导入wmi
app=烧瓶(名称)
ip=['server1','server2','server3','server4','server5']
user=“username”
password=“password”
附加服务=[]
words='win32'
@附件路线(“/”)
def服务_状态():
结果=[]#返回html的结果的临时值
对于ip中的应用程序:
全球附加服务
打印('\n'+a+'\n')
c=wmi.wmi(a,用户=用户,密码=密码)
get_names=c.Win32_服务()
对于get_名称中的y:
convert=str(y.Name)
append\u services.append(转换)
附加服务=\
[w表示附加服务中的w,如果w.startswith(文字)]
对于附加服务中的l:
服务的状态=c.Win32服务(名称=l)
如果服务状态为:
对于处于服务状态的x:
convert1=str(x.State)
convert2=str(x.Caption)
results.append([a[convert1,convert2]])#append results
打印(convert1+“”+convert2)
#此部分用于生成用于返回的HTML
html=“”
对于结果中的i:
html++='Ip:'+i[0]+'
' html+='从'+i[1][0]+'到'+i[1][1] 返回html 如果名称=“\uuuuu main\uuuuuuuu”: app.run()
如果您使用
打印
它将在控制台上打印。如果要在html上打印以供用户查看,是否可以尝试将其返回(而不是打印,我从不使用此设置)或将其传递到渲染模板,然后将其放入html中。返回在('\n'+a+'\n')上工作,该('\n'+a+'\n')打印服务器名称,但返回在'convert1',covert2'上不起作用,因为返回时,我想这个功能已经停止了。您需要将它们都保存在一个变量中,当您退出循环时,返回它们。如果可以,请尝试,否则我将尝试为您获取一个示例代码。在这种情况下,我对Flask不熟悉,所以不要期望太多。谢谢@app.route('/')def index():content=“”teste”“”user=“Hero”return render_template('index.html',**locals())我得到了一个IP,但当我转到url时,我得到了一个内部服务器错误。这对你有用吗?不管怎样,哪个url,我没有尝试过,我只是假设你的代码正在工作,并改变了它导出结果的方式。我将在接下来的24小时内测试并修复代码,希望你能很好地更新:我运行了你建议的脚本。这是一种工作方式,但输出到web是毫无意义的“IP:…”从N到OI我无法理解您的评论@@