|
perseus
|
 |
« 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
|
 |
« 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
|
 |
« 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
|
|
|
|
|
metaldaze
|
 |
« 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
|
 |
« 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
|
 |
« 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! #!/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
|
 |
« Risposta #6 inserita:: Aprile 07, 2006, 10:32:29 pm » |
|
All\'idea dello screensaver non avevo pensato anche perché non lo uso 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 
|
|
|
|
|
Registrato
|
|
|
|
|
FabryProg
|
 |
« 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
|
 |
« 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 conviene non usarlo e spegnere il monitor! ? Insomma, il mio intento era di essere utile. Dove sta la kazzata scusa?
|
|
|
|
|
Registrato
|
|
|
|
|
FabryProg
|
 |
« 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!!! Spero di sbagliarmi e che qualcuno mi corregga.... certe volte linux si perde in un bicchier d\'acqua :sick:
|
|
|
|
|
Registrato
|
|
|
|
|
perseus
|
 |
« 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... #!/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
|
 |
« 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
|
 |
« 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: #!/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
|
 |
« Risposta #13 inserita:: Aprile 11, 2006, 04:24:05 pm » |
|
NUM=0 while [ $NUM = 0 ] do questo lo sostituirei con 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
|
 |
« 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
|
|
|
|
|