NAS QNAP – Eseguire script personalizzati all’avvio del sistema usando un dummy package qpkg

Oltre al metodo già spiegato qui esiste un altro modo per eseguire script personalizzati all’avvio di un NAS QNAP.
Per la verità questo metodo e il precedente non sono affatto interscambiabili, anzi, spesso è utile usarli entrambi perché agiscono in due momenti differenti durante l’avvio del nas. Infatti il primo viene chiamato appena terminato il caricamento del sistema operativo, mentre questo avviene successivamente durante il caricamento dei servizi installati tramite pacchetto .qpkg (cioè tramite l’app center dell’interfaccia web del nas).
Questo secondo metodo ha anche la comoda caratteristica di poter definire in quale momento del caricamento dei servizi .qpkg essere eseguito. Vediamo come si fa.

Come anticipato nel titolo questo sistema prevede la creazione di una finta app o serizio QPKG che viene inserito nel file contenente la lista dei pacchetti installati e che a sua volta, quando il sistema lo legge, esegue l’avvio dei servizi rispettando l’ordine in cui sono stati scritti.
Con questa tecnica è quindi possibile eseguire all’avvio un qualsiasi script facendo credere al NAS di avere installato un pacchetto QPKG dummy che possiamo chiamare come vogliamo, ma che per comodità chiameremo autorun.

Ecco come fare

  1. Editare il file /etc/config/qpkg.conf con un editor come ad esempio vim
    vi /etc/config/qpkg.conf
  2. Si noterà che il file è composto da una serie di sezioni intestate da un titolo tra parentesi quadre di questo tipo: [titolo_app]. Posizionarsi appena prima del titolo della sezione del servizio che vogliamo venga eseguito dopo il nostro autorun, oppure andare alla fine del file se vogliamo venga eseguito per ultimo e aggiungere una nuova sezione [autorun] come questa:
    [autorun]
    Name = autorun
    Version = 0.1
    Author = autore_dummy
    Date = 2017-01-01
    Shell = /share/CACHEDEV1_DATA/.qpkg/autorun/autorun.sh
    Install_Path = /share/CACHEDEV1_DATA/.qpkg/autorun
    Enable = TRUE

    Come è facile intuire il pacchetto di istruzioni della sezione autorun non sono altro che un insieme di variabili che configurano il funzionamento del servizio fittizio autorun.
    In altre parole quello che stiamo facendo è imbrogliare il sistema dicendogli di avviare un servizio dummy dal nome autorun il cui file principale di avvio è definito dalla variabile Shell e che si trova installato dove indicato dala variabile Install_Path.
    È chiaro che i passaggi successivi saranno volti a realizzare fisicamente il servizio fittizio.

    Un paio di note importanti:
    • La direttiva Enable = TRUE serve per abilitare o disabilitare l’esecuzione del pacchetto. Questo ci permette di avere anche la libertà di decidere quando attivare o disattivare l’autorun.
    • Possiamo creare il servizio fittizio in qualsiasi punto del nas, ma è chiaro che è meglio stia in una directory non volatile (come sappiamo i nas della QNAP durante la fase di avvio creano un filesystem composto in parte da partizioni ramdrive e in parte da partizioni dei dischi fissi fisici installati) e la miglior candidata è sempre /share/CACHEDEV1_DATA/.
      Qui è presente la directory nascosta .qpkg/ dove stanno tutti i pacchetti installati tramite l’app center dell’interfaccia web e dato che stiamo pur sempre creando un pacchetto qpkg dummy ritengo che questo sia il posto migliore dove metterlo.
  3. Creare la directory /share/CACHEDEV1_DATA/.qpkg/autorun
    mkdir /share/CACHEDEV1_DATA/.qpkg/autorun
  4. Ed ora in questa directory creiamo il servizio dummy, che banalmente sarà un file di testo eseguibile .sh contenente le direttive bash che più ci faranno comodo.
    Quindi creiamo il file autorun.sh ricordandosi di aggiungere nella prima riga la direttiva #!/bin/sh, ed aggiungiamo tutti i comandi che vogliamo vengano eseguiti all’avvio

     vi /share/CACHEDEV1_DATA/.qpkg/autorun/autorun.sh

    L’aspetto che può avere il file è il seguente:

    #!/bin/sh
    ################################
    # COMANDI ESEGUITI ALL'AVVIO
    ################################
    #Qui i comandi

    Salvare e chiudere il file con la sequenza di pulsanti esc :wq invio (se avete usato vim come editor).

  5. Assegnare al file autorun.sh i permessi di esecuzione
    chmod +x /share/CACHEDEV1_DATA/.qpkg/autorun/autorun.sh

Al successivo riavvio il sistema leggerà il file /etc/config/qpkg.conf e quando arriverà alla sezione [autorun] eseguirà il file /share/CACHEDEV1_DATA/.qpkg/autorun/autorun.sh lanciando tutti i comandi ivi indicati.