Imaginsystems


Tecniche di Programmazione - Codici Sorgenti - News Informatiche
Archivio Posts
Anno 2014

Anno 2013

Anno 2012
Statistiche
  • Views Home Page: 71.573
  • Views Posts: 542.176
  • Views Gallerie: 0
  • n° Posts: 210
  • n° Commenti: 224

Raspberry Pi - Script per avvio programmi allo start-up

Raspberry Pi - Script per avvio programmi allo start-up


 

Oggi vi voglio parlare di come si scrive uno script che si avvia automaticamente. Può servire per esempio quando una alcuni programmi che non riescono a partire di default all’avvio. Vi spiegherò come configurare l'avvio dello script in automatico o quando lo volete voi.

Questo script avvierà in automatico la mappatura della cartella di rete.

Distribuzione di riferimento: Raspbian ultima versione


Prima di cominciare creiamo una cartella 

 CODICE DA SCRIVERE NEL TERMINALE :

sudo mkdir /mnt/sambashare
sudo chown -R pi /mnt/sambashare
sudo chmod -R 777 /mnt/sambashare


Creare lo script

La prima cosa da fare è creare lo script. Uno script è un pezzo di codice che una volta reso eseguibile viene appunto eseguito e svolge le azioni per il quale è stato scritto.
Creiamo lo script chiamato per esempio SMBShare:

 CODICE DA SCRIVERE NEL TERMINALE :

sudo nano /etc/init.d/SMBShare


Si aprirà l’editor nano completamente vuoto. Copiateci tutto il seguente Script :

 CODICE DA SCRIVERE NEL TERMINALE :

#! /bin/sh
# /etc/init.d/SMBShare

### BEGIN INIT INFO
# Provides:          SMBShare
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: SMBShare Automatic mount Folder Share
# Description:       SMBShare Automatic mount Folder Share
### END INIT INFO

# If you want a command to always run, put it here
start() {
        echo -n "Starting SMBShare : "
        ### Create Mount HD ###
### run application you want to start ###
  sudo mount -t cifs //IP_address/scan /mnt/sambashare -o uid=1000,iocharset=utf8,username="nome_utente",password="password",sec=ntlm
echo
}
# Restart the service SMBShare
stop() {
        echo -n "Stopping SMBShare :"
        ### Delate Mount HD  ###
### kill application you want to stop ###
sudo umount /mnt/sambashare
        echo
}
### main logic ###
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        status SMBShare
        ;;
  restart|reload|condrestart)
        stop
        start
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart|reload|status}"
        exit 1
esac
exit 0


Una volta scritto in accordo alle vostre necessita date un bel CTRL-O per salvare e CTRL-X  per uscire dall’editor nano.
 
Fate però attenzione a non avviare programmi che richiedono risposte da parte dell’utente. Per esempio non fate partire programmi che richiedono di dare conferme tipo –y o –n ( -s o -n) altrimenti lo script bloccherà l’avvio del raspberry aspettandosi appunto un vostro input. Con i programmi sopra, una volta configurati (dopo il primo avvio) lo script funziona benissimo.

Rendere lo script eseguibile e funzionante
 
Adesso che il codice è pronto dobbiamo fare in modo che non sia considerato un semplice pezzo di testo (anche poco comprensibile…) ma bensì un codice da eseguire. Vediamo come…

Rendiamo lo script eseguibile con:

CODICE DA SCRIVERE NEL TERMINALE :

sudo chmod 755 /etc/init.d/SMBShare

 
Facciamo un test

Per vedere se funzione digitiamo da terminale i seguenti comandi.

Per avviare lo script

CODICE DA SCRIVERE NEL TERMINALE :

sudo service SMBShare start


mentre per stopparlo 

CODICE DA SCRIVERE NEL TERMINALE :

sudo service SMBShare stop


Nota: seguendo pedissequamente la guida originale dovrei usare:

CODICE DA SCRIVERE NEL TERMINALE :

sudo /etc/init.d/SMBShare start  

sudo /etc/init.d/SMBShare stop


Io ho preferito usare la forma:  service SMBShare start|stop mostrata sopra perché si ricorda decisamente più facilmente ed è comunque efficacie. Nel caso potete anche usare i comandi start|stop|restart|reload|status;

Far eseguire lo script automaticamente allo start-up

Per far eseguire automaticamente lo script allo start-up del sistema dare il commando:

CODICE DA SCRIVERE NEL TERMINALE :

sudo update-rc.d SMBShare defaults


Nota: nel mio caso l’ultimo commando non è stato dato perché preferisco scegliere io quando e se far partire I servizi che ho raccolto nello script. Quindi una volta avviato il sistema, per avviare i servizi scelti in un colpo solo do il comando:

CODICE DA SCRIVERE NEL TERMINALE :

sudo service SMBShare start


E tutto funziona senza problemi :)

Se volete rimuovere lo script automatico all’avvio e usarlo come lo uso io non date il comando sudo update-rc.d SMBShare defaults oppure se, presi dall’entusiasmo di copiare e incollare comandi sul terminale avete erroneamente beccato anche l’ultimo, nessun problema…lo rimuovete con:

CODICE DA SCRIVERE NEL TERMINALE :

sudo update-rc.d -f SMBShare remove


By ImaginSystems & Queen Gin  
Categoria: Raspberry Pi
venerdì, 20 giu 2014 Ore. 11.22
Ora e Data
Mappa
Blogs Amici
    Copyright © 2002-2007 - Blogs 2.0
    dotNetHell.it | Home Page Blogs
    ASP.NET 2.0 Windows 2003