当终端应该使用python循环连续打印时,它停止打印

2024-04-27 00:03:53 发布

您现在位置:Python中文网/ 问答频道 /正文

当我用python和ngrok连接时,我可以用python重新启动我的帐户。我在安装了ubuntu14.04的笔记本电脑上运行这些脚本。在

python脚本如下所示:

#!/usr/bin/env python3
# -*- coding:utf-8 -*-

import os
import urllib
import http
from urllib.request import urlopen
import http.cookiejar
import time
import urllib.request, urllib.parse, urllib.error
import urllib.request, urllib.error, urllib.parse


def is_online():
    """check net available"""
    pattern = "location.href='http://210.77.16.21:80"
    with urlopen('http://www.baidu.com') as fh:
        data = fh.read().decode()
    if len(data) < 500 or pattern in data:
        return False
    else:
        return True

def login(user, password):
    login_url = 'http://210.77.16.21/eportal/InterFace.do?method=login'
    login_data = {
        'userId': user,
        'password': password,
        'service': '',
        'queryString': 'wlanuserip=0bc386d9e643d188b011a0d00c9b5c40&wlanacname=5fcbc245a7ffdfa4&ssid=&nasip=2c0716b583c8ac3cbd7567a84cfde5a8&mac=53ba540bde596b811a6d5617a86fa028&t=wireless-v2&url=2c0328164651e2b4f13b933ddf36628bea622dedcc302b30',
        'operatorPwd': '',
        'validcode': ''
    }
    login_data = urllib.parse.urlencode(login_data)
    cookie = http.cookiejar.CookieJar()
    cookie_support = urllib.request.HTTPCookieProcessor(cookie)
    opener = urllib.request.build_opener(cookie_support, urllib.request.HTTPHandler)
    urllib.request.install_opener(opener)
    request = urllib.request.Request(url=login_url, data=login_data.encode())
    response = urllib.request.urlopen(request)
    html = response.read().decode()
    logined = True
    if "success" in html:
        pass
    else:
        logined = False
    return logined

if __name__ == '__main__':
    while True:
        print (time.strftime('%l:%M%p %Z on %b %d, %Y'))
        if is_online():
            print ("++++++++++ you have already been online ++++++++++\n")
        else:
            print ("---------- you have lost net connection ----------\n")
            os.system('sudo hclient -r -v eth0')
            os.system('sudo dhclient -v eth0')
            login('username', 'password')
            os.system('./ngrok.sh')
        time.sleep(20)

python脚本调用的bash脚本如下所示:

^{pr2}$

当在终端中运行python3 ./net.py时,它应该每隔20秒连续打印一次信息。在

然而,有线的问题是,终端会在一段时间后停止打印并卡在这里:

12:17AM CST on Aug 06, 2017
++++++++++ you have already been online ++++++++++
12:18AM CST on Aug 06, 2017
++++++++++ you have already been online ++++++++++
12:18AM CST on Aug 06, 2017
++++++++++ you have already been online ++++++++++
12:18AM CST on Aug 06, 2017
++++++++++ you have already been online ++++++++++
12:19AM CST on Aug 06, 2017
++++++++++ you have already been online ++++++++++
12:19AM CST on Aug 06, 2017

错误似乎发生在print (time.strftime('%l:%M%p %Z on %b %d, %Y'))行之后。在

我已经测试了两次,第一次是在运行大约12小时后卡住的,第二次是不到20分钟就卡住了。在

我还使用命令pa -aux |grep python3检查了python脚本的状态,如下所示:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
keshawn  26339  0.0  0.1  59360 15656 pts/0    S+   00:00   0:00 python3 ./net.py

那么,有人能解释为什么会发生这种奇怪的现象吗?在


Tags: import脚本youhttpdataonrequesthave