Se avete dubbi o domande sulla programmazione in generale, fatele qui

Messaggio17 dicembre 2008, 23:16 - breve script per arrestare il sistema automaticamente #26151

Un pò per gioco e un pò per necessità ho deciso di scrivere un piccolo script in bash che mi permettesse di decidere a che ora arrestare il mio sistema...per esempio quando mi addormento di sera guardando un film...lo so, lo so...potrei usare cron...!!!

Mi sembra che funzioni correttamente, ma vorrei comunque vorrei condividerlo, magari criticarlo e quindi migliorarlo :) Premetto che ho messo un'icona che mi permette di avviare comodamente il mio script e un'alra icona che mi premette di interrompere il countdown qualora decidessi di nn spegnere più il mio pc. Ho cercato di condensare le due funzioni nello stesso script, ma nn mi è venuta nessuna buona idea...ah...una cosa che nn mi piace è che in questo modo nn riesco a chiudere le applicazioni prima di arrestare...nn è una buona cosa o mi sbaglio?

Questo è quanto:
Codice: Seleziona tutto
#!/bin/bash


#spegnimento automatico del sistema ad una determinata ora

echo "1) Imposta l'ora dello spegnimento -> DIGITA: 1"
echo "2) Imposta tra quanti minuti spegnere -> DIGITA: 2"

#scelgo la modalità
read modalita

#leggo l'ora dello spegnimento
if [ ${modalita} = "1" ]
then
   echo "A che ora vuoi spegnere?"
   read ora_spegnimento
   sudo shutdown -h ${ora_spegnimento}
else
   echo "Tra quanto vuoi spegnere?"
   read intervallo_spegnimento
   sudo shutdown -h +${intervallo_spegnimento}
fi

#per terminare il countdown digitare nel terminale: sudo shutdown -c
"La potenza di Linux risiede nella cooperazione comunitaria che c'è dietro almeno quanto nel codice stesso che lo compone"
Linus Torvalds

Archlinux User #538
albelx
Novello Arciere
 
Messaggi: 49
Iscritto il: 25 aprile 2008, 12:52
Top

Messaggio17 dicembre 2008, 23:43 - breve script per arrestare il sistema automaticamente #26152

io di solito uso la combinazione # sleep Xm && halt .. (dove al posto di X metto i minuti di attesa.. oppure posso usare Xh per le ore) ^^
Ultima modifica di Berseker il 17 dicembre 2008, 23:44, modificato 1 volta in totale.
Leggete il Regolamento e cercate sempre su googleforumwiki prima di chiedere.
Tag x thread risolti: [Risolto] + Spazio messo all'inizio del titolo. Grazie

ArchWiki / Board Internazionale / Blog
Avatar utente
Berseker
Amministratore
 
Messaggi: 4398
Iscritto il: 27 settembre 2007, 10:18
Località: Lecco (provincia)
Top

Messaggio17 dicembre 2008, 23:47 - breve script per arrestare il sistema automaticamente #26154

potresti aggiungere al comando shutdown un avviso di spegnimento
Codice: Seleziona tutto
sudo shutdown -t 60 -h ${ora_spegnimento} [warning-message]

il messaggio può essere del tipo: attenzione - il sistema si spegnerà fra 60 secondi
Linux registered user # 443055
marco
Little John
 
Messaggi: 802
Iscritto il: 3 settembre 2007, 13:54
Località: Cagliari
Top

Messaggio17 dicembre 2008, 23:57 - breve script per arrestare il sistema automaticamente #26156

il comando:
Codice: Seleziona tutto
sudo shutdown -h ${ora_spegnimento}

presenta in automatico il countdown indicando ogni minuto che passa.
Ultima modifica di albelx il 17 dicembre 2008, 23:58, modificato 1 volta in totale.
"La potenza di Linux risiede nella cooperazione comunitaria che c'è dietro almeno quanto nel codice stesso che lo compone"
Linus Torvalds

Archlinux User #538
albelx
Novello Arciere
 
Messaggi: 49
Iscritto il: 25 aprile 2008, 12:52
Top

Messaggio18 dicembre 2008, 1:27 - breve script per arrestare il sistema automaticamente #26160

Berseker ha scritto:io di solito uso la combinazione # sleep Xm && halt .. (dove al posto di X metto i minuti di attesa.. oppure posso usare Xh per le ore)
Ruolo: maintainer di KDE SC
Google+ | Gittip | GitHub
Avatar utente
ndr
Amministratore
 
Messaggi: 2933
Iscritto il: 6 ottobre 2007, 0:41
Località: Lecce, Italy
Top

Messaggio18 dicembre 2008, 19:25 - breve script per arrestare il sistema automaticamente #26197

