Shutdown script non si si avvia

Installazione, configurazione e uso di Ubuntu come server: web, ftp, mail, news, proxy, dns e altro.
JuniperJ
Prode Principiante
Messaggi: 2
Iscrizione: giovedì 26 dicembre 2024, 10:07
Desktop: Ubuntu Server
Distribuzione: 24.10.1
Sesso: Femminile

Shutdown script non si si avvia

Messaggio da JuniperJ »

Buon giorno,

dovrei preparare un NAS per storage files su internet. Una cosa semplice: davvero solo deposito di file senza condivisione. Avevo dubbi se provare truenas ma alla fine ho preferito ubuntu server. Più difficile da configurare ma più granulare. Sempre mmesso che si riesca a metterlo in linea :)

Ho la versione 24.04.1 su cui ho installato proftpd. Al momento lavoro ancora su una macchina virtuale per testarlo. Fin qui tutto bene. Non ho problemi con questa parte quanto con la gestione degli script in avvio / in spegnimento. In sostanza in avvio ho bisogno di spedire l'ip pubblico via mail ed ho preparato uno script mentre in spegnimento mi basta una mail che dica "server spento".

Ho trovato questa guida su internet: https://tecadmin.net/setting-up-startup ... in-ubuntu/ che mi è servita molto. Diciamo che lo script di startup va, anche se non so ancora bene cosa ho fatto. Quello che proprio non va è quello di shutdown: c'è qualcosa di sbagliato nella guida?

Oltre a questo mi aiutate ad approfondire l'intestazione degli script? Per spedire le mail uso ssmtp. Lo script è questo:

#!/bin/bash
### BEGIN INIT INFO
# Provides: IpPubblico.sh
# Required-Start: $all
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Invio Mail con Ip
### END INIT INFO

Avrei molte domande:

1) che differenza c'è tra /bin/bash e /bin/sh nell'introduzione?
2) credo che per Required-Start mi basterebbe $network e $SSMTP o sbaglio?
3) cosa va messo in Required-Stop? Da quando ho inserito lo script, ogni volta che spengo, ci mette 5 minuti: il contatore va avanti 5 minuti proprio sullo shutdown di questo servizio
4) Default-Start e Default-Stop non so a cosa si riferiscono: li ho copiati tali e quali

Grazie
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 14027
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

Re: Shutdown script non si si avvia

Messaggio da thece »

:ciao:

a me funziona

Codice: Seleziona tutto

sudo touch /etc/init.d/testScript

Codice: Seleziona tutto

sudo chmod 755 /etc/init.d/testScript

Codice: Seleziona tutto

sudo nano /etc/init.d/testScript
testScript

Codice: Seleziona tutto

#!/bin/bash

### BEGIN INIT INFO
# Provides:          testScript
# Required-Start:    $local_fs $network
# Required-Stop:     $local_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Starts testScript
# Description:       Starts testScript
#
# To enable testScript
# sudo update-rc.d testScript defaults
#
# To disable testScript
# sudo update-rc.d -f testScript remove 
#
# To check testScript activation
# sudo find /etc -iname "*testScript*" 2> /dev/null
#
### END INIT INFO

Log()
{
	local now=`date "+%x %T"`
	echo "[$now] $1" >> /var/log/testScript.log
}

SendEmail()
{
sendemail \
-f SENDER@gmail.com \
-o message-header="From: SENDER_FIRST_NAME SENDER_LAST_NAME <SENDER@gmail.com>" \
-t RECEIVER@SOMEWHERE.ORG \
-s smtp.gmail.com:587 -o tls=yes \
-xu SENDER@gmail.com \
-xp PASSWORD \
-u \"testScript\" \
-m \"$1\"
}

ACTION="$1"
PUBLIC_IP_ADDRESS=$(curl -s ifconfig.me/ip)

case "$ACTION" in

	start)
		SendEmail "Server $PUBLIC_IP_ADDRESS started"
		;;

	stop)
		SendEmail "Server $PUBLIC_IP_ADDRESS stopped"
		;;

	*)
		Log "Action: $ACTION"
		exit 1
		;;

esac

exit 0
Nel mio script io uso curl, sendmail e GMail come SMTP server

Codice: Seleziona tutto

cd /etc/init.d
sudo update-rc.d testScript defaults
sudo find /etc -iname "*testScript*" 2> /dev/null

JuniperJ ha scritto:
giovedì 26 dicembre 2024, 10:38
1) che differenza c'è tra /bin/bash e /bin/sh nell'introduzione?
2) credo che per Required-Start mi basterebbe $network e $SSMTP o sbaglio?
3) cosa va messo in Required-Stop? Da quando ho inserito lo script, ogni volta che spengo, ci mette 5 minuti: il contatore va avanti 5 minuti proprio sullo shutdown di questo servizio
4) Default-Start e Default-Stop non so a cosa si riferiscono: li ho copiati tali e quali
1) Richiama la shell indicata per l'esecuzione dello script
2...4) Leggi la documentazione LSB Init Scripts
I'm #1 so why not try: sudo rm -rf / ?
JuniperJ
Prode Principiante
Messaggi: 2
Iscrizione: giovedì 26 dicembre 2024, 10:07
Desktop: Ubuntu Server
Distribuzione: 24.10.1
Sesso: Femminile

Re: Shutdown script non si si avvia

