Newsgroup: it.comp.os.linux.debian
Titolo: Problemi con script all'avvio

/etc/init.d# sudo update-rc.d z-variabilidisistema-arp.sh defaults
insserv: warning: script 'K01smfpd' missing LSB tags and overrides
insserv: warning: script 'K01z-variabilidisistema.sh' missing LSB tags
and overrides
insserv: warning: script 'z-variabilidisistema-arp.sh' missing LSB tags
and overrides
insserv: warning: script 'smfpd' missing LSB tags and overrides
 
Non riesco ad aggiungere questo script, gia' messo nella cartella init.d
Ho fatto bene a nominarlo con il prefisso "Z-" visto che vorrei fosse
l'ultimo ad essere eseguito?
Come faccio a vedere la lista degli script che vengono avviati?
Infine il log di tutto il processo di avvio, degli script. dove viene
salvato (cosi da poterlo consultare)?
 


Il nuovo gestore del sistema e dei servizi e` systemd.
 
$ man systemd
 

 
C'e' un breve tutorial per poter applicare rapidamente lo script in
oggetto (eventualmente rimuovere)? 
Ho cercato di usare man ma e' fuori dalla mia "portata"... ;)
systemd e' applicato a tutte le distro?
 

 systemd e' applicato a tutte le distro?
 
https://en.wikipedia.org/wiki/Systemd#Adoption_and_Reception
 
 

M_M <sp...@the.hell> ha scritto:

Grazie per la cortese attenzione. Possibile che non esiste un meccanismo
semplificato, tipo autoexec.bat in windows, per poter avviare uno script
all'avvio?
Purtroppo non ho molto tempo per studiare questo comando, che come prima
impressione, da la sensazione di essere estremamente complicato.
Con init.d bastavano una compilazione in update.... :(
Ciao!
 

 Con init.d bastavano una compilazione in update.... :(
 
Se il tempo che hai sprecato per scrivere questo messaggio lo avessi
impiegato per leggere la prima semplice guida che ti avevo indicato,
sicuramente non avresti avuto questa impressione.
 
Essenzialmente si tratta di creare nuovo servizio in
/etc/systemd/system/
che esegua il tuo script sh.
 
-----------------------------------
[Unit]
Description=service_description
 
[Service]
ExecStart=path_to_executable
 
[Install]
WantedBy=default.target
-----------------------------------
 
http://gul.ly/10fqg
 
 

 
Per il momento ho caricato lo script tramite "applicazioni d'avvio".
Solo che dovendo caricare la configurazione del firewall e non effettua
l'operazione.... penso abbia problemi con la password. Come posso superare
l'ostacolo?
Help me...
 
 

 Help me...
 
Non mi sembra molto facile .. :-)
Posso vedere il sorgente del tuo script?
Mi spieghi il tuo rifuto per systemd?
 
 

 ha scritto:

Al momento sono sotto stress per altri impegni e la prospettiva di dover impare
anche systemd mi manda nel pallone. ;)
 
Eccolo:
 
#!/bin/bash
## "variabili di sistema" 
## Autore: 
afymme...@yopmail.com
 
## 28/11/2015  19:20
 
function cfg_firewall 
{
Percorso_file_cfg="/home/miopc/cartellafirewall/regole.conf"
 
	  echo "Cfg FIREWALL"
	  sudo /sbin/iptables-restore < $Percorso_file_cfg
}
 
#Configuro i parametri sul computer che sto utilizzando
cfg_firewall
 
exit 0
 

 exit 0
 
invece esegue un compito per cui sono richiesti i privilegi di root, ed
io penso sarebbe meglio venisse avviato in fase di avvio del sistema in
modo tale che quando il servizio di rete sale, sia subito informato
della tua configurazione firewall.
 
Per fare questo occorrerebbe creare un servizio in systemd che
praticamente all'avvio svolgesse un compito simile a quello che fa` ora
il tuo lanciatore nella sessione grafica utente.
 
