如何省略“connect:network is unreachable”消息

2024-09-30 22:26:57 发布

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

我创建了一个在引导时运行的脚本,它检查我的raspberry pi上是否有互联网连接,同时通过os.system()更新时间(注意ntp)。在

import datetime, os, socket, subprocess
from time import sleep

dir_path = os.path.dirname(os.path.abspath(__file__))

def internet(host="8.8.8.8"):
    result = subprocess.call("ping -c 1 "+host, stdout=open(os.devnull,'w'), shell=True)
    if result == 0:
        return True
    else:
        return False


timestr = time.strftime("%Y-%m-%d--%H:%M:%S")
netstatus = internet()

while netstatus == False:
    sleep(30)
    netstatus = internet()

if netstatus == True:
    print "successfully connected! updating time . . . "
    os.system("sudo bash "+dir_path+"/updatetime.sh") 
    print "time updated! time check %s"%datetime.datetime.now()

在哪里更新时间.sh包含以下内容:

^{pr2}$

这个脚本在重新启动/启动时运行,我在我们的工作场所,24/7运行这个脚本。此外,类似这些脚本的输出也保存在日志文件中。它工作得很好,但是有没有一种方法可以输出connect: Network is unreachable 如果没有网络连接?谢谢。在

编辑

我通过一个名为launch.sh的shell脚本运行check_net.py(该脚本的名称)和其他初步脚本,并将launch.sh放在crontab中,以便在启动/重新启动时运行:

@reboot sh /home/pi/launch.sh > /home/pi/logs/cronlog 2>&1

根据我在这个线程中读到的:what does '>/dev/null/ 2>&1' mean2句柄{}其中as 1处理stdout。在

我是新手。我希望看到我的stdout-但不是stderrs(在本例中,connect: Network is unreachable消息(仅此)。。在

/ogs系统


Tags: pathimport脚本truedatetimetimeossh
1条回答
网友
1楼 · 发布于 2024-09-30 22:26:57

根据评论中@shellter的link建议,我将我的cron重组为:

@reboot sh /home/pi/launch.sh 2>&1 > /home/pi/logs/cronlog | grep "connect: Network is unreachable" 

另外,我还想出了一个替代方案,它涉及使用urllib2.urlopen()检查互联网连接的不同方法:

^{pr2}$

上面两个方法中的任何一个都忽略了日志中任何connect: Network is unreachable错误输出。在

谢谢!在

/ogs系统

相关问题 更多 >