View my profile on LinkedIn

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 :-)

12 Comments

  1. shark says:

    Su slackware posso dire che conviene creare il file /etc/rc.d/rc.firewall e salvare tutto li’, poi automaticamente verra’ caricato

  2. marco says:

    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!

  3. 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

  4. macro182 says:

    Non funziona lo stesso…
    Come direbbe Enrico Ruggeri: MI-STE-RO!

  5. 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.

  6. macro182 says:

    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

    :(

  7. Non so’ che dirti, di solito io seguo questa procedura, su ubuntu o debian liscia e funge.

  8. macro182 says:

    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? ;)

  9. 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.

  10. macro182 says:

    ~$ 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.

    :(

  11. ma lo script di iptables dov’e’ ??

    credo di essermi perso qualcosa…

Leave a Reply

hitstatus