L'ostacolo a quanto leggo e` da parte tua solo la scarsita` di tempo
disponibile; io pero' sono qui piu` che altro per imparare qualcosa ed
un po' di tempo ce l'ho, quindi potrei provare a fare/trovare un
servizio per iptables, ma come avrai capito, non sono esperto per cui
non posso assicurare ora che funzionera` certamente .. :-/
 
Onde evitarmi sforzi magari inutili, ti chiedo quindi prima, cosa tu ne
pensi; ti interessa se vado avanti con la creazione del nuovo servizio
per iptables perche` poi un po' di tempo per provarlo lo trovi oppure e`
meglio se chiudiamo qui, perche` cmq non hai proprio tempo per nulla e
quindi il mio sarebbe solo lavoro sprecato?
 
 

 quindi il mio sarebbe solo lavoro sprecato?
 
No, se hai un po' di pazienza l'interazione ci sara' anche se (temo) sara' un
po' lenta (faro' il possibile per cercare di rispondere al piu' presto).
Ciao!
 
 

 po' lenta (faro' il possibile per cercare di rispondere al piu' presto).
 
Sono 10 passi quindi stimo che per sapere se cosi` funge o no, non ci
metterai piu` di 5 min. (Specie se non leggi prima tutto che magari ti
"spaventi" com'e` accaduto prima con le guide di systemd ;-)
Dovresti solo seguire passo-passo  ed avere solo da copiare ed incollare
sul terminale uno dopo l'altro i vari comandi, senza troppi
sbattimenti. Ti bastera` il file-manager e l'editor di testo per
controllare, se vuoi, gli esiti dei vari comandi.
 
1)
Acquisisci i privilegi di root:
 
$ su
 
2)
Crea le sotto-directory iptables/scripts/ con gli opportuni permessi:
 
# install -v -dm755 /usr/lib/systemd/iptables/scripts
 
3)
Copia il file /home/miopc/cartellafirewall/regole.conf :
 
# cp /home/miopc/cartellafirewall/regole.conf /usr/lib/systemd/iptables/regole.conf
 
4)
Crea lo script iptables.sh
Nel terminale edita:
 
# cat > /usr/lib/systemd/iptables/scripts/iptables.sh << "EOF"
 
e dopo il segno ">" che comparira` quando darai l'Invio,
copia/incolla queste 4 righe:
 
#!/bin/sh
/sbin/iptables-restore < /usr/lib/systemd/iptables/regole.conf
exit 0
EOF
 
quindi premi nuovamente Invio.
(Nota che nella prima riga dello script lo shebang e` "#!/bin/sh")
 
5)
Attribuisci allo script i permessi corretti:
 
# chmod 700 /usr/lib/systemd/iptables/scripts/iptables.sh
 
6)
Crea il servizio "iptables.service" :
Dai nel terminale il comando:
 
# cat > /usr/lib/systemd/system/iptables.service << "EOF"
 
e dopo il segno ">" che comparira`, copia/incolla queste 14 righe (tutte in una volta sola, se vuoi):
 
[Unit]
Description=Load Iptables Rules
ConditionFileIsExecutable=/usr/lib/systemd/iptables/scripts/iptables.sh
Before=network-pre.target
 
[Service]
Type=forking
ExecStart=/usr/lib/systemd/iptables/scripts/iptables.sh
TimeoutSec=0
RemainAfterExit=yes
 
[Install]
WantedBy=multi-user.target
EOF
 
e premi nuovamente Invio.
 
7)
Crea un link in "/etc/systemd/system/multi-user.target.wants/" :
 
# ln -s '/usr/lib/systemd/system/iptables.service' '/etc/systemd/system/multi-user.target.wants/iptables.service'
 
8)
Ricarica tutti i servizi, abilita il servizio iptables ed avvialo:
 
# systemctl daemon-reload
 
# systemctl enable iptables.service
 
# systemctl start iptables.service
 
(L'estensione ".service" e` facoltativa)
 
9)
Finito. :) Puoi ora verificare lo stato del servizio:
 
# systemctl status iptables.service
 
10)
Quando puoi, riavvia e leggi poi i messaggi del journal :
 
# systemctl reboot
 
# journalctl --since=today
# journalctl -u iptables.service
# journalctl -b -p info | grep iptables
# journalctl -b -p err | grep iptables
 
 

 
Ho seguito la tua guida ma non va. Secondo me c'e' qualcosa che non va
nella riga 7.
Poi ho fatto un ls della directory dove c'e' il link e risulta rosso su
sfondo
nero mentre gli altri sono azzurri su sfondo bianco.
Cosa sbaglio?
Ciao!
 

 Cosa sbaglio?
 
Magari e` solo un apice mancante. Prova senza:


M_M <sp...@the.hell> ha scritto:

Ho rifatto tutto seguendo il passo precedente che mi avevi compilato e tutto ok!
Sbagliavo io non so cosa... ;)
Ora che tutto funziona vorrei, sempre che tu possa aiutarmi, fare un passo
ulteriore. Vorrei fare un servizio che sia attivo che setti piu' parametri
personalizzando il sistema. Ho provato ma il risultato e' che lo script si avvia
ma il servizio risulta inattivo e le variabili non vengono settate.
Conviene unificare i vari settaggi, firewall, immagine di desktop (ad esempio)
ed altro in un unico script o per ogni parametro bisogna fare un servizio?
Grazie.
 

 ed altro in un unico script o per ogni parametro bisogna fare un servizio?
 
Io penso che la regola UNIX di fare una sola cosa e farla bene, valga
sempre ...
 
Magari e` solo che non ho capito bene, ho pero` l'impressione che tu
stia sbagliando strada, perche` se la tua idea e` di personalizzare il
sistema, allora ti basta agire sui file di configurazione di sistema e
non e` necessario creare nuovi servizi.
 
