[Unit]
Description=captive portal automation
[Service]
Type=simple
ExecStart=/usr/bin/python /home/pi/do.py
Restart=on-failure
RestartSec=5
Выше приведено содержимое службы systemd под названием caportal.service
, работающей на машине с Ubuntu 14.04. Мне нужно повторять услугу каждые 30 минут. Как я могу это сделать?
/home/pi/do.py
import requests,json
import netifaces as ni
import commands as cm
gateway=ni.gateways()['default'][ni.AF_INET][0]
IPaddr=ni.ifaddresses('wlan0')[ni.AF_INET][0]['addr']
mac=ni.ifaddresses('wlan0')[ni.AF_LINK][0]['addr'].upper().replace(':','-')
ssid=cm.getoutput('iwgetid -r')
Home="http://"+gateway+":8010/"
URL=Home+"login.html"
print URL
d={}
d['IdSession']=mac
d['Language']='English'
d['refrescar']='0'
d['ip']=IPaddr
d['mac']=mac
d['DSP']=Home
d['AC']='1'
d['userlog']='vishnu'
d['userpass']='12345'
d['read']='checkbox'
d['Login']='+++Go+++'
try:
if ssid=='machCochin':
r=requests.post(URL,data=d)
print r.status_code
#raise ValueError("ERROR simulated")
else:
print "network is not machCochin"
except Exception as e:
pass
systemd предоставляет аналог заданий cron. Они называются таймером .
Вам нужно создать как файл .service
для запуска вашего скрипта, так и файл .timer
с соответствующим именем файла, чтобы запланировать его.
Что-то вроде:
[Unit]
Description=run my script
[Timer]
OnCalendar=*-*-* *:00/5:05
Persistent=true
[Install]
WantedBy=timers.target
Для запуска каждые 5 минут, например. Я позволю вам копать справочную страницу или поисковую систему, чтобы посмотреть директиву OnCalendar
или другие.
Вы даже можете запускать как пользователь, поместив оба файла в ~/.config/systemd/user/
или как root в /etc/systemd/system
Вам нужно активировать таймер, чтобы запустить его после перезагрузки
sudo systemctl enable myservice.timer
[ 1119] Добавьте --user
к вышеприведенной команде (и без sudo), если вы запускаете как пользователь из ./config
Затем запустите его с
sudo systemctl start myservice.timer
или
[ 113]