Page 3 sur 3

Re: comment automatiser un retour de commande dans une fenêtre zenity?

Posté : jeu. 24 mai 2018 12:39
par arghlub

Dernier message de la page précédente :

Salut Alain ;)
alain a écrit :Résultats des tests effectué avec Arghlub cette nuit
;) Tu m'as fait traîner cette nuit .... c'est pas dans mes habitudes de jouer au hibou :l .... :? :lol: :lol:
Alors, pour filtrer la température dans la sortie de ta commande, ça devrait pas être compliqué. On pourrait par exemple faire ça avec “awk”.

La sortie de ta commande :

Code : Tout sélectionner

aticonfig --od-gettemperature
est un truc du style :

Code : Tout sélectionner

Default Adapter - Supported device 67B1                  Sensor 0: Temperature - 60.00 C
on remarque de suite qu'on pourrait se servir du tiret "-" comme séparateur pour isoler le «60.00 C»,
donc on va "piper" la commande dans un «awk -F " - " '{print $3}'».

Petit test (détourné, vu que je n'ai pas d'ATI) :

Code : Tout sélectionner

$ echo "Default Adapter - Supported device 67B1                  Sensor 0: Temperature - 60.00 C" | awk -F " - " '{print $3}'

60.00 C
Bingo !

Donc, ajuste ta variable tempGPU dans le script ...

──────────────────────────────
Nouvelle version 6 :

Code : Tout sélectionner

#!/bin/bash
# Version6 : Afficher dans une notification rafraîchie toutes les 5 secondes
while [ 1 ]
do
    tempGPU=$(aticonfig --od-gettemperature | awk -F " - " '{print $3}')
    notify-send "tempGPU" "$tempGPU"
    sleep 5
done
Ça devrait rouler (ou pas) ;)

Re: Réalisation d'un script bash pour afficher une température en graphique

Posté : ven. 25 mai 2018 02:45
par alain
salut Arghlub Image

J'ai fais le même test que toi:

Code : Tout sélectionner

alain@lmde2 ~ $ echo "Default Adapter - Supported device 67B1                  Sensor 0: Temperature - 60.00 C" | awk -F " - " '{print $3}'
60.00 C
alain@lmde2 ~ $ 
Effectivement ça fonctionne.

En revanche un fois inséré dans le script:

Code : Tout sélectionner

#!/bin/bash
# Version6 : Afficher dans une notification rafraîchie toutes les 5 secondes
while [ 1 ]
do
    tempGPU=$(aticonfig --od-gettemperature | awk -F " - " '{print $3}')
    notify-send "tempGPU" "$tempGPU"
    sleep 5
done

Il n'y a rien dans la notification a part le titre "tempGPU" :?

J'ai donc testé la commande avec awk, mais cette fois sans copier/coller le résultat de la commande, mais en mettant directement la commande:

Code : Tout sélectionner

alain@lmde2 ~ $ aticonfig --od-gettemperature | awk -F " - " '{print $3}'
alain@lmde2 ~ $ 
Rien.... :? :l

Il faut donc croire que le résultat de la commande affecté à la variable tempGPU est différent du texte lui même copier sur le résultat de la commande.
Peut être les "-" ne sont pas considérés comme des "-" dans le résultat de la commande, tant que ce n'est pas affiché à l'écran... Je suppute la :roll: :l

Bizarrement, si je demande a awk d'affecter la seconde colonne à la variable, la ça fonctionne, étrangement, mais y a un retour:

Code : Tout sélectionner

alain@lmde2 ~ $ aticonfig --od-gettemperature | awk -F " - " '{print $2}'

Supported device 67B1
60.00 C
alain@lmde2 ~ $ 
Ce que je retrouve dans ma notification en faisant cette modification dans le script.
Comme tu vois ça me retourne un bout de la seconde colonne (Supported device 6781) et la 3éme (60.00 C). :shock:
Bref j'y comprends rien au fonctionnement de awk, mais peu importe car avec awk ($2) ou grep j'ai ma température et ça me suffit.

Sinon je viens de constater quelque chose, si je lance le script en graphique (lanceur) je ne peux plus l'arrêter autrement qu'en le tuant.
N' y aurait il pas une condition qu'on pourrait donner à "while" ou "until" pour que la boucle s'arrête par exemple sur action de la touche [echap] ?

J'espère que ça sera ma dernière question, concernant ce script :l

@+ Image

Re: Réalisation d'un script bash pour afficher une température en graphique

Posté : ven. 25 mai 2018 13:25
par arghlub
Yo Alain ;)

Alors, tout d'abord pour le awk ... je pense avoir compris ... :ugeek:
En fait, le retour de ta commande doit être sur 2 lignes, comme ça :

Code : Tout sélectionner

