我创建了一个在引导时运行的脚本,它检查我的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' mean,2
句柄{1
处理stdout
。在
我是新手。我希望看到我的stdout
-但不是stderr
s(在本例中,connect: Network is unreachable
消息(仅此)。。在
/ogs系统
根据评论中@shellter的link建议,我将我的cron重组为:
另外,我还想出了一个替代方案,它涉及使用
^{pr2}$urllib2.urlopen()
检查互联网连接的不同方法:上面两个方法中的任何一个都忽略了日志中任何
connect: Network is unreachable
错误输出。在谢谢!在
/ogs系统
相关问题 更多 >
编程相关推荐