Pagina 1 di 3

Conky, conkyrc e scripting bash

Inviato: lun 11 giu 2007, 2:19
da danix
Salve a tutti...
mi stavo chiedendo quanti di voi utilizzino conky per monitorare il sistema, e che tipo di utilizzo ne fate...
mi piacerebbe raccogliere un po' delle vostre esperienze per migliorare un po' il mio conkyrc che già adesso è molto ricco di informazioni... vi faccio vedere uno screenshot per darvi un'idea...
Immagine

Io utilizzo vari script in conky, uno per leggere la posta in arrivo di gmail, uno per visualizzare lo stato di amarok e uno per visualizzare il mio indirizzo ip (quest'ultimo l'ho scritto tutto io e ve lo posto :) )

Codice: Seleziona tutto

#! /bin/bash

# myip.sh - script che legge l'indirizzo il dal sito "http://myip.dk/"

downloaddir=~/.scripts/myipdown/

if [[ ! -d $downloaddir ]]
then
        mkdir $downloaddir
        cd $downloaddir
else
        cd $downloaddir
fi

wget -q http://myip.dk/

cat index.html |cut -d"
" -f 28 |cut -d" " -f 5 |cut -d">" -f 3 |cut -b -13

che ne pensate??

Voi che script utilizzate?? Non sarebbe male raccogliere un pò di idee in questo thread e fare anche una pagina del wiki dal momento che la pagina ufficiale degli screenshot di conky è un pochino outdated, molti link sono down e molti script non funzionano...

Spero di ricevere qualche risposta...
Ciau a tutti...

Inviato: lun 11 giu 2007, 17:59
da JohnnyMnemonic
Io uso conky da qualche tempo, ma senza script particolari

Però rilancio e chiedo: come faccio a visualizzare la frequenza di entrambi i processori su un dual core? (nel caso che voglia dare frequenze diverse)
qualche idea sul perchè in fase di scarica l'indicatore di batteria mi dica "full", mentre in carica riporta correttamente la carica attuale?

Inviato: lun 11 giu 2007, 18:20
da danix
ti posso rispondere per quanto riguarda il processore, devi utilizzare cpu0 per il primo dei 2 processori cpu1 per il secondo e così via...
Prova a dare un'occhiata alla pagina delle variabili di conky per maggiori spiegazioni...

Per la batteria non saprei dirti dal momento che non sono su un portatile...

Ciau

Inviato: lun 11 giu 2007, 18:39
da danix
nel caso in cui a qualcuno potessero interessare posto i vari script che uso per arricchire conky:

myip (versione aggiornata e corretta)

Codice: Seleziona tutto

#! /bin/bash

# myip.sh - script che legge l'indirizzo ip dal sito "http://myip.dk/"

downloaddir=/home/danix/.scripts/myipdown/
ipnum=[0-9][0-9][0-9]\.[0-9][0-9][0-9]\.[0-9][0-9][0-9]\.[0-9][0-9][0-9]

if [[ ! -d $downloaddir ]]
then
        mkdir $downloaddir
        cd $downloaddir
