Avvire programmi al boot del sistema (Linux, gui indipendent)
Mi chiede Stefano in una mail in privato come fare ad avivare uno script per caricare le regole di iptables al boot del sistema. In effetti lui stesso ammette di essere ancora agli inizi perchè è una cosa che un utente un poco navigato riesce a fare senza problemi, ma nel dubbio…
Procedura:
1) con il proprio editor preferito si crei un file in /etc/init.d e chiamiamolo iptables.sh
2) scriviamoci / incolliamoci i lcontenuto dello script da eseguire, si salvi e si esca
3) si renda eseguibile lo script con
chmod 700 iptables.sh
4) per farlo avviare automagicamente si crei un link /etc/rc2.d, una cosa tipo
ln -s /etc/init.d/iptables.sh /etc/rc2.d/S99iptables
Il gioco è fatto, adesso facciamo un init 6 per riavviare e vedere se il tutto funziona.
Nota: la directory rc2.d e’ il contenitore di tutto quello che viene eseguito in avvio automatico in una debian based, altre distribuzioni usano altre cartelle, le redhat / fedora / suse based credo usino rc3.d, slackware credo rc.local. Comunque per essere certi andate a vedere nel file /etc/inittab cosa è indicato alla voce “default runlevel”
Altra nota: questa cosa e’ ovviamente INDIPENDENTE dalla gui utilizzata e dal fatto che si faccia login nel sistema o meno. Viene eseguita al boot, punto e basta.
Ultima nota: per chi si chiede cosa c’entra la signorina nella foto rammento che “BOOT” in inglese vuol dire stivale ![]()
[...] tratto da [...]
Su slackware posso dire che conviene creare il file /etc/rc.d/rc.firewall e salvare tutto li’, poi automaticamente verra’ caricato
Ti chiedo una cosa: dovrei avviare un demone che non vuole saperne di partire.
Può funzionare una soluzione del genere?
sudo chmod 700 /etc/init.d/demone_bastardo
sudo ln -s /etc/rc2.d/S99demone_bastardo /etc/init.d/demone_bastardo
ciao!
Provare non costa nulla
Ah, occhio che avevo fatto un errore, che ho corretto:
il comando non e’
ln -s /etc/rc2.d/S99iptables /etc/init.d/iptables.sh
ma
ln -s /etc/init.d/iptables.sh /etc/rc2.d/S99iptables
avevo invertito l’ordine file_da_linkare e suo_link
Non funziona lo stesso…
Come direbbe Enrico Ruggeri: MI-STE-RO!
metti dentro lo script la riga
echo puppa > /tmp/ciccia
e guarda se il file /tmp/ciccia viene creato e contiene “puppa”, questo indicherà che lo script viene eseguito, che limita un poco il raggi odi ricerac del problema.
ma se lo script lanci a mano funziona ? che utente ???
prova a impostare il chmod a 777 e vedi se al boot parte.
1. ho provato, ma il file ‘ciccia’ non viene creato
2. Sì, se lo lancio a mano funziona (sudo /etc/init.d/gnump3d)
3. Provato col 777, ma non parte lo stesso
Non so’ che dirti, di solito io seguo questa procedura, su ubuntu o debian liscia e funge.
Rieccomi!
Scusa, mi ero sbagliato nel dirti che il file ciccia non viene creato
(avevo scritto il codice dopo il comando exit0, era per quello che non funzionava)
C’è qualche speranza di capire il problema?
quindi ciccia viene creato, ergo il file in avvio automatico viene eseguito.
Questo e’ gia’ qualcosa.
Ora prova a mettere il comando
set -x
come prima riga nell’iptables.sh questo ti farà appariare a video nella console (alt-ctrl-f1) quello che viene eseguito dentro iptables.sh, magari vedi passare qualche messaggio di errore che ti aiuta.
~$ sudo /etc/init.d/gnump3d start
[sudo] password for speedy:
+ PATH=/sbin:/bin:/usr/sbin:/usr/bin
+ DAEMON=/usr/bin/gnump3d
+ NAME=gnump3d
+ DESC=gnump3d
+ test -f /usr/bin/gnump3d
+ set -e
+ test -f /etc/default/gnump3d
+ . /etc/default/gnump3d
+ STARTUPOPTS=
+ echo -n Starting gnump3d:
Starting gnump3d: + start-stop-daemon –background –start –quiet –make-pidfile –pidfile /var/run/gnump3d.pid –exec /usr/bin/gnump3d –
+ echo gnump3d.
gnump3d.
+ echo puppa
+ exit 0
Questo è quello che ottengo aggiungendo quel comando. Non so se a te dice qualcosa, ma purtroppo a me pare non ci siano messaggi illuminanti.
ma lo script di iptables dov’e’ ??
credo di essermi perso qualcosa…