Messaggio da JuniperJ »

Ciao Thece,

ti ringrazio molto. Vorrei fare 2 script separati: uno per l'avvio ed uno per lo spegnimento. Il tuo script invece contiene tutto quanto. Il mio script di avvio parte e fa quello che ho chiesto. Per inciso: è normale che al riavvio/allo spegnimento del server quest'ultimo chieda ogni volta 5 minuti per chiudere questo script? Nella procedura di spegnimento/riavvio si ferma alla riga job avvio.service/stop running (XXX / 5mni) dove XXX prosegue il conteggio secondo per secondo.

Per lo script di spegnimento mi hai fatto venire dubbi sulle autorizzazioni, poiché avevo dato solo CHMOD +X e non 755. Ho provato ma purtroppo non succede niente.

C'è un'altra cosa che non capisco: gli script per lo startup li creiamo nella home e poi li spostiamo - con le giuste autorizzazioni - in /ect/Init.d. Poi li attiviamo con update-rc.d XXX.sh defaults.

Gli script per lo shutdown e per il reboot invece li mettiamo semplicemente dentro /ect/rc.0.d o etc/rc6.d senza ".sh", aggiungendo davanti la l'appendice K99: non capisco come fa il sistema a sapere che ci sono e che deve attivarli facendo praticamente solo un copia. Alcuni utenti dicono che bisogna fare dei simbolic link per farli partire. Anche qui per inciso: in /ect/rc0.d tutti gli script incominciano con K01 e non con K99. Ho provato a cambiare il nome dello script in K01 spegnimento ma non va comunque.

Ultima cosa: alcuni utenti dicono che utilizzare gli script è un metodo vecchio e che sarebbe maglio passare sui servizi. Ho visto che ubuntu server installa cron in autmatico: io non volevo usarlo perchè credo sia più sicuro non aggiungere anelli alle procedure ma se la strada giusta è questa lo faccio e basta. Meglio usare cron?

Grazie
Ultima modifica di JuniperJ il lunedì 30 dicembre 2024, 13:06, modificato 1 volta in totale.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 14027
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

Re: Shutdown script non si si avvia

Messaggio da thece »

JuniperJ ha scritto:
lunedì 30 dicembre 2024, 11:01
Per inciso: è normale che al riavvio/allo spegnimento del server quest'ultimo chieda 5 minuti per chiudere il mio script? Nella procedura di spegnimento/riavvio si ferma alla riga job avvio.service/stop running (XXX / 5mni) dove XXX prosegue il conteggio secondo per secondo.
No, significa che lo script ha un qualche difetto di progettazione.


JuniperJ ha scritto:
lunedì 30 dicembre 2024, 11:01
C'è un'altra cosa che non capisco: gli script per lo startup li creiamo nella home e poi li spostiamo - con le giuste autorizzazioni - in /ect/Init.d. Poi li attiviamo con update-rc.d XXX.sh defaults.

Gli script per lo shutdown e per il reboot invece li mettiamo semplicemente dentro /ect/rc.0.d o etc/rc6.d senza ".sh" ed aggiungendo davanti la l'appendice K99. Non capisco come fa il sistema a sapere che ci sono e che deve attivarli facendo solo un copia.
Gli script li puoi creare (scrivere) dove vuoi.
Per quello che ne so io - indipendentemente dal fatto che debba essere usato in fase di avvio o shutdown - lo script deve essere (poi) collocato nella directory /etc/init.d e registrato tramite il comando (o equivalente)

Codice: Seleziona tutto

sudo update-rc.d <SCRIPT> defaults
il quale provvederà a creare i link necessari nelle directory /etc/rcX.d
E' la logica contenuta nello script che provvede a farlo eseguire (o non eseguire) nell'opportuna fase (vedi utilizzo della variabile ACTION nel mio esempio).

Guarda la traccia operativa che ti ho scritto, compreso il contenuto dello script.

[EDIT]
JuniperJ ha scritto:
lunedì 30 dicembre 2024, 11:01
Non capisco come fa il sistema a sapere che ci sono e che deve attivarli facendo solo un copia.
Per quello che ne so io il sistema dovrebbe eseguire (stupidamente) tutti gli script che trova nella directory /etc/rcX.d in ordine alfabetico.
Gli script devono essere opportunamente denominati come S[NN]NOME oppure K[NN]NOME (dove NN è un numero di 2 cifre) in base alla directory nella quale sono stati collocati.

Nella pratica, se provo a collocare uno script direttamente in una directory /etc/rcX.d, pur nominandolo correttamente, pur assegnandogli la corretta proprietà e i corretti permessi, questo non viene eseguito, almeno sulla VM Ubuntu 24.04 sulla quale ho provato.


JuniperJ ha scritto:
lunedì 30 dicembre 2024, 11:01
Ho visto che ubuntu server installa cron di default: secondo te è meglio procedere con script separati o usare e cron e basta? In termini di sicurezza intendo.
Sinceramente non conosco una distro che non installi cron
Mi spiace ma non ho capito la tua domanda, puoi spiegarti meglio? Quale sicurezza? Sicurezza che venga eseguito lo script? Sicurezza informatica? Altra forma di sicurezza?
I'm #1 so why not try: sudo rm -rf / ?
Scrivi risposta

Ritorna a “Ubuntu su server”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti