Résolu le 15-11-18 Réalisation d'un script bash pour afficher une température en graphique

Avatar du membre
arghlub
Administrateur du site
Messages : 11752
Enregistré le : dim. 21 mai 2017 08:19
Localisation : Provence

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

Message 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) ;)
Tour1 (custom) CPU Intel I7-7700K | CG Nvidia GTX 1080 | RAM 16Go | tripleBoot : LMint 22.3 | Debian 12 | MX Linux | XFCE
Tour2 (custom) CPU AMD Athlon 5200+ | CG Nvidia GTX 560 | RAM 6Go | FreeBSD XFCE
Portable1 MSI GF75 Thin 9SC | CPU Intel I7-9750H | CG Nvidia GTX 1650 | RAM 32Go | dualBoot : LMint 22.1 | MX Linux | XFCE
Portable2 MacBook Air A1466 | CPU Intel I5-5250U | CG Intel HD Graphics 6000 | RAM 8Go | dualBoot : macOS Sierra | MX Linux XFCE
─────( pour une informatique libre ! )─────
Avatar du membre
alain
Administrateur du site
Messages : 17301
Enregistré le : dim. 11 oct. 2015 23:41
Localisation : Chelles
Contact :

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

Message 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
Слава Україні _ слава героям махновщини
PC1 : CM : ASRock 990FX | CPU: AMD FX 8350-8 cores, 4 GHz | RAM: 16 Go DDR3 1600 MHz | CG: GTX 1080TI-11 Go | OS : LM 22 Xfce 4.18 | K: 6.8
PC2
:Core2 Quad Q9650 @ 3 GHz | CG: Nvidia GTX 650TI | OS: LM 22 Wilma Xfce 4.18| K: 6.8
PC3 :Core i7-2600 @ 3,5 GHz | CG: ATI HD 4650 | OS: Emmade5 Xfce 4.18.0 | K: 6.1
PC4 : AMD Ryzen 5 3500X 4GHz | CG: GTX 970 | Ram : 8GB |OS : Debian 12.8 | K: 6.1
In a world without walls and fences, who needs windows and gates?
Avatar du membre
arghlub
Administrateur du site
Messages : 11752
Enregistré le : dim. 21 mai 2017 08:19
Localisation : Provence

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

Message 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 )
Tour1 (custom) CPU Intel I7-7700K | CG Nvidia GTX 1080 | RAM 16Go | tripleBoot : LMint 22.3 | Debian 12 | MX Linux | XFCE
Tour2 (custom) CPU AMD Athlon 5200+ | CG Nvidia GTX 560 | RAM 6Go | FreeBSD XFCE
Portable1 MSI GF75 Thin 9SC | CPU Intel I7-9750H | CG Nvidia GTX 1650 | RAM 32Go | dualBoot : LMint 22.1 | MX Linux | XFCE
Portable2 MacBook Air A1466 | CPU Intel I5-5250U | CG Intel HD Graphics 6000 | RAM 8Go | dualBoot : macOS Sierra | MX Linux XFCE
─────( pour une informatique libre ! )─────
Avatar du membre
arghlub
Administrateur du site
Messages : 11752
Enregistré le : dim. 21 mai 2017 08:19
Localisation : Provence

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

Message 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
;)
Tour1 (custom) CPU Intel I7-7700K | CG Nvidia GTX 1080 | RAM 16Go | tripleBoot : LMint 22.3 | Debian 12 | MX Linux | XFCE
Tour2 (custom) CPU AMD Athlon 5200+ | CG Nvidia GTX 560 | RAM 6Go | FreeBSD XFCE
Portable1 MSI GF75 Thin 9SC | CPU Intel I7-9750H | CG Nvidia GTX 1650 | RAM 32Go | dualBoot : LMint 22.1 | MX Linux | XFCE
Portable2 MacBook Air A1466 | CPU Intel I5-5250U | CG Intel HD Graphics 6000 | RAM 8Go | dualBoot : macOS Sierra | MX Linux XFCE
─────( pour une informatique libre ! )─────
Avatar du membre
arghlub
Administrateur du site
Messages : 11752
Enregistré le : dim. 21 mai 2017 08:19
Localisation : Provence

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