va beh...tra ieri e oggi ho perso un paio di orette e ho usato zenity per creare un minimo di interfaccia grafica. Mi pare che funzioni tutto a dovere. Una cosa che nn mi piace è che per arrestare eventualmente il countdown sono stato costretto a creare un altro lanciatore perchè non è possibile inserirlo consequenzialmente nell'algoritmo...che si sofferma sul comando shutdown fino alla fine del countdown. Ovviamente ormai è uno sfizio che mi voglio togliere...cmq ieri sera ho già testato lo script sul campo :) puntatona di star trek tng sul computer!!! Mi piacerebbe anche poter mettere un'icona di notifica che ricordi quanto tempo manca al termine del count down...è possibile ma quando metto l'icona di notifica questa aspetta fino a che nn ho cliccato sulla stessa prima di passare alla prossimo comando dell'algoritmo che in questo caso dovrebbe proprio essere lo shutdown...quindi nn funza!!! Se qualcuno ha un pò di esperienza e vuole mettergli mano magari modificando quelle cose che nn riesco a fare mi farebbe molto piacere.

Questo è quanto:
Codice: Seleziona tutto
#!/bin/bash

# spegnimento automatico del sistema ad una determinata ora

zenity --question --title='' --text="Vuoi impostare l'arresto automatico del sistema?"
res1=$?

if [ "$res1" -ne 0 ]
then
  # hai premuto annulla o hai chiuso la finestra
  zenity --warning --title="" --text="L'arresto automatico del sistema è stato annullato."
  exit 1
fi
# hai premuto "ok"
# proseguo con lo script

# mostra la finestra di dialogo e assegna quello che zenity manda un valore di ritorno
modalita=$(zenity --list --width=500 --title="" --text "Seleziona la modalità desiderata:" --column "Modalità" --column "Descrizione" 1 "Imposta l'ora dell'arresto automatico del sistema." 2 "Imposta tra quanti minuti vuoi arrestare il sistema." --separator=":")

# prende il valore di ritorno del comando precedente
res2=$?

# controlla se si è premuto OK o Annulla
if [ "$res2" -ne 0 ]
then
  # è stato premuto annulla o chiusa la finestra
  zenity --warning --title="" --text="L'arresto automatico del sistema è stato annullato."
  exit 1
fi

#leggo l'ora dello spegnimento
if [ ${modalita} = "1" ]
then
   # mostra la finestra di dialogo e assegna quello che zenity manda allo
   # standard output alla variabile "ora_spegnimento"
   # notare i "backtick" -> ` `
   ora_spegnimento=`zenity --entry --width=300 --title="" --text="A che ora vuoi arrestare il sistema?"`

   # prende il valore di ritorno del comando precedente
   res3=$?

   # controlla se si è premuto OK o Annulla
   if [ "$res3" -ne 0 ]; then
      # è stato premuto annulla o chiusa la finestra
      zenity --warning --title="" --text="L'arresto automatico del sistema è stato annullato."
      exit 1
   else
      # è stato premuto OK
      zenity --info --title="" --text="Il sistema verrà arrestato automaticmente alle $ora_spegnimento."
   fi
   sudo shutdown -h ${ora_spegnimento}
else
   # mostra la finestra di dialogo e assegna quello che zenity manda allo
   # standard output alla variabile "ora_spegnimento"
   # notare i "backtick" -> ` `
   # intervallo_spegnimento=`zenity --entry --width=300 --title="" --text="Tra quanti minuti vuoi arrestare il sistema?"`
   
   intervallo_spegnimento=$(zenity --scale --title="" --text "Tra quanti minuti vuoi arrestare il sistema?" --min-value=1 --max-value=300 --value=2 --step 1)

   # prende il valore di ritorno del comando precedente
   res4=$?

   # controlla se si è premuto OK o Annulla
   if [ "$res4" -ne 0 ]; then
      # è stato premuto annulla o chiusa la finestra
      zenity --warning --title="" --text="L'arresto automatioco del sistema è stato annullato."
      exit 1
   else
      # è stato premuto OK
      zenity --info --title="" --text="Il sistema verrà arrestato automaticamente tra $intervallo_spegnimento minuti."
      # zenity --notification --window-icon="info" --text="Countdown in corso!"
   fi
   echo "ATTENZIONE! Il sistema si arresterà automaticamente tra $intervallo_spegnimento minuti."
   sudo shutdown -h +${intervallo_spegnimento}
fi

#per terminare il countdown digitare nel terminale: sudo shutdown -c
"La potenza di Linux risiede nella cooperazione comunitaria che c'è dietro almeno quanto nel codice stesso che lo compone"
Linus Torvalds

Archlinux User #538
albelx
Novello Arciere
 
Messaggi: 49
Iscritto il: 25 aprile 2008, 12:52
Top


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

Moderatori: 4javier, aleph, veleno77, adriano, Hilinus