Servizio al boot su raspberry zero

Il mio rpy zero è nuovo per cui il debian gestisce i servizi con systemctl. Come attivare lo script python che legge i sensori e risponde ai telegram (bot)?

# sudo vi /lib/systemd/system/sensors_bot.service

[Unit]
Description=python che risponde alle richieste telegram bot
After=multi-user.target

[Service]
Type=idle
ExecStart=/usr/bin/python /home/pi/sensors_bot.py

[Install]
WantedBy=multi-user.target

# sudo chmod 644 /lib/systemd/system/sensors_bot.service
# sudo systemctl daemon-reload
# sudo systemctl enable sensors_bot.service

Proteggere cartelle di nginx

Un modo semplice di generare utenti e password è OpenSSH:

1) genero l'utente:

sudo sh -c "echo -n 'cascafico:' >> /etc/nginx/.htpasswd"

2) lo aggiungo alla lista degli utenti:

sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"

3) scelgo la cartella da proteggere:

sudo vi /etc/nginx/sites-enabled/default

[SNIP...]

location / {

auth_basic "cartelle protetta ";
auth_basic_user_file /etc/nginx/.htpasswd;

}

[SNIP...]

4) riavvio il servizio nginx

sudo service nginx restart

 

Service account

installando motion ho creato un utente "motion", utente particolare di servizi, senza ne' casa, ne' ambiente di variabili. Ora, nel caso di un evento on_movie_end,  motion deve diventare normale per poter mandare mail con mutt, che richiede una configurazione scritta in $HOME/.muttrc

/sbin/mkhomedir_helper motion

per poter diventare motion, devo:

sudo su -s /bin/bash motion

A questo punto posso scrivere il mio .muttrc

 

Servizi, start, stop

Per poter lanciare come servizio (applicazione non interrotta dal logout) un programma, posso far così:

copiare questo template nella cartella /etc/init.d e personalizzarlo:

  • dir, la cartella del programma (per esempio /opt/etherpad)
  • cmd, il comando da lanciare (per esempio /bin/run.sh)
  • usr, opzionale l'utente proprietario del processo (altrimenti se non scelto sarà root).

Se voglio che venga lanciato all'avvio della macchina:

update-rc.d etherpad defaults

Per il controllo del servizio, basterà

service etherpad status/start/stop

Grandi file di log

Il programma motion, presumo non correttamente configurato, mi genera un sacco di linee di warning, tanto da far lievitare i file 

/var/log/kern.log
/var/log/syslog

a centinaia di Mbyte.

In attesa di sapere come filtrare per programma risolvo elevando il livello loggato:

vi /etc/rsyslog.d/50-default.conf

kern.* -/var/log/kern.log diventa
kern.err -/var/log/kern.log

*.*;auth,authpriv.none -/var/log/syslog diiventa
*.err;auth,authpriv.none -/var/log/syslog

Come rilevo dagli esempi si è trattato di agire su facility (il sistema che produce il messaggio) e priority (il livello minimo di log)

Riavvio il servizio di log:

service rsyslogd restart

 

Alternativa radicale, testata su raspbian: modifico /etc/rsyslog.conf

[SNIP]

###############
#### RULES ####
###############

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*                 /var/log/auth.log
#*.*;auth,authpriv.none         -/var/log/syslog originale
*.*;auth,authpriv.none          -/dev/null


[SNIP]

Menu Principale

Login Form