Interessante e supportato, ottimo. Il problema è che con questo sistema non è prevista alcuna azione in fase di shutdown, cosa invece di cui io avevo bisogno, quindi come fare??
Ho deciso di sfruttare l'eseguibile Optware.sh localizzato dentro /opt/Optware.sh (soltanto dopo aver installato Optware dall'interfaccia di amministrazione però!). Questo script viene richiamato all'accensione e allo spegnimento del NAS. Mi è quindi bastato inserire il comando che volevo eseguire direttamente tra le righe di questi due eventi.
Ovviamente mi sono reso conto poco dopo che la quantità di cose che dovevo far eseguire all'avvio erano molte, non volendo modificare Optware.sh ogni 5 minuti ho deciso di creare un vero e proprio minisistema di inzializzazione, subordinato all'esecuzione di Optware.sh.
Ora spiegherò nel dettaglio cosa ho fatto, poi posterò delle tarball già belle e pronte da estrarre per partire subito con i proprio script personalizzati ;)
*La guida è pensata per chi già sa come connettersi in SSH al NAS e dare comandi basilari.
** Tutti i comandi sono senza le virgolette (")
prerequisito: aver installato Optware e averlo reso funzionante!
prerequisito opzionale: installare con il comando "ipkg" nano e wget
METODO 1
1. connettersi in ssh come utente admin
2. andare nell dir /opt
3. effettuare una copia di backup del file Optware.sh in questa maniera:
"cp Optware.sh Optware.sh.backup"
4. aprire Optware.sh con l'editor di testo preferito (suggerisco nano) e modificare questa parte:
"nano /opt/Optware.sh"
Codice: Seleziona tutto
# adding Ipkg apps into system path ...
/bin/cat /etc/profile | /bin/grep "PATH" | /bin/grep "/opt/bin" 1>>/dev/null 2>>/dev/null
[ $? -ne 0 ] && /bin/echo "export PATH=$PATH":/opt/bin:/opt/sbin >> /etc/profile
;;
stop)
/bin/echo "Disable Optware/ipkg"
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
Codice: Seleziona tutto
# adding Ipkg apps into system path ...
/bin/cat /etc/profile | /bin/grep "PATH" | /bin/grep "/opt/bin" 1>>/dev/null 2>>/dev/null
[ $? -ne 0 ] && /bin/echo "export PATH=$PATH":/opt/bin:/opt/sbin >> /etc/profile
## custom.autorun lines DO NOT TOUCH!
/bin/sh /share/MD0_DATA/.qpkg/Optware/custom.autorun/autorun.sh start >> /share/MD0_DATA/.qpkg/Optware/custom.autorun/autorun.log
## custom.autorun lines DO NOT TOUCH!
;;
stop)
## custom.autorun lines DO NOT TOUCH!
/bin/sh /share/MD0_DATA/.qpkg/Optware/custom.autorun/autorun.sh stop >> /share/MD0_DATA/.qpkg/Optware/custom.autorun/autorun.log
## custom.autorun lines DO NOT TOUCH!
/bin/echo "Disable Optware/ipkg"
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
5. creare la directory custom.autorun dentro /opt: "mkdir /opt/custom.autorun"
6. creare la sub-dir autorun.d: "mkdir /opt/custom.autorun/autorun.d"
7. creare un file autorun.sh dentro /opt/custom.autorun: "touch /opt/custom.autorun/autorun.sh"
8. renderlo eseguibile: "chmod +x /opt/custom.autorun/autorun.sh"
9. aprire il file con l'editor di testo preferito (suggerisco nano: "nano /opt/custom.autorun/autorun.sh") e scriverci le seguenti righe:
Codice: Seleziona tutto
#!/bin/sh
#
# @author: unreal64
# @info: created for qnapclub.it
# @description: personal system startup script
# it will load all the things that QNAP wont load by itself
# just need to configure the scritps path
# everything will be loaded autmotically
#
#commands used
EC_C="/bin/echo"
LOG_C="/sbin/log_tool"
AUTORUN_FILES=/share/MD0_DATA/.qpkg/Optware/custom.autorun/autorun.d/*
AUTORUN_DIR=/share/MD0_DATA/.qpkg/Optware/custom.autorun
info() {
$EC_C -e "Customized Autorun: $1"
$LOG_C --append "[Customized Autorun] $1" --type 0 --user System --ip 127.0.0.1 --comp localhost
}
error() {
$EC_C -e "Customized Autorun: ERROR $1"
$LOG_C --append "[Customized Autorun] ERROR: $1" --type 2 --user System --ip 127.0.0.1 --comp localhost
exit 1
}
start() {
if [ -d $AUTORUN_DIR ]; then
info "Launching INITIALIZATION scripts..."
for SCRIPT in $AUTORUN_FILES ; do
$EC_C "Launching $SCRIPT"
[ -x $SCRIPT ] && $SCRIPT start
done
info "Finished!"
else
error "$AUTORUN_DIR directory not found"
exit 1
fi
}
stop() {
if [ -d $AUTORUN_DIR ]; then
info "Launching TERMINATION scripts..."
for SCRIPT in $AUTORUN_FILES ; do
$EC_C "Stopping $SCRIPT"
[ -x $SCRIPT ] && $SCRIPT stop
done
info "Finished!"
else
error "$AUTORUN_DIR directory not found"
exit 1
fi
}
restart() {
stop
sleep 2
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 1
esac
exit $?
11. renderlo eseguibile: "chmod +x /opt/custom.autorun/autorun.d/base.sh"
12. aprire il file con l'editor di testo preferito (suggerisco nano: "nano /opt/custom.autorun/autorun.d/base.sh") e scriverci le seguenti righe:
Codice: Seleziona tutto
#!/bin/sh
#
# sample startup scritp to be placed in:
# /share/MD0_DATA/.qpkg/Optware/custom.autorun/autorun.d/
#
#commands used
EC_C="/bin/echo"
start() {
$EC_C "starting test script!"
}
stop() {
$EC_C "stopping test script!"
}
restart() {
stop
sleep 2
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 1
esac
exit $?
1. connettersi in ssh come utente admin
2. andare nell dir /opt: "cd /opt"
3. rinominare il file Optware.sh in Optware.sh.backup: "mv Optware.sh Optware.sh.backup"
4. scaricare questo pacchetto: "wget
http://www.unreal64.it/extra/custom.autorun.tar.gz"
5. estrarlo con il comando: "tar -zxvf custom.autorun.tar.gz"
6. (opzionale) rimuovere il pacchetto scaricato: "rm custom.autorun.tar.gz"
Fatto!! Ora potete provare a riavviare e vedere se nel log di di sistema compare qualcosa..... ;)
Ho inserito sia nella guida che nella tarball un file di esempio "base.sh". Quel file, che potete lasciare benissimo dove sta, scrive soltanto due frasi a video, in avvio e in spegnimento. Lo si può usare come base per creare i proprio script personalizzati. Basta modificare le funzioni start() e stop() a proprio piacimento.
Un esempio "reale" di come possa essere fatto uno script di avvio in questa maniera potete trovarlo in questo topic: viewtopic.php?f=15&t=3722&p=17949#p17949
ps: Ho notato che la gestione dell'avvio è un po particolare... non sempre il path /opt è disponibile, anche se gli script vengono eseguiti dopo Optware.sh... così ho deciso di lasciare tutti i path estesi per evitare problemi di sorta.