Quelles commande dois-je utiliser pour

Bonjour!

J’aimerais configurer mon wmii. Il y a la possibilité d’afficher du texte dans la barre du bas. Pour l’instant, je le fais avec cette commande :

echo -n $(uname -srm) '|' $(acpi -b) '|' "$(cat /home/xavier/sauvegarde/mails)" '|' "En lecture" "$(mpc --format "%artist% - %title% (%album%)" | head -n 1)" '|' $(/bin/date +'%d/%m/%Y - %k:%M')

Bien sûr, cela reste limité. Il s’agit en fait d’afficher le retour de certaines commande.
Je voudrais améliorer cela, mais je ne sais tout simplement pas quelle commande utiliser pour avoir :

  • la consommation du cpu (en %)
  • le pourcentage de ram utilisée
  • le pourcentage de swap?
  • le statut de mpd, ainsi que le temps écoulé de la chanson en cours, par exemple 1.31/3, si il s’est écoulé 1.31 minutes sur 3.
  • la force du signal wifi
  • La place utilisée dans le / et le /home, sous forme par exemple de 19.5GiB/30GiB

Voilà, j’ai besoin dans tout ça de grep, awk, sed je suppose, mais je n’ai aucune idée de la façon pour les utiliser… je suppose que le man m’aiderais, mais ça reste très confus pour moi, il y a beaucoup d’infos…

Merci d’avance pour vos conseils et pistes éventuelles. :smt006

Pour grep, sed, et awk, tu peux aussi regarder les pages de wikipedia. C’est plus concis que les pages man.
Tu peux aussi jeter un oeil à (entre autres) :

Pour ce qui est CPU, RAM, etc, tu devrais trouver ton bonheur dans /proc (cf man proc).
Enfin, bc(1) pour faire les calculs si besoin
Par exemple, pour le pourcentage de RAM :

Pour la force du signal wifi, il suffit d’utiliser iwconfig :

Pour la place utilisé sur les disques, regardes du côté de df(1) (avec l’option -h)

Si ça peut t’inspirer, j’avais commencé à faire une sorte de conky en console. Je l’ai jamais fini - j’ai finalement réussi à trouver les bonnes options de conky pour qu’il supporte le tiling (on peut aussi recompiler conky pour qu’il tourne en console, d’ailleurs) - , on peut donc mieux faire.

[code]#!/bin/sh

cconky : affiche des informations systèmes en console

Usage : percent NUMUSED NUMTOTAL

percent() {
NUM=$(echo “scale=2;(($1/$2)*100)” | bc)

if [ “$(echo $NUM | grep -Eo ‘^.[0-9]+’)” != “” ]; then
NUM=$(echo “$NUM” | grep -Eo ‘^[0-9]+’)
else
NUM=0
fi
}

Usage : percentbar NUM

percentbar() {
echo -n "|"
i=1 ; j=1
while [ “$i” -le “$1” ]; do
echo -n "#"
i=$(($i+1))
done
while [ “$j” -le “$((100-$1))” ]; do
echo -n "-"
j=$(($j+1))
done
echo “|”
}

echo "$(uname -s) $(uname -r) on $(uname -m)"
echo

CPU=$(uptime | grep -Eo ‘load average:\ [0-9].[0-9]{2}’| grep -Eo ‘[0-9]{2}’)
[ “$CPU” -lt “10” ] && CPU=$(echo $CPU | grep -o ‘[0-9]$’)
echo -n "CPU Usage : ${CPU}% "
percentbar $CPU

RAMTOTAL=$(cat /proc/meminfo | grep ‘MemTotal’ | grep -o ‘[0-9]’)
RAMFREE=$(cat /proc/meminfo | grep ‘MemFree’ | grep -o '[0-9]
’)
RAMUSED=$(($RAMTOTAL-$RAMFREE))

percent $RAMUSED $RAMTOTAL ; RAM=$NUM
echo -n "RAM Usage : ${RAM}% "
percentbar $RAM

SWAPTOTAL=$(expand /proc/swaps | grep -Eo ‘[0-9]+\ [0-9]+’ | grep -Eo ‘^[0-9]+’)
SWAPUSED=$(expand /proc/swaps | grep -Eo ‘[0-9]+\ [0-9]+’ | grep -Eo ‘[0-9]+$’)

percent $SWAPUSED $SWAPTOTAL ; SWAP=$NUM
echo -n "SWAP Usage : ${SWAP}% "
percentbar $SWAP
echo

for mountpoint in hda2 /home /mnt/win /mnt/gentoo /mnt/slack /media/cdrom0 /media/cdrom1 /media/usb0 ; do
DISK=$(df | grep $mountpoint | grep -Eo [0-9]+% | grep -Eo [0-9]+)
if [ “$DISK” != “” ]; then
if [ “$mountpoint” = “hda2” ]; then
echo -n "/ : ${DISK}% "
else
echo -n "$mountpoint : ${DISK}% "
fi
percentbar $DISK
fi
done
echo

IPLOCAL=$(/sbin/ifconfig wlan0 | grep -Eo ‘inet adr:([0-9]+.){3}[0-9]+’ | grep -Eo ‘([0-9]+.){3}[0-9]+’)
IPPUBLIC=$(dig mondomaine.tld | grep mondomaine.tld | grep -Eo ‘([0-9]+.){3}[0-9]+’)
NETMASK=$(/sbin/ifconfig wlan0 | grep -Eo ‘Masque:([0-9]+.){3}[0-9]+’ | grep -Eo ‘([0-9]+.){3}[0-9]+’)
echo “IP | public : $IPPUBLIC | local : $IPLOCAL | netmask : $NETMASK”

