[HowTo] Creare un custom autorun system

Utilizzate questo forum per qualsiasi argomento che non è categorizzato altrove.
Rispondi
Avatar utente
unreal64
Messaggi: 265
Iscritto il: 08 feb 2011, 20:50
Località: Roma
Contatta:

[HowTo] Creare un custom autorun system

Messaggio da unreal64 »

Qualche tempo dopo aver acquistato un TS-219P+ ho installato il qpkg Optware(IPKG). A seguito dell'installazione di una certa quantità di applicazioni ho avuto la necessità di avviarne alcuni automaticamente all'accensione del NAS. Per risolvere questo problema ho cercato in rete ed ho trovato questo: http://wiki.qnap.com/wiki/Running_Your_ ... at_Startup
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
in questa maniera:

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
salvare e chiudere.
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 $?


10. creare un file di esempio/base in autorun.d: "touch /opt/custom.autorun/autorun.d/base.sh"
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 $?




METODO 2
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.
Running:
HW: QNAP TS-219P+ // 2 x Seagate 2TB (ST2000DL003) // APC ES 550 BE550G-GR
FIRM: v3.4.0 Build 0212
QPKGs: Optware(IPKG) // TwonkyMedia 6.0.30 // SqueezeBox 7.5.3R2
Immagine
moro70
Messaggi: 634
Iscritto il: 05 feb 2010, 22:44

Re: [HowTo] Creare un custom autorun system

Messaggio da moro70 »

ecco cosa mi esce dopo il comando " ll" inviato nella dir opt
[admin@NASBDC4A3 opt]# ll
drwxr-xr-x 18 admin administ 4.0k Mar 14 21:00 ./
drwxrwxrwx 4 admin administ 4.0k Mar 6 01:44 ../
-rwxrwxrwx 1 admin administ 2.9k Dec 30 2009 .qpkg_icon.gif*
-rwxrwxrwx 1 admin administ 4.0k Dec 30 2009 .qpkg_icon_80.gif*
-rwxrwxrwx 1 admin administ 2.8k Dec 30 2009 .qpkg_icon_gray.gif*
-rwxrwxrwx 1 Alex everyone 2.3k Mar 14 14:43 Optware.sh*
-rwxr-xr-x 1 admin administ 1.9k Feb 22 2010 Optware.sh.backup*
drwxr-xr-x 4 admin administ 4.0k Jan 23 17:15 arm-none-linux-gnueabi/
drwxr-xr-x 2 admin administ 12.0k Mar 12 13:01 bin/
-rw-r--r-- 1 admin administ 18 Mar 6 02:25 configdir
drwxr-xr-x 3 Alex everyone 4.0k Mar 14 19:50 custom.autorun/
-rw-r--r-- 1 admin administ 1.6k Mar 14 20:09 custom.autorun.tar.gz
drwxr-xr-x 3 admin administ 4.0k Feb 2 22:48 doc/
drwxr-xr-x 7 admin administ 4.0k Jun 9 2010 etc/
drwxr-xr-x 10 admin administ 4.0k Feb 2 22:54 include/
drwxr-xr-x 2 admin administ 4.0k Feb 2 22:48 info/
drwxr-xr-x 10 admin administ 4.0k Jun 9 2010 lib/
drwxr-xr-x 2 admin administ 4.0k Jan 23 20:10 libexec/
drwxr-xr-x 4 admin administ 4.0k Feb 2 22:51 local/
drwxr-xr-x 3 admin administ 4.0k May 14 2010 man/
-rw-r--r-- 1 admin administ 1.1M Mar 6 02:29 pyload.zip
drwxr-xr-x 2 admin administ 4.0k Jan 23 20:10 sbin/
drwxr-xr-x 19 admin administ 4.0k Jun 9 2010 share/
drwxr-xr-x 6 admin administ 4.0k Mar 6 03:07 spoob-pyload-d0e762fa8900/
drwxr-xr-x 2 admin administ 4.0k Jan 23 12:34 tmp/
drwxr-xr-x 5 admin administ 4.0k Jan 23 22:39 var/
Avatar utente
unreal64
Messaggi: 265
Iscritto il: 08 feb 2011, 20:50
Località: Roma
Contatta:

