Я создал скрипт, который запускается при загрузке, который проверяет, есть ли подключение к Интернету на моем Raspberry Pi, и в то же время обновляет время (забота о ntp
) - через os.system()
.
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()
, где updatetime.sh содержит следующее:
service ntp stop
ntpd -q -g
service ntp start
этот скрипт выполняется при перезагрузке / загрузке, и я запускаю его на нашем рабочем месте, 24/7.Кроме того, выходные данные из таких сценариев сохраняются в файле журнала.он работает нормально, но есть ли способ, как НЕ для вывода connect: Network is unreachable
, если нет подключения к интернету?спасибо.
edit
я запускаю этот скрипт через скрипт оболочки с именем launch.sh
, который запускает check_net.py
(имя этого скрипта), и другие предварительные скрипты,и я поместил launch.sh
в свой crontab для запуска при загрузке / перезагрузке:
@reboot sh /home/pi/launch.sh > /home/pi/logs/cronlog 2>&1
из того, что я прочитал в этой теме: что значит '> / dev / null / 2> & 1'означают , 2
ручки stderr
, где 1
ручки stdout
.
Я новичок в этом.Я хочу видеть мои stdout
- но не stderr
s (в данном случае connect: Network is unreachable
сообщений (только) ..
/ ogs