ESSID=$(/sbin/iwconfig wlan0 | grep -Eo ‘ESSID:"[A-Za-z]+"’ | grep -Eo ‘"[A-Za-z]+"’ | grep -Eo ‘[A-Za-z]+’)
ACCESSPOINT=$(/sbin/iwconfig wlan0 | grep -Eo ‘([0-9A-F]{2}:){5}[0-9A-F]{2}’)
echo “WIFI | essid : $ESSID | access point : $ACCESSPOINT”

if [ “$(mpc | grep ‘playing’)” != “” ]; then
echo "MPD : Playing : $(mpc | grep -v ‘playing’ | grep -v ‘volume’)"
MPDRATIO=$(mpc | grep ‘playing’ | grep -Eo ‘[0-9]+:[0-9]+/[0-9]+:[0-9]+’)
MPDUSED=$(echo $MPDRATIO | grep -Eo ‘[0-9]+:[0-9]+/’ | grep -Eo ‘[0-9]+:[0-9]+’ | sed -e ‘s/:/./’)
MPDTOTAL=$(echo $MPDRATIO | grep -Eo ‘/[0-9]+:[0-9]+’ | grep -Eo ‘[0-9]+:[0-9]+’ | sed -e ‘s/:/./’)
percent $MPDUSED $MPDTOTAL ; MPD=$NUM
percentbar $MPD
else
echo "MPD : Not playing…"
fi

read[/code]

Merci kna! bon sang, c’est super chouette ce que tu as fait tout de même, faut pas être si modeste hein! :smt002
J’ai testé le script, ça fonctionne plutot bien! juste la barre de mpd qui ne “progresse” pas, mais sinon le reste est super!
je vais décortiquer tout ça et essayer d’en faire quelque chose de bien! il est grand temps pur moi d’en apprendre plus sur ces commandes!
Merci pour ces piste encore! :smt050

j’aurais une petite question sur ta première ligne :

J’ai compris que le scale=2 permet d’avoir 2 chiffres après la virgule, mais à quoi sert le “;”, pour enchaîner le calcul?

Merci beaucoup, j’ai réussi à avoir ce que je voulais!
Sans toi je n’aurais jamais eu l’idée pour la barre de progression! c’est vraiment bien pensé! (enfin j’ai adapté un peu pour la taille quand même).

Désolé de t’avoir piqué toutes tes idées.
Merci encore!

J’ai besoin d’une précision, je galère depuis un moment pour trouver comment faire, mais pas moyen!

Je voudrais afficher le contenu d’un fichier à partir de la ligne 2. Ou bien l’afficher après avoir enlevé la première ligne.

Quelqu’un peut m’aider svp?

En fait, il n’y a rien qui progresse. Le script ne donne que les données à un instant t. Je comptais après le lancer toutes les secondes puis soit faire un clear entre, soit récupérer la sortie vers un fichier puis faire un tail -f dessus, ou autre chose.
Après, on peut aussi le modifier pour donner les variables dans un fichier, puis les afficher avec conky, dmenu, ou si on est fou, un programme perso en C ou en bash (avec bash simple ncurses). En récupérant le fichier sur un autre poste, on peut monitorer un serveur sur son desktop. Mais là c’est un autre sujet…

Le « ; » sert simplement à balancer 2 lignes dans le tube (« | ») pour bc :

$ bc bc 1.06.94 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. scale=2 27/28 .96

C’est sous licence WTFPL :smiley:

Je venais dire que j’avais trouvé pour sed! merci quand même! :slightly_smiling:

Oui, dans wmii, la barre progresse, comme c’est mis à jour petit à petit! c’est super!

Je ne connaissais pas cette license! :smt003 C’est mignon comme petit nom!

J’ai fini ma barre. Je poste ici la commande si cela intéresse quelqu’un un de ces jours :

Avec un script qui renvoie le nombre de mails dans un fichier que j’affiche avec cat, et le script mpd_statut, copié de celui de kna :

[code]#!/bin/sh

Usage : percent NUMUSED NUMTOTAL

percent() {
NUM=$(echo “scale=2;(($1/$2)*100)” | bc)

if [ “$(echo $NUM | grep -Eo ‘^.[0-9]+’)” != “” ]; then
NUM=$(echo “$NUM” | grep -Eo ‘^[0-9]+’)
else
NUM=0
fi
}

Usage : percentbar NUM

percentbar() {
echo -n "|"
i=1 ; j=1
while [ “$i” -le “$(($1/3))” ]; do
echo -n "#"
i=$(($i+1))
done
while [ “$j” -le “$(((100-$1)/3))” ]; do
echo -n "-"
j=$(($j+1))
done
echo “|”
}

if [ “$(mpc | grep ‘playing’)” != “” ]; then
echo "MPD : Playing : $(mpc | grep -v ‘playing’ | grep -v ‘volume’)"
MPDRATIO=$(mpc | grep ‘playing’ | grep -Eo ‘[0-9]+:[0-9]+/[0-9]+:[0-9]+’)
MPDUSED=$(echo $MPDRATIO | grep -Eo ‘[0-9]+:[0-9]+/’ | grep -Eo ‘[0-9]+:[0-9]+’ | sed -e ‘s/:/./’)
MPDTOTAL=$(echo $MPDRATIO | grep -Eo ‘/[0-9]+:[0-9]+’ | grep -Eo ‘[0-9]+:[0-9]+’ | sed -e ‘s/:/./’)
percent $MPDUSED $MPDTOTAL ; MPD=$NUM
percentbar $MPD
else
echo "MPD : Not playing…"
fi

[/code]

Pu****, c’est beau la liberté!!!

WTFPL tiens!!!