Default Adapter - Supported device 67B1
Sensor 0: Temperature - 60.00 C
Donc, «awk -F " - " '{print $2}'» retourne la 2ème colonne (séparée par " - ") de chaque ligne. Ce qui effectivement te donne :

Code : Tout sélectionner

Supported device 67B1
60.00 C
Pour régler cela (n'avoir que le «60.00 C»), on va demander à awk de travailler uniquement sur la 2nde ligne contenant le mot «Temperature».

Nouvelle version du script (variable tempGPU modifiée) :

Code : Tout sélectionner

#!/bin/bash
# Version 7.1 : temp du GPU ATI -Afficher dans une notification rafraîchie toutes les 5 secondes
# par arghlub - licence : aucune - faites en ce que vous voulez
while [ 1 ]
do
    tempGPU=$(aticonfig --od-gettemperature | grep Temperature | awk -F " - " '{print $2}')
    notify-send "tempGPU" "$tempGPU"
    sleep 5
done
ou mieux :

Code : Tout sélectionner

#!/bin/bash
# Version 7.2 : temp du GPU ATI -Afficher dans une notification rafraîchie toutes les 5 secondes
while [ 1 ]
do
    tempGPU=$(aticonfig --od-gettemperature | awk -F " - " '$0~/Temperature/ {print $2}')
    notify-send "tempGPU" "$tempGPU"
    sleep 5
done
Et là, ça devrait être tout bon (du moins je l'espère ! :D )

Re: Réalisation d'un script bash pour afficher une température en graphique

Posté : ven. 25 mai 2018 15:28
par arghlub
Pour ton (dernier) souci : comment arrêter le script avec une touche de raccourci ...
Dans le script, peut-être que cela serait possible en passant par la commande «trap»... mais j'en suis pas sûr et je pense qu'il faudrait en plus que le script soit au premier-plan.
Donc ça me paraît compliqué :?

:idea: par contre, voici une solution de contournement :
Tu fais un raccourci général dans ton DE et tu y entres la commande «killall» pour tuer ton processus.
Teste dans un terminal avant de faire le raccourci.

Code : Tout sélectionner

killall NOM_DE_TON_SCRIPT.sh
;)

Re: Réalisation d'un script bash pour afficher une température en graphique

Posté : ven. 25 mai 2018 16:28
par arghlub
Petit plus (inutile donc indispensable :D)

Tu peux aussi mettre un icône (tu peux utiliser les icônes de ton thème ou en mettant le chemin vers une image).

en ajoutant l'option «-i nom_icone» à la commande notify-send :

Code : Tout sélectionner

#!/bin/bash
# Version 8.1 : temp du GPU ATI -Afficher dans une notification rafraîchie toutes les 5 secondes +icône
# par arghlub - licence : aucune - faites en ce que vous voulez
while [ 1 ]
do
    tempGPU=$(aticonfig --od-gettemperature | awk -F " - " '$0~/Temperature/ {print $2}')
    notify-send -i utilities-system-monitor "tempGPU" "$tempGPU"
    sleep 5
done

Re: Réalisation d'un script bash pour afficher une température en graphique

Posté : ven. 25 mai 2018 17:28
par arghlub
encore un petit plus (après j'arrête :l )

On pourrait changer l'icône en fonction de la valeur de la température.
Exemple avec des smileys différents selon tempGPU<=60°, tempGPU entre 60 et 80° et tempGPU>80°(seuils à ajuster bien sûr et tu peux mettre les images que tu veux) :
Image

Script Bash :

Code : Tout sélectionner

#!/bin/bash
# Version 8.2 : temp du GPU ATI -Afficher dans une notification rafraîchie toutes les 5 secondes +icônes suivant T°
# par arghlub - licence : aucune - faites en ce que vous voulez
while [ 1 ]
do
    tempGPU=$(aticonfig --od-gettemperature | awk -F " - " '$0~/Temperature/ {print $2}')
    icone=face-smile                                            # icône quand la t° est cool
    if [[ $tempGPU > "80.00 C" ]] ; then icone=face-sad	        # icône quand il fait chaud
      elif [[ $tempGPU > "60.00 C" ]] ; then icone=face-plain	# icône quand c'est tiède
    fi
    notify-send -i $icone "tempGPU" "$tempGPU"
    sleep 5
done
;)

Re: Réalisation d'un script bash pour afficher une température en graphique

Posté : lun. 28 mai 2018 22:14
par alain
Bonjour.

Voici ce que donne la dernière version d'Arghlub:
Image
Ça me convient parfaitement :D
J'ai fait un raccourci clavier pour l'arrêter.

Donc pour moi c'est résolu ;)

Merci Arghlub, Tioker et Cyrille ;)

Re: [résolu]Réalisation d'un script bash pour afficher une température en graphique

Posté : mar. 29 mai 2018 08:44
par arghlub
oh yeahhh !!!
il est tout beau ton script "AMDgpuSmile" ...

Content que ça roule
;)