Re: [HowTo] Creare un custom autorun system

Messaggio da unreal64 »

ok allora fai così, ricollegati in ssh e dai questi comandi:
cd /opt/custom.autorun (invio)
cat autorun.log (invio)

incolla qui l'output del comando.
poi vai anche nel log di sistema del NAS (si accede da interfaccia web) e vedi se c'è qualcosa. fai copia incolla e fammi vedere!
Running:
HW: QNAP TS-219P+ // 2 x Seagate 2TB (ST2000DL003) // APC ES 550 BE550G-GR
FIRM: v3.4.0 Build 0212
QPKGs: Optware(IPKG) // TwonkyMedia 6.0.30 // SqueezeBox 7.5.3R2
Immagine
moro70
Messaggi: 634
Iscritto il: 05 feb 2010, 22:44

Re: [HowTo] Creare un custom autorun system

Messaggio da moro70 »

[admin@NASBDC4A3 /]# cd /opt/custom.autorun
[admin@NASBDC4A3 custom.autorun]# cat autorun.log
cat: autorun.log: No such file or directory
[admin@NASBDC4A3 custom.autorun]#
..cosa dovrei vedere nel sys log???
te lo chiedo perche' io nn l'ho mai abilitato....il sys log
Avatar utente
unreal64
Messaggi: 265
Iscritto il: 08 feb 2011, 20:50
Località: Roma
Contatta:

Re: [HowTo] Creare un custom autorun system

Messaggio da unreal64 »

per log di sistema intendo quello che si vede da interfaccia di amministrazione. tanto per capirci:
http://docs.qnap.com/nas/ita/system_logs.htm
dovrebbe esserci scritto qualcosa..............

piuttosto mi viene un dubbio.. hai mai riavviato il nas da quando hai seguito la guida??
Running:
HW: QNAP TS-219P+ // 2 x Seagate 2TB (ST2000DL003) // APC ES 550 BE550G-GR
FIRM: v3.4.0 Build 0212
QPKGs: Optware(IPKG) // TwonkyMedia 6.0.30 // SqueezeBox 7.5.3R2
Immagine
moro70
Messaggi: 634
Iscritto il: 05 feb 2010, 22:44

Re: [HowTo] Creare un custom autorun system

Messaggio da moro70 »

ok..ok.allora l'ho visto ma nn mi dsiceva nulla a riguardo.
Si il Nas l'ho riavviato tramite interfaccia web ( alimentazione/riavvia)..oppure devi riavviarlo spegnendolo fisicamente??

..per quel comando che mi hai dato cosa dici in merito alla sua risposta che dice che nn ho il file autorun.log???
Avatar utente
unreal64
Messaggi: 265
Iscritto il: 08 feb 2011, 20:50
Località: Roma
Contatta:

Re: [HowTo] Creare un custom autorun system

Messaggio da unreal64 »

altolaaa!!! cosa vedono i miei occhietti! ma che utente hai usato per copiare i files ed estrarre l'archivio? per caso "Alex"?? dovevi usare admin!! te pozzino fa a fette! : Chessygrin :

allora riloggatti in ssh (come ADMIN!) e dai questi due comandi:

Codice: Seleziona tutto