else
        cd $downloaddir
        rm ./*
fi

wget -q http://myip.dk/

line=$(cat index.html | cut -d"
" -f4 |cut -b 17- |cut -d"<" -f1 -s)

echo $line

which_governor (script per visualizzare il governor attuale della cpu, richiede che siano installati i cpufreq-tools)

Codice: Seleziona tutto

#! /bin/bash

# script che visualizza il gestore utilizzato per la frequenza della cpu

cpufreq-info | cut -d'
' -f10 | cut -d'"' -f2

amaroker (script per visualizzare le info di amarok - preso dalla pagina degli screenshot di conky)

Codice: Seleziona tutto

#!/bin/bash
# amaroK info display script by eirc <eirc.eirc@gmail.com>
#
# requirements: amaroK (!)
# for Collection stats to work amarok must be using
# mySQL to store it's collection

case "$1" in

# Now Playing Info
artist) dcop amarok player artist ;;
title)  dcop amarok player title ;;
album)  dcop amarok player album ;;
year)   dcop amarok player year ;;
genre)  dcop amarok player genre ;;
progress)
    curr=`dcop amarok player trackCurrentTime`
    tot=`dcop amarok player trackTotalTime`
    if (( $tot )); then
        expr $curr \* 100  / $tot
    fi
    ;;

# Collection Info
totalArtists)      dcop amarok collection totalArtists ;;
totalAlbums)       dcop amarok collection totalAlbums ;;
totalTracks)       dcop amarok collection totalTracks ;;
totalGenres)       dcop amarok collection totalGenres ;;
totalCompilations) dcop amarok collection totalCompilations ;;

# Collection Stats
most_songs_by_artist) dcop amarok collection query 'SELECT t1.name FROM artist t1 INNER JOIN tags t2 ON t1.id = t2.artist GROUP BY t2.artist ORDER BY COUNT(t2.artist) DESC LIMIT 1;' ;;
most_songs_by_artist_n) dcop amarok collection query 'SELECT count(t2.artist) FROM artist t1 INNER JOIN tags t2 ON t1.id = t2.artist GROUP BY t2.artist ORDER BY COUNT(t2.artist) DESC LIMIT 1;' ;;
most_songs_are_genre) dcop amarok collection query 'SELECT t1.name FROM genre t1 INNER JOIN tags t2 ON t1.id = t2.genre GROUP BY t2.genre ORDER BY COUNT(t2.genre) DESC LIMIT 1;' ;;
most_songs_are_genre_n) dcop amarok collection query 'SELECT count(t2.genre) FROM genre t1 INNER JOIN tags t2 ON t1.id = t2.genre GROUP BY t2.genre ORDER BY COUNT(t2.genre) DESC LIMIT 1;' ;;
most_songs_during_year) dcop amarok collection query 'SELECT t1.name FROM year t1 INNER JOIN tags t2 ON t1.id = t2.year GROUP BY t2.year ORDER BY COUNT(t2.year) DESC LIMIT 1;' ;;
most_songs_during_year_n) dcop amarok collection query 'SELECT count(t2.year) FROM year t1 INNER JOIN tags t2 ON t1.id = t2.year GROUP BY t2.year ORDER BY COUNT(t2.year) DESC LIMIT 1;' ;;
most_albums_by_artist) dcop amarok collection query 'SELECT name FROM artist WHERE id=(SELECT t1.artist from (SELECT artist FROM tags GROUP BY album) AS t1 GROUP BY t1.artist ORDER BY count(artist) DESC LIMIT 1);' ;;
most_albums_by_artist_n) dcop amarok collection query 'SELECT count(artist) from (SELECT artist FROM tags GROUP BY album) AS t1 GROUP BY t1.artist ORDER BY count(artist) DESC LIMIT 1;' ;;
most_albums_are_genre) dcop amarok collection query 'SELECT name FROM genre WHERE id=(SELECT t1.genre from (SELECT genre FROM tags GROUP BY album) AS t1 GROUP BY t1.genre ORDER BY count(genre) DESC LIMIT 1);' ;;
most_albums_are_genre_n) dcop amarok collection query 'SELECT count(genre) from (SELECT genre FROM tags GROUP BY album) AS t1 GROUP BY t1.genre ORDER BY count(genre) DESC LIMIT 1;' ;;
most_albums_during_year) dcop amarok collection query 'SELECT name FROM year WHERE id=(SELECT t1.year from (SELECT year FROM tags GROUP BY album) AS t1 GROUP BY t1.year ORDER BY count(year) DESC LIMIT 1);' ;;
most_albums_during_year_n) dcop amarok collection query 'SELECT count(year) from (SELECT year FROM tags GROUP BY album) AS t1 GROUP BY t1.year ORDER BY count(year) DESC LIMIT 1;' ;;

esac

conky-rss.sh (script che legge un feed rss, adattato per leggere la posta in arrivo di gmail)

Codice: Seleziona tutto

#!/bin/bash
# RSS Display Script by Bill Woodford (admin@sdesign.us) v1.0
#
# This script is designed to output story titles for most any RSS Feed.
#
# This script depends on curl.  Please ensure it is installed and in your $PATH
# Gentoo: emerge -av net-misc/curl
# Debian: apt-get install curl
# Homepage: http://curl.haxx.se/
#
# Usage:
# .conkyrc:     ${execi [time] /path/to/script/conky-rss.sh URI LINES TITLENUM}
#       URI = Location of feed, ex. http://www.gentoo.org/rdf/en/glsa-index.rdf
#       LINES = How many titles to display (default 5)
#       TITLENUM = How many times the title of the feed itself is specified, usually 1 or 2 (default 2)
#
# Usage Example
#               ${execi 300 /home/youruser/scripts/conky-rss.sh http://www.foxnews.com/xmlfeed/rss/0,4313,1,00.rss 4 2}

#RSS Setup - Don't change unless you want these values hard-coded!
### info modificate per essere utilizzate con gmail
uri=https://user:password@mail.google.com/mail/feed/atom
lines=15  ### linee da visualizzare
titlenum=1   ### numero di ripetizioni del titolo del feed

#Script start
#Require a uri, as a minimum
if [[ "$uri" == "" ]]; then
        echo "No URI specified, cannot continue!" >&2
        echo "Please read script for more information" >&2
else
        #Set defaults if none specified
        if [[ $lines == "" ]]; then lines=5 ; fi
        if [[ $titlenum == "" ]]; then titlenum=2 ; fi

        #The actual work
        curl -s --connect-timeout 30 $uri |\
        sed -e 's/<\/title>/\n/g' |\
        grep -o '<title>.*' |\
        sed -e 's/<title>//' |\
        head -n $(($lines + $titlenum)) |\
        tail -n $(($lines))
fi
ho inserito inoltre un comando che conta il numero di tgz installati nel sistema:

Codice: Seleziona tutto

${texeci 300 ls /var/log/packages 2> /dev/null |wc -c}
e utilizzando hddtemp ho inserito il monitoraggio della temperatura dell'hard disk con questo comando:

Codice: Seleziona tutto

${execi 30 hddtemp SATA:/dev/sda |cut -d" " -f5}
Spero possano interessare e/o tornare utili a qualcuno...

Ciau...

Inviato: lun 11 giu 2007, 20:47
da JohnnyMnemonic
danix come fai a usare hddtemp da utente normale? anche se gli scrivo il path completo mi dice che non ho accesso a /dev/sda

Inviato: lun 11 giu 2007, 21:41
da danix
puoi postare l'errore completo che ti restituisce??

a me sinceramente non da errori...

[EDIT]
ora che ci penso (scusami se ti sto chiedendo una cosa banale), hai un disco IDE o S-ATA/SCSI??

Nel caso tu abbia IDE il device giusto non è /dev/sda ma /dev/hd? (? può essere una lettera qualsiasi da A a P se non sbaglio)
Mentre se hai un S-ATA / SCSI allora può darsi che tu stia sbagliando la lettera finale del device, magari non è sda ma sdb... controlla bene perchè non mi sembra che hddtemp sià solo per root...

Ti ripeto, scusami se ti ho chiesto una cosa che per te è banale...ma io non posso saperlo...

Ciau

Inviato: lun 11 giu 2007, 21:47
da JohnnyMnemonic
Allora, io aggiungo la riga

Codice: Seleziona tutto

${execi 30 /usr/sbin/hddtemp SATA:/dev/sda |cut -d" " -f5}
e mi restituisce l'errore
/dev/sda: Operation not permitted
invece con

Codice: Seleziona tutto

${execi 30 /usr/sbin/hddtemp /dev/sda |cut -d" " -f5}
mi restituisce l'errore
/dev/sda: Permission denied
Ovviamente il mio disco è su /dev/sda e il file ha permessi di lettura e scrittura per root e gruppo disk, del quale faccio parte

Lanciando hddtemp separatemente, apparte un warning sul fatto che il disco non è presente in database, ottengo il modello e la temperatura

Inviato: lun 11 giu 2007, 21:49
da JohnnyMnemonic
Ok ho risolto settando il bit suid di hddtemp, potevo pensarci prima in effetti... :lol:

Inviato: lun 11 giu 2007, 21:51
da danix
ok, mi hai risposto anche alle domande che ti avevo posto dopo...

sono felice che tu abbia risolto...

a presto

Inviato: lun 11 giu 2007, 21:54
da danix
controllando meglio io avevo ovviato al tuo stesso problema creando un link simbolico in /usr/bin all'eseguibile hddtemp che di norma si trova in /usr/sbin...

non ricordavo, scusami...

Ciau

Inviato: lun 11 giu 2007, 22:28
da absinthe
danix85 ha scritto: which_governor (script per visualizzare il governor attuale della cpu, richiede che siano installati i cpufreq-tools)

Codice: Seleziona tutto

#! /bin/bash

# script che visualizza il gestore utilizzato per la frequenza della cpu

cpufreq-info | cut -d'
' -f10 | cut -d'"' -f2

lo puoi fare senza cpufreq:

Codice: Seleziona tutto

bash-3.2$ echo current governor: `cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor`
current governor: userspace
M

Inviato: lun 11 giu 2007, 23:14
da JohnnyMnemonic
Una piccola modifica, per hddtemp puoi usare i flag numeric e quiet (es. hddtemp -nq) così che visualizzi solo la temperatura nel suo valore numerico, poi aggiungi °C in fondo

Inviato: lun 11 giu 2007, 23:28
da danix
grandi ragazzi, lo sapevo che sarebbe venuto fuori qualcosa di interessante...
e dello script per leggere l'ip che ne dite?? guardate quello che ho postato per ultimo però...
fatemi sapere se avete idee o suggerimenti...

Ciau

Inviato: mar 12 giu 2007, 12:45
da alessiodf
omg concky ciuccia troppa cpu :(

molto meglio gkrellm

Inviato: mar 12 giu 2007, 13:12
da JohnnyMnemonic
alessiodf ha scritto:omg concky ciuccia troppa cpu :(

molto meglio gkrellm
Davvero? però conky non è grafico, sono solo righe di testo, e comunque è molto più personalizzabile di gkrellm