A proposito di iptables, di cui so praticamente nulla: tu conosci/usi
"iptables-persistent"?
 
https://packages.debian.org/jessie/iptables-persistent
 
 

 
No, ho imparato qualche regola su internet e ho copiato qualche configurazione
di base che carico all'avvio. Ciao.
 

 Non so se questa e' la strada giusta. Aspetto tuoi eventuali consigli.
 
LOL
Te ne ho dati due:
 
Studiare un manuale, tipo ad es. questo:
http://mmpages.altervista.org/repository/PDF/demystifying-systemd.pdf
 
ma non non lo hai fatto.
 
Creare tanti script bash quante sono le diverse cose che vuoi fare ma tu
hai creato uno script unico che sembra un minestrone.
 
IMHO come hai concepito lo script non va bene; al limite una volta
creati i vari script si poteva prendere in considerazione se fosse il
caso poi di lanciarne alcuni in sequenza tramite un unico servizio, come
puoi vedere qui:
https://lists.fedoraproject.org/pipermail/devel/2011-July/153897.html
 
 
Magari ti potrebbe essere utile leggere come altri hanno scritto i loro
servizi.
Se ti interessa ho messo qui una piccola collezione liberamente
scaricabile:
http://mmpages.altervista.org/repository/anyother/blfs-systemd-units-20150210.tar.bz2
 
 
Tieni presente che in systemd esiste anche timer che ha una funzione simile a cron.
 
$ man systemd.timer
 
Esempio:
 
Il servizio fstrim.service :
 
[Unit]
Description=Discard unused blocks
[Service]
Type=oneshot
ExecStart=/usr/sbin/fstrim /
 
 
Il timer fstrim.timer per il servizio fstrim.service :
 
[Unit]
Description=Discard unused 
blocks once a week
[Timer]
OnStartupSec=10min
OnCalendar=weekly
AccuracySec=1h
Persistent=true
[Install]
WantedBy=multi­user.target
 
 
--
Just because you can configure something doesn't mean you should!

 
Sara' il clima natalizio e lo spumante ma non e' che abbia colto molto
dai link
postati... mi sembravano in lingua straniera! :) 
Scherzi a parte c'e' un corso esplicativo in italiano?
 

 WantedBy=multi­user.target
 
P.S. come faccio ad eliminare il servizio iptables, lo vorrei rinominare, e'
identico al comando e potrebbe generare confusione quando tra qualche tempo
l'avro' dimenticato.. ;)
 

 l'avro' dimenticato.. ;)
 
Stoppi il servizio:
# systemctl stop iptables.service
Lo disabiliti:
# systemctl disable iptables.service
Cancelli il link che si e` creato nella directory
"/etc/systemd/system/multi-user.target.wants/" :
# rm /etc/systemd/system/multi-user.target.wants/iptables.service
Ora non ho capito se vuoi solo rinominare il servizio, ed allora devi:
Rinominare il servizio:
# mv /usr/lib/systemd/system/iptables.service /usr/lib/systemd/system/<nuovonome>.service
Ricaricare tutti i servizi:
# systemctl daemon-reload
Abilitare il servizio rinominato:
# systemctl enable <nuovonome>.service
ed avviarlo:
# systemctl start <nuovonome>.service
Oppure  se vuoi eliminare del tutto il servizio ed allora devi:
Cancellare la directory "/usr/lib/systemd/iptables/" che contiene il tuo
script e relativo file di configurazione:
# rm -R /usr/lib/systemd/iptables/
Cancellare il servizio:
# rm /usr/lib/systemd/system/iptables.service
Ricaricare tutti i servizi:
# systemctl daemon-reload
 

 Scherzi a parte c'e' un corso esplicativo in italiano?
 
https://wiki.archlinux.org/index.php/Systemd_%28Italiano%29
 
 

 
Forse nel percorso, di rinomina, andrebbe ricreato il link con ln, ma non ho
provato. Nel dubbio ho preferito rimuoverlo e ripristinarlo da zero.
Grazie 1000!
 
 

 provato. Nel dubbio ho preferito rimuoverlo e ripristinarlo da zero.
 
Credo di aver commesso un errore prima quando ti ho indicato quel link.
Nello scrivere avevo preso spunto da miei vecchi appunti ma ultimamente
ho dovuto creare un servizio di trim per un SSD sul mio nuovo PC e mi
sono accorto che al reload di tutti i servizi, systemd ha creato
automaticamente quel link, che io appunto mi ero dimenticato di dare ..