Debianizzati.Org | Forum | Blog | Guide | IRC
 
 
Forum Italiano Debian - Debianizzati.Org
Dicembre 05, 2008, 04:36:12 am *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Aiuto Ricerca Agenda Accedi Registrati  
Pagine: [1] 2   Vai giù
  Stampa  
Autore Discussione: [BASH] Script per spegnere in automatico il computer.  (Letto 2808 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
perseus
Sr. Member
****

Karma: +10/-2
Scollegato Scollegato

Messaggi: 446



Mostra profilo
« inserita:: Gennaio 23, 2006, 03:33:47 pm »

Spero di aver postato nel posto giusto.
Credo che uno script bash possa aiutarmi a risolvere il mio problemino.

Voglio, mediante cron o qualunque altro scheduler, che il mio pc si spenga da solo, ma SOLO SE NON C'E' ALCUNA ATTIVITA' per  T minuti, dopo le ore 12.30 e (AND) le 19.00.

In pratica il pc non lo uso solo io, e chi dovrebbe spegnerlo sovente si dimentica. Risultato: PC acceso per giorni senza motivo, o peggio ancora, pc a cui viene tolta brutalmente corrente.

Lo script di cui sopra dovrebbe controllare l'attività del pc. Se si usano mouse o tastiera, lo script dopo le (mettiamo) 19 controlla per (mettiamo) 5 minuti di inattività. Se qualcuno lo usa è ovvio che non gli si deve spegnere davanti, ma se lo lascia lì per più dei suddetti 5 minuti (anche se lo ha utilizzato dopo le 19) il pc si spegne, o al limite và in ibernazione. Spero di essermi spiegato bene.

Ho goolato un po' ma non ho trovato un caso come il mio. Se qualcuno ha un'idea su come aiutarmi, consigliandomi un programma o uno script magari già fatto, perchè credo che non sia un problema così infrequente.

Grazie!!!
Registrato
tindal
Administrator
Hero Member
*****

Karma: +67/-1
Scollegato Scollegato

Messaggi: 2631


Mostra profilo E-mail
« Risposta #1 inserita:: Gennaio 23, 2006, 05:05:58 pm »

per scoprire se c'è attività potrebbe essere sufficiente verificare se c'è qualche processo avviato da un utente, tipo:

ps aux |grep ^utente

ma dovresti farlo per ogni possibile utente.
al momento non mi viene in mente altro :-D

ciao
tindal
Registrato

Se ci sono molti modi diversi per fare una certa cosa, ed uno di questi ha conseguenze disastrose, di sicuro qualcuno la farà in quel modo.
le0n
Hero Member
*****

Karma: +1/-0
Scollegato Scollegato

Messaggi: 517


Mostra profilo E-mail
« Risposta #2 inserita:: Gennaio 23, 2006, 07:21:15 pm »

al momento mi viene in mente cron che a quell'orario lancia il demone sleepd che verifica se per X minuti ci sono attività di tastiera o mouse, altrimenti lancia un programma....

ovviamente quando il demone rimane attivo ma si va al bagno/cucina/giornalaio, quando si ritorna si troverà il pc spento  :-D


Hasta!
Registrato

Coltiva linux tanto windows si pianta da solo
Nessun sistema è sicuro se c'è un idiota a gestirlo!
La mia Debian sul portatile HP Pavilion dv6270EU
metaldaze
Global Moderator
Hero Member
*****

Karma: +30/-3
Scollegato Scollegato

Messaggi: 1050


Mostra profilo
« Risposta #3 inserita:: Gennaio 23, 2006, 07:31:58 pm »

Ciao perseus.

Forse non ho inquadrato bene il problema, ma non fai prima a spegnerlo tu quando sai che non é utilizzato?

Se non sei a casa c'é sempre il modo di collegarsi in ssh no?
Registrato
perseus
Sr. Member
****

Karma: +10/-2
Scollegato Scollegato

Messaggi: 446



Mostra profilo
« Risposta #4 inserita:: Gennaio 24, 2006, 10:11:32 am »

La mia idea era di mettere in piedi un sistema che si autogestisce, senza interventi esterni. Non essendo una macchina dall'uso rilevantissimo andrebbe persino bene usare solo cron, con una chiusura forzata. L'idea di controllare lo stato di attività/inattività era un diciamo fine-tuning.

Effettivamente sleepd può andare a mio favore. Devo provare se con l'opzione -s di sleepd, e al posto di un suspend faccio uno shutdown il comando viene eseguito. Poi, se funge, lo lancio dopo le ore che mi interessano mediante cron e dovrei essere a posto.

Grazie per ora!
Registrato
perseus
Sr. Member
****

Karma: +10/-2
Scollegato Scollegato

Messaggi: 446



Mostra profilo
« Risposta #5 inserita:: Aprile 07, 2006, 08:13:34 pm »

Ok ragazzi! Ho risolto, in maniera a dir poco semplicistica, ma funziona a meraviglia. Eccolo qui!

Codice:
#!/bin/bash

while [ -n \"$(ps -A|grep .kss)\" ]
do
    shutdown now -h
done
echo \"Un utente usa il pc\"
exit


Facile no?
Controllo il grep a ps -A se è presente il .kss che altro non è che lo screensaver di kde. Se lo screensaver è attivo nessuno usa il pc, no? Almeno in locale, è ovvio. Volendo si potrebbero inserire parametri di ssh e impedire lo spegnimento se qualcuno è connesso da remoto. Ma non è il mio caso. A me va bene così!

Basta inserire in /etc/crontab il richiamo, dopo l\'ora voluta, allo script di cui sopra, e il pc si spegnerà automaticamente se non utilizzato!

Ciao a tutti!!!
Registrato
metaldaze
Global Moderator
Hero Member
*****

Karma: +30/-3
Scollegato Scollegato

Messaggi: 1050


Mostra profilo
« Risposta #6 inserita:: Aprile 07, 2006, 10:32:29 pm »

All\'idea dello screensaver non avevo pensato anche perché non lo uso Tongue
Attento però che potresti tornare dal.. da una \"seduta\" e trovare tutto spento :lol:
A parte tutto, l\'importante é che tu abbia raggiunto il tuo intento Wink
Registrato
FabryProg
Sr. Member
****

Karma: +2/-1
Scollegato Scollegato

Messaggi: 254


Mostra profilo WWW
« Risposta #7 inserita:: Aprile 07, 2006, 10:58:58 pm »

Certo.. anche se io utilizzando lo screen saver non riesco ad accedere piu\' con ssh -X :-S

bella kazzata!

conviene non usarlo e spegnere il monitor!
Registrato

perseus
Sr. Member
****

Karma: +10/-2
Scollegato Scollegato

Messaggi: 446



Mostra profilo
« Risposta #8 inserita:: Aprile 07, 2006, 11:24:54 pm »

x Metaldaze, e x tutti.
Come avevo detto all\'inizio, non è un pc di importanza assoluta. Viene usato per consultare internet, ma solo di tanto in tanto. Il problema è che c\'è uno switch KVM (tastiera,monitor,mouse) per collegare 2 pc ad una postazione sola. Questo pc quindi non solo è utilizzato raramente (ma sovente viene acceso), ma anche \"nascosto\" dal terminale che è usato sempre (sulla posizione 1 dello switch). Il problema che si verificava era che uno spegneva il terminale 1, ma si dimenticava il pc 2. Avevo quindi messo in crontab lo shutdown forzato alle ore in cui si doveva spegnere. Con questo script ho introdotto una \"finezza\".
Dalle 19 in poi, ogni 5 minuti si avvia lo script. Se uno sta usando il pc non c\'è lo screensaver, e può lavorare tranquillo. Se lo molla lì 5 minuti il pc si spegne. Chi usa il pc (e si dimenticava di spegnerlo) ha il cuore in pace. Non si deve ricordare di spegnerlo, che lo stia usando, o che non lo usi più! Cravo y canela!

x FabryProg

Giuro non ho capito cosa vuoi dire. Al di là di ssh -X, che sinceramente non uso e non ho capito neanche tanto bene a cosa serve, dove sta la kazzata?

Ho solo voluto dire, a chi potesse averne bisogno, che questo è uno dei modi per fare si che una macchina si spenga quando è inattiva per un tot di tempo, dopo una certa ora.
A cosa ti riferisci quando dici
Citazione
conviene non usarlo e spegnere il monitor!
?

Insomma, il mio intento era di essere utile. Dove sta la kazzata scusa?
Registrato
FabryProg
Sr. Member
****

Karma: +2/-1
Scollegato Scollegato

Messaggi: 254


Mostra profilo WWW
« Risposta #9 inserita:: Aprile 10, 2006, 03:51:35 pm »

La cazzata era la segunete:

dato che lo screensaver utilizza (molto probabilmente) esclusivamente il SERVER X... se cerchi di accedere in ssh -X (cioe\' il tunnelling X) non t fa accedere...

ecco perche\' nn lo utilizzo e reputo lo screensaver una bella cavolata!!!

Tongue Tongue

Spero di sbagliarmi e che qualcuno mi corregga.... certe volte linux si perde in un bicchier d\'acqua :sick:
Registrato

perseus
Sr. Member
****

Karma: +10/-2
Scollegato Scollegato

Messaggi: 446



Mostra profilo
« Risposta #10 inserita:: Aprile 10, 2006, 08:30:47 pm »

Ok. Capito. Abbiamo intenzioni diverse. Per me X è fondamentale. E lo screensaver pure. Hai provato, come sopra, usando sleepd? Forse è più congeniale al tuo caso!

In ogni caso ecco a voi l\'aggiornamento. Il precedente conteneva un bug. Fuzionava solamente se ci si era già autenticati dal login di kde. In caso contrario lo screensaver non entrava in funzione, non come .kss. Ma ho visto che è presente al login di kde un processo kdm_greet. Ed ecco lo script, integrato per kde, funzionante al 100%, adatto, come ribadito 1000 volte, alle MIE necessità. Se può essere utile a qualcun\'altro...

Codice:
#!/bin/bash

while [ -n \"$(ps -A|grep greet)\" ]
do
    shutdown now -h
    exit
done

while [ -n \"$(ps -A|grep kss)\" ]
do
    shutdown now -h
    exit
done

echo \"Utente al lavoro\"
exit


Ciao!!!

Post modificato da: perseus, alle: 10/04/2006 14:31
Registrato
FabryProg
Sr. Member
****

Karma: +2/-1
Scollegato Scollegato

Messaggi: 254


Mostra profilo WWW
« Risposta #11 inserita:: Aprile 11, 2006, 04:29:21 am »

umm... ora lo modifico per far si di riavviare(o spegnere) il server quando perde la connessione adsl ...

GRAZIE :-D
Registrato

FabryProg
Sr. Member
****

Karma: +2/-1
Scollegato Scollegato

Messaggi: 254


Mostra profilo WWW
« Risposta #12 inserita:: Aprile 11, 2006, 03:51:09 pm »

Persus... scusami ma perche\' utilizzi un while come un IF?

cmq il mio script e\' il seguente:

Codice:

#!/bin/sh

NUM=0
while [ $NUM = 0 ]
do
        if [ \"$(ifconfig | grep ppp0)\" = \"\" ]
        then
            shutdown now -h
            exit
        fi

        sleep 300
done


Ancora e\' da testare cmq dovrebbe andare bene.... :-D

CIAO!
Registrato

The_Noise
Administrator
Hero Member
*****

Karma: +25/-2
Scollegato Scollegato

Messaggi: 884



Mostra profilo E-mail
« Risposta #13 inserita:: Aprile 11, 2006, 04:24:05 pm »

Codice:
NUM=0
while [ $NUM = 0 ]
do


questo lo sostituirei con

Codice:
while true
do


dato che NUM resta sempre zero.

Comunque perseus diceva di mettere lo script in un cron, anche secondo me è più pulito per non lasciare sempre lo script in esecuzione.

Per questi script non interattivi si può usare la shell dash che è POSIX compilat ma occupa molta meno ram di bash ed è più veloce in esecuzione. Io la uso anche per gli script di boot.


Ciao!
Registrato
perseus
Sr. Member
****

Karma: +10/-2
Scollegato Scollegato

Messaggi: 446



Mostra profilo
« Risposta #14 inserita:: Aprile 11, 2006, 05:14:26 pm »

Mi cogli sul fallo fabryprog! In effetti di script ne capisco qualcosina, ma di bash una cippa.

Anzi, se qualcuno può indicarmi dove trovare un sito con esempi e spiegazioni ben venga!

Di fatto nello script che uso ci sono 2 funzioni con l\'operatore OR. Se uno dei due eventi è verificato ecco che il pc si spegne.

Con l\'if, che ripeto non so usare in bash, come otterei questa condizione? Mi puoi modificare il tuo script, per esempio che verifichi lo stato di ppp e di eth1, ad esempio?
E\' solo per imparare. Non che mi serva.
Registrato
Pagine: [1] 2   Vai su
  Stampa  
 
Vai a:  

Altri Topic Correlati
Oggetto Aperta da Risposte Visite Ultimo messaggio
Avvio automatico programmi e script. Generale Belzebu 3 316 Ultimo messaggio Ottobre 12, 2005, 08:56:42 pm
da MaXeR
udev e esecuzione di script in automatico Kernel net_deity 2 200 Ultimo messaggio Novembre 22, 2005, 03:11:39 pm
da net_deity
[BASH] Script per l\'accesso locale Scripting balubeto 5 790 Ultimo messaggio Agosto 23, 2006, 01:10:25 am
da metaldaze
[Script Bash] per runnare file C Scripting cs_cruzeiro 4 606 Ultimo messaggio Ottobre 02, 2007, 01:25:16 am
da cs_cruzeiro
[risolto]: Script Bash per aggiornare il Sistema con un click Scripting njkjta 6 703 Ultimo messaggio Settembre 23, 2008, 11:33:08 pm
da njkjta
Powered by MySQL Powered by PHP Powered by SMF 1.1.7 | SMF © 2006-2008, Simple Machines LLC XHTML 1.0 valido! CSS valido!
Pagina creata in 0.098 secondi con 20 interrogazioni al database.