Message 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
Tour1 (custom) CPU Intel I7-7700K | CG Nvidia GTX 1080 | RAM 16Go | tripleBoot : LMint 22.3 | Debian 12 | MX Linux | XFCE
Tour2 (custom) CPU AMD Athlon 5200+ | CG Nvidia GTX 560 | RAM 6Go | FreeBSD XFCE
Portable1 MSI GF75 Thin 9SC | CPU Intel I7-9750H | CG Nvidia GTX 1650 | RAM 32Go | dualBoot : LMint 22.1 | MX Linux | XFCE
Portable2 MacBook Air A1466 | CPU Intel I5-5250U | CG Intel HD Graphics 6000 | RAM 8Go | dualBoot : macOS Sierra | MX Linux XFCE
─────( pour une informatique libre ! )─────
Avatar du membre
arghlub
Administrateur du site
Messages : 11752
Enregistré le : dim. 21 mai 2017 08:19
Localisation : Provence

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

Message 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
;)
Tour1 (custom) CPU Intel I7-7700K | CG Nvidia GTX 1080 | RAM 16Go | tripleBoot : LMint 22.3 | Debian 12 | MX Linux | XFCE
Tour2 (custom) CPU AMD Athlon 5200+ | CG Nvidia GTX 560 | RAM 6Go | FreeBSD XFCE
Portable1 MSI GF75 Thin 9SC | CPU Intel I7-9750H | CG Nvidia GTX 1650 | RAM 32Go | dualBoot : LMint 22.1 | MX Linux | XFCE
Portable2 MacBook Air A1466 | CPU Intel I5-5250U | CG Intel HD Graphics 6000 | RAM 8Go | dualBoot : macOS Sierra | MX Linux XFCE
─────( pour une informatique libre ! )─────
Avatar du membre
alain
Administrateur du site
Messages : 17301
Enregistré le : dim. 11 oct. 2015 23:41
Localisation : Chelles
Contact :

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

Message 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 ;)
Слава Україні _ слава героям махновщини
PC1 : CM : ASRock 990FX | CPU: AMD FX 8350-8 cores, 4 GHz | RAM: 16 Go DDR3 1600 MHz | CG: GTX 1080TI-11 Go | OS : LM 22 Xfce 4.18 | K: 6.8
PC2
:Core2 Quad Q9650 @ 3 GHz | CG: Nvidia GTX 650TI | OS: LM 22 Wilma Xfce 4.18| K: 6.8
PC3 :Core i7-2600 @ 3,5 GHz | CG: ATI HD 4650 | OS: Emmade5 Xfce 4.18.0 | K: 6.1
PC4 : AMD Ryzen 5 3500X 4GHz | CG: GTX 970 | Ram : 8GB |OS : Debian 12.8 | K: 6.1
In a world without walls and fences, who needs windows and gates?
Avatar du membre
arghlub
Administrateur du site
Messages : 11752
Enregistré le : dim. 21 mai 2017 08:19
Localisation : Provence

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

Message par arghlub »

oh yeahhh !!!
il est tout beau ton script "AMDgpuSmile" ...

Content que ça roule
;)
Tour1 (custom) CPU Intel I7-7700K | CG Nvidia GTX 1080 | RAM 16Go | tripleBoot : LMint 22.3 | Debian 12 | MX Linux | XFCE
Tour2 (custom) CPU AMD Athlon 5200+ | CG Nvidia GTX 560 | RAM 6Go | FreeBSD XFCE
Portable1 MSI GF75 Thin 9SC | CPU Intel I7-9750H | CG Nvidia GTX 1650 | RAM 32Go | dualBoot : LMint 22.1 | MX Linux | XFCE
Portable2 MacBook Air A1466 | CPU Intel I5-5250U | CG Intel HD Graphics 6000 | RAM 8Go | dualBoot : macOS Sierra | MX Linux XFCE
─────( pour une informatique libre ! )─────
Verrouillé