Quelques scripts

Parfois je fait quelques scripts alors autant les partager …
c’est parti!! :slightly_smiling:


Faire un graphe de son modules.dep
Requiere awk, graphviz et ImageMagick (sinon il faut l’adapter à d’autres suites)

#modules_graph creates a graph of a modules.dep file using dot and ImageMagick
#!/bin/sh

#Check graphiz and ImageMagick are present. You may change ImageMagick to gv for example
type dot > /dev/null && { type display > /dev/null || { echo "ImageMagick is missing";  exit; } ; } || { echo "Graphviz(dot)
is missing" ; exit ; }

#User supplied or current one
depfile=${1:-/lib/modules/$(uname -r)/modules.dep}
[ -r $depfile ] || { echo "$depfile not readable"; exit; }

#Sort modules.dep
sdepfile=$(mktemp -t $(basename $0).XXXXXX)
[ $? == 0 ] || { echo "Could not create temp file $sdepfile" ; exit ; }
sort $depfile > $sdepfile

#We want to remove the prefix /lib/modules/`uname -r`/kernel/
# awful hack "kernel" is 6 bytes , "modules.dep" is 11, so substract 6 counting the leading /
subs=$(( $(echo $depfile | wc -c) - 4))

gawk -F":| " -v subs=$subs \
'BEGIN  {
        print "digraph modules { mclimit=2.0;"
        }
/^[^#]/ {
        if (NF==2 ) {
                print "\"" substr($1,subs) "\"" ";" ;
                next;
        }
        for(i=3;i<=NF;i++)
                print "\"" substr($1,subs) "\"" "->" "\"" substr($i,subs) "\";" ;
        }
END     {
                print "}"
        }
' $sdepfile | dot -Tps -Nfontsize=10 | display
rm $sdepfile


Boucler sur deborphan tant qu’il y a des orphelins
Requiere deborphan
Attention deborphan peut enlever des paquets nécessaires pour certains softs installés en source
Je crois qu’aptitude fait la meme chose

#!/bin/sh
while [ $(deborphan $* | wc -l) != 0 ] ; do
deborphan $* | while read i; do apt-get remove -y $i; done
done


Avoir qq infos mémoire sur un process
Requiere memstat
Ex d’usage: mmem apache2

#!/bin/sh memstat -w | sort -n | grep `pidof -s $1`

Affiche l’emplacement web d’un paquet dans le repository http.us.debian.org
Requiere awk
ex d’usage: grepdeb autofs
problème: le suffixe “all” n’est pas toujours présent. J’ai pas trop cherché la logique
#!/bin/sh ser=http://http.us.debian.org/debian ver=$(apt-cache policy ${1} | grep Candi | awk '{print $2}') dirbase=$(apt-cache showsrc ${1} | grep -A 8 "Version: ${ver}" | tail -1 | awk '{print $2}') echo "${ser}/${dirbase}/${1}_${ver}_all.deb"

Y en a d’autres qui sont trop spécifiques à mes besoins ou trop longs, ca servirait pas trop.

ps:Chez moi /bin/sh est linké vers bash; je viens de me rendre compte que si c’est pas le cas chez certains, ca marchera pas tjrs, il faut probablement remplacer la première ligne (/bin/sh -> /bin/bash)

sur ton ps, non. On a eu une discussion à ce sujet, et à priori, bash, appelé en tant que sh, se limite au fonctionnalités de sh.
Donc, si tu n’as pas de pb chez toi, c’est que c’est du sh standard, et qu’à peu prés tous les sh-compatible l’accepteront.

usinagaz: si tu cherches tes posts, je les ai séparé et mis dans GNU/Linux en général, pour que tu aies plus de réponses, ici:
forum.debian-fr.org/viewtopic.php?t=3738

ok, merci … je savais pas trop où mettre c’est juste … :wink: