Extinction auto du pc si idle et eth0 non sollicité [bash] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 09-03-2009 à 21:47:01
salut,
en bash, utilise plutot les tests [[ au lieu de [ ils sont bien plus pratiques et puissants.
Citation : <greybot> [[ is a shell keyword similar to (but more powerful than) the [ command. See http://mywiki.wooledge.org/BashFAQ/031 and http://mywiki.wooledge.org/BashGuide#Bash_Tests Unless you are scripting for POSIX sh we recommend [[. |
Par exemple, ils peuvent éviter des problèmes de word-spliting.
Voici ce que tu demande à bash :
Code :
|
Essaye plutot ça :
Code :
|
Mes commentaires commencent avec ## dans le script.
A adapter peux etre, je t'invite à tout relire.
Marsh Posté le 10-03-2009 à 18:23:01
Ok pour les conseils
Mais ca coince dés le premier if, je n'ai jamais le "Idle time is: $inactive".
Avec un utilisateur inactif sur tty1 et moi sur tty7, et un echo "$inactive" juste avant le if:
Code :
|
Marsh Posté le 10-03-2009 à 20:59:49
Donne moi la copie de ton terminal ( who ... ) sur http://pastebin.com par exemple. ( il doit y avoir le vrai nombre d'espace et/ou de tabs )
Marsh Posté le 10-03-2009 à 21:29:03
Code :
|
Marsh Posté le 10-03-2009 à 23:46:47
Retire le "!" dans
Code :
|
ca devrais aller.
Marsh Posté le 11-03-2009 à 07:28:24
Ca avance un peu, mais il semble que le "parameter expansion" ne soit pas pris en compte pour les autres utilisateurs (le premier semble marcher):
Code :
|
Marsh Posté le 11-03-2009 à 12:49:06
Je suis une truffe en bash, mais n'y existe t-il pas un moyen de splitter $inactive et boucler sur chaque item splitté ?
J'ai l'impression que c'est le passage à un autre utilisateur (donc autre résultat dans $inactive) qui ne se fait pas bien.
/me va jeter un oeil sur les loop/while/for.
Marsh Posté le 11-03-2009 à 15:58:08
Code :
|
Marsh Posté le 11-03-2009 à 19:56:22
J'avance bien
Code :
|
Oui bon c'est pas grand chose, mais c'est un début. La suite avec l'utilisation du net et du proc pour bientôt.
Marsh Posté le 11-03-2009 à 20:33:36
J'ai fait une version "clean" de ton code http://pastebin.com/d116b3c ( c'est important que ça soit lisible, il faut indenter correctement, etc...), mais il y a un truc qui me chagrine ( quelques modifications faites pour l'améliorer, je te laisse voir. J'ai retiré le superflus et simplifié certains trucs ) : tu teste ligne 33 si la variable est vide, mais elle l'est forcement puisque tu fait un "for" sur les valeurs successives du tableau.
Marsh Posté le 17-03-2009 à 19:28:07
Petite avancée ce soir.
Je tente de savoir si il y a de l'activité sur eth en dl (ligne RX avec ifconfig).
ethstats me donne des lignes intéressantes, mais je ne sais pas comment l'arrêter (il tourne en boucle et dans un script ca me gêne).
J'ai trouvé une piste avec ca
Code :
|
mais ca me crée des fichiers N'y a t-il pas un moyen de ne pas créer de fichier et de garder quelques secondes les données en mémoire ?
Marsh Posté le 17-03-2009 à 19:40:15
utilise une variable
Marsh Posté le 17-03-2009 à 19:41:51
Oui
Code :
|
Ca me parait pas mal, plus qu'à découper à coup d'IFS et une petite comparaison ca devrait aller.
[edit] Sûrement une subtilité du bash pour me crée le fichier
Ah oui le "echo 'blabla' > toto"
Marsh Posté le 17-03-2009 à 19:55:02
tu as ta variable, ne crée pas de fichier
Marsh Posté le 17-03-2009 à 20:36:51
Ne t'en fais pas, j'ai seulement remarqué ma bétise en exécutant un code tout fait.
Marsh Posté le 17-03-2009 à 20:52:43
Code :
|
Marsh Posté le 18-03-2009 à 21:48:23
Merci, ca me raccourcis pas mal la commande
J'ai encore quelques idées à mettre en place pour finaliser le script Ca serais dommage de se prendre un shutdown dans les dents en plein matage de film/transfert vnc ou autre.
Marsh Posté le 01-04-2009 à 23:12:12
Petite mise à jour ce soir sur une fonction permettant d'annuler l'extinction si certains processus sont lancés. Mais voila je coince sur un découpage
work in progress, donc des parties en commentaires.
Code :
|
Marsh Posté le 01-04-2009 à 23:18:47
Peux tu expliquer ce que tu veut decouper ?
ca sert à rien ca :
Code :
|
Code :
|
est emplement suffisant ^^
Marsh Posté le 01-04-2009 à 23:27:16
Dans cette partie là, je récupère le résultat de la commande ps qui est une ligne (ou non) séparée par des espaces.
Mais je ne comprend pas pourquoi le découpage ne marche pas sur ce cas là, alors que j'ai précédemment réussi à découper une chaine comprenant ":".
Code :
|
Je sens que l'IFS n'est pas bon, mais je ne sais pas quoi lui spécifier.
Marsh Posté le 02-04-2009 à 00:06:55
Peux tu expliquer en Francais éventuellement avec un exemple *clair et simple* ce que tu veut faire ?
Apprend à bien indenter, ca permet de pouvoir se relire aisement et c'est mieux aussi pour les autres...
Marsh Posté le 02-04-2009 à 09:14:15
L'indentation n'a pas supporté le copier coller.
Le but de la fonction c'est de rechercher, parmi une liste, des processus en cours d'exécution (reste à distinguer ce point si vraiment ca peut être utile) et de comparer la charge cpu qui leur sont allouée.
J'arrive à avoir les processus de la liste avec quelques infos (pid, pcpu, pmem,command) mais je ne comprend pas pourquoi la ligne 14 ne me donne pas un tableau avec plusieurs indices (j'ai tout en ${presence[0]} et rien en ${presence[1]}).
Marsh Posté le 03-04-2009 à 19:01:19
Je suis fatigué par moment
Faut le faire de demander un élément d'un string quand on découpe ce string vers une autre variable
Code :
|
Et là ca passe tout de suite mieux.
Autre soucis maintenant, comment faire pour être sur de ne pas avoir de processus lancés doublon
Petite question: est-ce possible avec un echo (et un seul) d'afficher sur la sortie standard et en même temps dans un fichier ? Existe t-il un moyen de surcharger ce mot clef ?
Marsh Posté le 07-04-2009 à 00:47:53
pour afficher et ecrire en meme temps : "echo foo | tee /tmp/pouet"
pour le reste je n'arrive pas à tout suivre...
Marsh Posté le 09-03-2009 à 21:01:34
Petite prise de tête de la soirée, comment répondre à cette belle question ?
J'ai trouvé quelques pistes de scripts mais ca ne me plais pas en l'état.
Pour le moment j'ai presque le script pour éteindre le pc si tous les utilisateurs logués sont inactifs. Presque.
Je me suis logué sur tty1 et tty7, et j'obtiens ceci après avoir exécuté (sauvagement) le script:
J'ai aussi du mal à comprendre pourquoi, exécuté en tant que root, le script ne crée pas le fichier log
A vous les studios