chown -R admin.administrators /opt/*
chmod +x -R /opt/custom.autorun
potrebbe metterci un pochino, non ti preoccupare ;)

appena hai finito prova a dare un:

Codice: Seleziona tutto

sh /opt/custom.autorun/autorun.sh restart
come al solito incolla l'output qui ;)

se non vedi errori, prova a riavviare!
Running:
HW: QNAP TS-219P+ // 2 x Seagate 2TB (ST2000DL003) // APC ES 550 BE550G-GR
FIRM: v3.4.0 Build 0212
QPKGs: Optware(IPKG) // TwonkyMedia 6.0.30 // SqueezeBox 7.5.3R2
Immagine
moro70
Messaggi: 634
Iscritto il: 05 feb 2010, 22:44

Re: [HowTo] Creare un custom autorun system

Messaggio da moro70 »

no..no...ma quale Alex..
io mi loggo sempre come admin, poi ho un tuente creato di nome Alex..ma via ssh nn l'ho mai usato


"[admin@NASBDC4A3 ]"...questo te lo dimostra....
Avatar utente
unreal64
Messaggi: 265
Iscritto il: 08 feb 2011, 20:50
Località: Roma
Contatta:

Re: [HowTo] Creare un custom autorun system

Messaggio da unreal64 »

eh lo so... ma anche QUESTO:
-rwxrwxrwx 1 Alex everyone 2.3k Mar 14 14:43 Optware.sh*
-rwxr-xr-x 1 admin administ 1.9k Feb 22 2010 Optware.sh.backup*
drwxr-xr-x 4 admin administ 4.0k Jan 23 17:15 arm-none-linux-gnueabi/
drwxr-xr-x 2 admin administ 12.0k Mar 12 13:01 bin/
-rw-r--r-- 1 admin administ 18 Mar 6 02:25 configdir
drwxr-xr-x 3 Alex everyone 4.0k Mar 14 19:50 custom.autorun/
dimostra qualcos'altro.....

comunque prova a dare i comandi che ti ho dato ;)
se è come penso io, poi dovrebbe andare!

c'è una cosa comunque che mi sfugge: ma tu hai seguito il metodo 1 o il metodo 2?
Running:
HW: QNAP TS-219P+ // 2 x Seagate 2TB (ST2000DL003) // APC ES 550 BE550G-GR
FIRM: v3.4.0 Build 0212
QPKGs: Optware(IPKG) // TwonkyMedia 6.0.30 // SqueezeBox 7.5.3R2
Immagine
moro70
Messaggi: 634
Iscritto il: 05 feb 2010, 22:44

Re: [HowTo] Creare un custom autorun system

Messaggio da moro70 »

allora inziiamo: ho usato il metodo 2
..poi lanciando il tuo comando , mi ha dato errore e analizzandolo mi sono reso conto che nel file autorun.sh si fa riferimento alla cartella MDO_DATA..ma il mio nas nn ha quella cartella ma ha la cartella HDA_DATA.
Ho modificato il file autorun.sh, base.sh e pyload.sh cambiando il nome MDO_DATA con HDA_DATA ed e' andato tutto ok

Grazie di tutto ;)
moro70
Messaggi: 634
Iscritto il: 05 feb 2010, 22:44

Re: [HowTo] Creare un custom autorun system

Messaggio da moro70 »

questo e' il comando..ma se riavvio nn parte

[admin@NASBDC4A3 /]# chown -R admin.administrators /opt/*
[admin@NASBDC4A3 /]# chmod +x -R /opt/custom.autorun
[admin@NASBDC4A3 /]# sh /opt/custom.autorun/autorun.sh restart
Customized Autorun: Launching TERMINATION scripts...
Stopping /share/HDA_DATA/.qpkg/Optware/custom.autorun/autorun.d/base.sh
stopping test script!
Stopping /share/HDA_DATA/.qpkg/Optware/custom.autorun/autorun.d/pyload.sh
No pyLoad running.
Quit
Stopping pyLoad daemon...
Customized Autorun: Finished!
Customized Autorun: Launching INITIALIZATION scripts...
Launching /share/HDA_DATA/.qpkg/Optware/custom.autorun/autorun.d/base.sh
starting test script!
Launching /share/HDA_DATA/.qpkg/Optware/custom.autorun/autorun.d/pyload.sh
Starting pyLoad daemon...
Daemon PID 3567
Customized Autorun: Finished!
[admin@NASBDC4A3 /]#
Avatar utente
unreal64
Messaggi: 265
Iscritto il: 08 feb 2011, 20:50
Località: Roma
Contatta:

Re: [HowTo] Creare un custom autorun system

Messaggio da unreal64 »

moro70 ha scritto:mi sono reso conto che nel file autorun.sh si fa riferimento alla cartella MDO_DATA..ma il mio nas nn ha quella cartella ma ha la cartella HDA_DATA.
finally! ecco l'arcano! ;)
anche dentro il file Optware.sh dovrai modificare MD0_DATA con HDA_DATA.
poi riavvi e vedrai che parte tutto! ^__^
(cacchio non avevo pensato a chi non ha il raid! <.< )


in particolare, le righe che ho aggiunto io in Optware.sh e che sono da modificare sono queste:

Codice: Seleziona tutto

   ## 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!

che poi sono proprio scemo! mi avevi scritto nell'altro post che avevi un ts-110, difficilmente uno si fa il raid con disco usb... non c'ho proprio pensato! : Sad :
Running:
HW: QNAP TS-219P+ // 2 x Seagate 2TB (ST2000DL003) // APC ES 550 BE550G-GR
FIRM: v3.4.0 Build 0212
QPKGs: Optware(IPKG) // TwonkyMedia 6.0.30 // SqueezeBox 7.5.3R2
Immagine
moro70
Messaggi: 634
Iscritto il: 05 feb 2010, 22:44

Re: [HowTo] Creare un custom autorun system

Messaggio da moro70 »

Ok funziona tutto....

Grazie e nn scusarti..semmia lo devo fare io che ti ho stressato : Chessygrin : : Chessygrin :

...se per altri lavori devo fare da cavia...fischia : Chessygrin :
Ribbaldone
Messaggi: 17
Iscritto il: 23 mar 2011, 21:23

Re: [HowTo] Creare un custom autorun system

Messaggio da Ribbaldone »

Ciao, ho aggiornato il firmware all'ultima release 3.5.0 e non funziona più l'avvio automatico. Tra l'altro non capisco perchè non c'è scritto nulla nel sys log. Ho provato anche a reinstallare tutto, ma non funziona ancora.

ciao
Ribbaldone
Messaggi: 17
Iscritto il: 23 mar 2011, 21:23

Re: [HowTo] Creare un custom autorun system

Messaggio da Ribbaldone »

dopo vari tentativi sembra funzionare
Avatar utente
Ak1rA
Messaggi: 15
Iscritto il: 03 nov 2011, 15:39
Località: S.P.Q.R. (OstiuM)

Re: [HowTo] Creare un custom autorun system

Messaggio da Ak1rA »

Ti volevo ringraziare perché il tuo script è l'unico che mi ha permesso di personalizzare l'avvio del QNAP. Tutti gli altri metodi non mi funzionano più dall'ultimo firmware.

Grazie ancora! : Thumbup :
QNAP TS-412 500gb x 4 Raid5
xcarontex
Messaggi: 1
Iscritto il: 27 ott 2011, 23:58

Re: [HowTo] Creare un custom autorun system

Messaggio da xcarontex »

Ho un TS-110 cercavo di far partire in automatico il solar logger 123solar
!funziona solo se da terminale lancio lo script in manuale!
ho controllato per questo e modificato i permessi dando a tutti i file del programma -R 775
/share/HDA_DATA/Qweb/123solar/

Ho usato il sistema dell'autorun sulla guida ufficiale.
http://wiki.qnap.com/wiki/Running_Your_ ... at_Startup
usando il metodo dell'autorun
ma non funziona
ho postato sul forum inglese ma non mi hanno dato una risposta valida sotto il post:
http://forum.qnap.com/viewtopic.php?f=32&t=87609

/bin/sh /share/HDA_DATA/Qweb/123solar/scripts/123solar.sh start &> /dev/null
è come se non partisse
ho provato anche con lo screen funziona solo se lo lacio in manuale
ho provato col metodo sopra scritto ho controllato la cartella dove c'è il programma e il risultato è stato lo stesso ho controllato i permessi dello script ma non và.
Chiedo una aiuto HELP!
: Blink : : Sad :
Rispondi