Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 13/02/2010, à 14:55

fr-loic

Script d'information PC

Bonjour, je suis en train de créer un script d'informations principales sur les différents éléments du PC.
Je débutes donc c'est pas très propre. Si vous avez des propositions à me faire n'hésitez pas.
Merci

Mis à jour le 17 mars 2010:

#! /bin/sh
# http://forum.ubuntu-fr.org/viewtopic.php?id=378905
# Merci aux contributeurs du forum ubuntu-fr.org
# Liste complète: sudo lshw -html > info-hardware.html
# version 0.6

sudo echo "Analyse en cours..."
echo "Attendez s'il vous plait..."
echo "##### Ordinateur: #####" >>  ~/info_matériels
echo "Systeme d'exploitation: `lsb_release -i | cut -f 2` - `lsb_release -c | cut -f 2` - `lsb_release -r | cut -f 2`" >>  ~/info_matériels
echo "Version du Noyau Linux: `uname -o` `uname -r` - `uname -m`" >>  ~/info_matériels
echo "Nom de l'ordinateur: `uname -n`" >>  ~/info_matériels
echo "   " >>  ~/info_matériels
echo '##### Processeur: #####' >>  ~/info_matériels
sudo dmidecode -t processor | egrep "(Version|Family|Current Speed|External Clock)" >>  ~/info_matériels
echo `sed -n '/^cpu c/{p;q}' /proc/cpuinfo` | sed 's/^[[:blank:]]*/        /' >>  ~/info_matériels
sudo dmidecode -t processor | grep -E 'Upgrade' >>  ~/info_matériels
sudo dmidecode -t cache | egrep "(Socket Designation|Installed Size)" >> ~/info_matériels
echo "   " >>  ~/info_matériels
echo '##### Carte video: #####' >>  ~/info_matériels
echo "Modele: `lspci | grep VGA | cut -d : -f 3`" >>  ~/info_matériels
echo "Acceleration Graphique: `glxinfo | grep rendering | tail -n 1 | cut -d : -f 2 | sed "s/Yes/Activee/g" | sed "s/No/Non activee/g"`" >>  ~/info_matériels
echo "Resolution Actuelle: `xrandr --verbose | grep *current`" >>  ~/info_matériels
echo "   " >>  ~/info_matériels
echo '##### Multimedia: #####' >>  ~/info_matériels
echo "Carte audio: `lspci | grep -i audio | cut -d : -f 3`" >>  ~/info_matériels
echo "   " >>  ~/info_matériels
echo '##### Carte mere: #####' >>  ~/info_matériels
sudo dmidecode -t system | egrep -o "Manufacturer.*|Product Name.*" >>  ~/info_matériels
echo "   " >>  ~/info_matériels
echo '##### Proprietes du Chipset: #####' >>  ~/info_matériels
echo "Nom du Chipset: `lspci | grep -i PCI` " >>  ~/info_matériels
echo "-------------------------" >>  ~/info_matériels
echo "North Bridge: `lspci | grep -i HOST` " >>  ~/info_matériels
echo "-------------------------" >>  ~/info_matériels
echo "South Bridge: `lspci | grep -i ISA` " >>  ~/info_matériels
echo "   " >>  ~/info_matériels
echo '##### BIOS: #####' >>  ~/info_matériels
sudo dmidecode -t bios | egrep -o "Vendor.*|Version.*|Release Date.*|Release Date.*|ROM Size.*" >>  ~/info_matériels
echo "   " >>  ~/info_matériels
echo '##### Memoire: #####' >>  ~/info_matériels
MEM=$(egrep -m1 -o '[0-9]*' /proc/meminfo) && echo RAM total: $((${MEM}/1024)) Mio >>  ~/info_matériels
sudo dmidecode -t memory | egrep -o "Number Of Devices.*|Maximum Capacity.*|Size.*|Speed.*" >>  ~/info_matériels
echo "   " >>  ~/info_matériels
echo '##### Stockage:  #####' >>  ~/info_matériels
sudo lshw -c disk | egrep -o "description.*|vendor.*|product.*|version.*|size.*" >>  ~/info_matériels
echo "   " >>  ~/info_matériels
echo '##### Reseau: #####' >>  ~/info_matériels
echo "Adresse IP: `wget http://checkip.dyndns.org/ -O - -o /dev/null | cut -d: -f 2 | cut -d\< -f 1`" >>  ~/info_matériels
sudo lshw -c network | egrep -o "description.*|vendor.*|product.*" >>  ~/info_matériels
echo "Analyse terminee."
firefox ~/info_matériels 2>/dev/null || konqueror ~/info_matériels 2>/dev/null || epiphany ~/info_matériels 2>/dev/null || gedit ~/info_matériels 2>/dev/null
echo "Merci et à bientot sur ubuntu-fr.org ;-)"

sudo -k

exit 0

Dernière modification par fr-loic (Le 17/03/2010, à 10:04)


La liberté n'a de valeur que partagée → Into the wild

Hors ligne

#2 Le 13/02/2010, à 23:31

wido

Re : Script d'information PC

Bonjour, vire tous tes sudo et remplace par ce bout de code:

if [ ! "$(id -u)" = "0" ]; then 
   echo "Il faut être root" 
   exit 1 
fi

et il y en a au moins deux ou trois commande qui doivent être lancer en root le reste l'utilisateur peut l'obtenir.

Hors ligne

#3 Le 13/02/2010, à 23:45

nesthib

Re : Script d'information PC

O_o commence par lire cet excellent manuel sur bash, tu pourras simplifier pas mal ton code :

quelques horreurs (ne le prends pas mal wink) :

echo `sed … fichier`     →     sed … fichier
… | grep | sed     →     … | grep -o     ou     … | sed '/…/s/…/…/'

au lieu de lancer une commande 50 fois pour lire un fichier, sauvegarde le résultat dans une variable et utilise la :

DMIDECODE=$(sudo dmidecode)
commande <<<"$DMIDECODE"

n'hésite pas à lire les man de façon plus approfondie, ex. tu peux formater la sortie de dmidecode, ou combiner les recherches dans grep :

sudo dmidecode -t bios | egrep -o "Vendor.*|Version.*|Release Date.*|Release Date.*"

GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#4 Le 14/02/2010, à 06:49

sputnick

Re : Script d'information PC

@wido,

pas besoin de la commande id, la variable $UID contient deja l'UID du user courant.

if ((UID!=0)); then
    echo >&2 "Il faut etre root dude!"
    exit 1
fi

Dernière modification par sputnick (Le 14/02/2010, à 06:50)


Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. Confucius
https://sputnick.fr

Hors ligne

#5 Le 14/02/2010, à 07:04

uboops

Re : Script d'information PC

Un script similaire existe déjà (genre: hardinfo - sysinfo) ici:
http://forum.ubuntu-fr.org/viewtopic.php?id=226693

Dernière modification par uboops (Le 14/02/2010, à 07:08)


“Au lieu de faire que ce qui fût juste fût fort, on a fait que ce qui fût fort fût juste.” (Blaise Pascal).

Hors ligne

#6 Le 14/02/2010, à 22:15

fr-loic

Re : Script d'information PC

Merci mais nesthib tu aurais pas un tutoriel simple mais complet en français?
uboops merci pour le lien mais c'est juste pour apprendre que je le conçois principalement ce script wink, j'étudierais par contre le script. Quand à sysinfo c'est en mono beurq :Dlol.
Merci à tous pour votre aides!


La liberté n'a de valeur que partagée → Into the wild

Hors ligne

#7 Le 14/02/2010, à 22:46

nesthib

Re : Script d'information PC

si tu cherches un peu il y a le même bouquin en français wink


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#8 Le 15/02/2010, à 15:57

HacKurx

Re : Script d'information PC

http://abs.traduc.org/abs-fr/

Hors ligne

#9 Le 15/02/2010, à 16:00

HacKurx

Re : Script d'information PC

Ou sinon:
http://marcg.developpez.com/ksh/

Hors ligne

#10 Le 05/03/2010, à 13:34

fr-loic

Re : Script d'information PC

Merci mais comment faire plus propre que cela:

lspci | grep -i audio | echo "Name:" `sed 's/^.*://'` | sed 's/^[[:blank:]]*/  /'

La liberté n'a de valeur que partagée → Into the wild

Hors ligne

#11 Le 05/03/2010, à 13:49

fr-loic

Re : Script d'information PC

C'est bon comme un grand lol

`lspci | grep -i audio | cut -d : -f 3`

Dernière modification par fr-loic (Le 05/03/2010, à 13:51)


La liberté n'a de valeur que partagée → Into the wild

Hors ligne

#12 Le 05/03/2010, à 18:04

Totor

Re : Script d'information PC

ubuntosaure a écrit :

Ou sinon:
http://marcg.developpez.com/ksh/

Attention, il s'agit d'un tuto pour le ksh.
Bien qu'il y soit stipulé qu'il soit compatible avec le bash, ce n'est pas le cas.
Pour preuve, l'un des exemples trouvé sur la page :
set -A tab 1 2 3 4

Ce n'est pas valide en bash.


-- Lucid Lynx --

Hors ligne

#13 Le 05/03/2010, à 18:06

fr-loic

Re : Script d'information PC

J'ai mis à jour mon script (premier post) mais pouvez-vous m'aider a créer les variables dmidecode, et lshw (je n'y arrive pas avec ce qui est écrit au dessus, ça ne marche pas) et comment exécuter tout le script en root svp merci.


La liberté n'a de valeur que partagée → Into the wild

Hors ligne

#14 Le 07/03/2010, à 12:21

fr-loic

Re : Script d'information PC

Bonjour, j'utilise cette commande pour savoir la ram total:

echo `cat /proc/meminfo | grep MemTotal`

Mais je souhaiterais obtenir le resultat en Mbytes au lieu de Kbytes.
J'ai regardé le code d'un programme mais je n'arrive pas à le combiner à ma commande, pouvez-vous m'aider svp:

  def raminfo(self):
        data = self.readfile('/proc/meminfo')
        
        values = {'total' : int(re.findall('^MemTotal:\s*([0-9]*)',data, re.M)[0])/1024,

La liberté n'a de valeur que partagée → Into the wild

Hors ligne

#15 Le 07/03/2010, à 12:48

nesthib

Re : Script d'information PC

fr-loic a écrit :
echo `cat /proc/meminfo | grep MemTotal`

OMG c'est horrible tongue
bon là c'est un bon exemple d'une syntaxe complètement inutile !
Pourquoi utiliser : un echo , un sous-shell (`…`), cat et un pipe alors qu'un simple :

grep MemTotal /proc/meminfo

fait parfaitement l'affaire


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#16 Le 07/03/2010, à 13:33

fr-loic

Re : Script d'information PC

big_smile merci mais comment obtenir le résultat en Mio?

Et comment faire pour demander le mot de passe au launcement afin de lancer tout le script en root?

Dernière modification par fr-loic (Le 07/03/2010, à 13:40)


La liberté n'a de valeur que partagée → Into the wild

Hors ligne

#17 Le 07/03/2010, à 14:40

uboops

Re : Script d'information PC

En Mo, avec un truc de ce genre peut-être:

bc -l <<<"`grep MemTotal /proc/meminfo | cut -d : -f 2 | cut -d k -f 1`/1024" | cut -d . -f 1

Pour la 2ième question, il faut mettre des sudo ou il faut, puis un sudo -k à la fin + exit 0 (+ general info +echo + date + partitions+ les IP + mother card + pause pour lancement depuis un raccourci):

##!/bin/bash
# VERSION 0.02
# http://forum.ubuntu-fr.org/viewtopic.php?id=378905
echo $0
echo
date | cut -f 2
echo
echo '##### General Information #####'
echo "Hostname:" $(uname -n)
echo "Linux Core - Proc:" $(uname -o) $(uname -r) $(uname -m)
echo "OS:" $(lsb_release -i | cut -f 2) $(lsb_release -c | cut -f 2) $(lsb_release -r | cut -f 2)
# echo "Graphic Env.:" $(xfce4-session --version | grep session | cut -d \( -f 2 | cut -d \) -f 1) $(gnome-about --version | cut -d \  -f 1,3) $(kde-config -v | grep KDE)
echo
echo '##### CPU: Central Processing Unit #####'
sudo lshw -c cpu | egrep "(product|capacity)" | sed 's/^[[:blank:]]*/  /'
echo `sed -n '/^cpu M/{p;q}' /proc/cpuinfo` | echo "CPU frequency:" `sed 's/^.*://'` | sed 's/^[[:blank:]]*/  /'
sudo dmidecode -t processor | grep -E 'External Clock' | sed 's/^[[:blank:]]*/  /'
echo `sed -n '/^cpu c/{p;q}' /proc/cpuinfo` | echo "Number of cores:" `sed 's/^.*://'` | sed 's/^[[:blank:]]*/  /'
sudo dmidecode -t processor | grep -E 'Upgrade' | sed 's/^[[:blank:]]*/  /'
echo 'Cache L1, L2, L3:'
sudo dmidecode -t cache | grep -E 'Installed Size' | sed 's/^[[:blank:]]*/  /'
echo
echo '##### GPU: Graphics Processing Unit #####'
echo "Nom de la carte graphique: `lspci | grep VGA | cut -d : -f 3`"
echo "Accélération Graphique: `glxinfo | grep rendering | tail -n 1 | cut -d : -f 2 | sed "s/Yes/Activée/g" | sed "s/No/Non activée/g"`"
echo "Résolution Actuelle:    `xrandr | grep current | cut -d , -f 2 | cut -d \  -f 3,4,5`"
echo "Résolution Maximum:     `xrandr | grep maximum | cut -d , -f 3 | cut -d \  -f 3,4,5`"
echo
echo '##### Sound card #####'
echo "Nom de la carte son: `lspci | grep -i audio | cut -d : -f 3`"
echo
echo '##### Motherboards #####'
#sudo dmidecode -t system | egrep -o "Manufacturer.*|Product Name.*"
sudo dmidecode -s baseboard-manufacturer
sudo dmidecode -s system-product-name
sudo dmidecode -s baseboard-product-name
sudo dmidecode -s baseboard-serial-number
echo
echo '##### BIOS Information #####'
sudo dmidecode -t bios | egrep -o "Vendor.*|Version.*|Release Date.*|Release Date.*|ROM Size.*"
echo
echo '##### Disk drive  #####'
# sudo lshw -class disk | egrep -o ".-.*|vendor.*|product.*|capabilities.*|version.*"
sudo lshw -class disk | egrep -o ".-[^m].*|vendor.*|product.*|capabilities.*|version.*"
echo
echo '##### Disk drive partitions  #####'
sudo blkid
echo
echo "Mounted Partitions     Tot   Used  Free Used%: /Mount_Point"
df -h | grep -e /dev/hd,grep -e /dev/sd

# echo "Swap:Total/Free:" $(cat /proc/meminfo | grep SwapTotal) $(cat /proc/meminfo | grep SwapFree)
MEM1=$(sed -n '/SwapTotal/{s/[^0-9]*//g;p}' /proc/meminfo)
MEM2=$(sed -n '/SwapFree/{s/[^0-9]*//g;p}' /proc/meminfo)
# echo "Swap:Total/Free:     " $((${MEM1}/1024))MB $((${MEM2}/1024))MB
echo
echo "Swap:               " $(bc <<<"scale=2;${MEM1}/1048576")G " " $(bc <<<"scale=2;(${MEM1}-${MEM2})/1048576")G " " $(bc <<<"scale=2;${MEM2}/1048576")G " " $(bc <<<"scale=1;(100-(${MEM2}/${MEM1}*100))")%

echo
echo '##### Memory Device #####'
# echo `cat /proc/meminfo | grep MemTotal`
MEM3=$(egrep -m1 -o '[0-9]*' /proc/meminfo)
echo $((${MEM3}/1024)) MB
# MEM3=$(egrep -m1 -o '[0-9]*' /proc/meminfo) && echo $((${MEM3}/1024)) MB
sudo dmidecode -t memory | egrep -o "Number Of Devices.*|Maximum Capacity.*|Size.*|Speed.*"
echo
echo '##### Network #####'
sudo lshw -c network | egrep -o "description.*|vendor.*|product.*"
echo

sudo -k

echo '##### IP Publique Network @ #####'
# curl -s http://checkip.dyndns.org | sed 's/[a-zA-Z<>/ :]//g'
# ou
wget http://checkip.dyndns.org/ -O - -o /dev/null | cut -d: -f 2 | cut -d\< -f 1
echo
echo '##### @ IP Privée eth #####'
ifconfig | grep Masque | cut -d i -f 2
echo


# pause pour lancement depuis un raccourci (dans un terminal)
	echo "Appuyer la touche <Entrée> pour continuer et quitter..."
	read touche
	case $touche in
	*)	echo "Reprise du script..."
	;;

exit 0

PS: tu peux récupérer ce script et le remettre dans ton 1er post en version V0.03 etc.... puis le faire évoluer ....
Bonne continuation

Dernière modification par uboops (Le 08/03/2010, à 23:49)


“Au lieu de faire que ce qui fût juste fût fort, on a fait que ce qui fût fort fût juste.” (Blaise Pascal).

Hors ligne

#18 Le 07/03/2010, à 15:30

nesthib

Re : Script d'information PC

MEM=$(sed -n '/MemTotal/{s/[^0-9]*//g;p}' /proc/meminfo)
#calcul approché
echo $((${MEM}/1024))
#calcul décimal
bc <<<"scale=2;${MEM}/1024"

ou encore, en considérant que la valeur recherchée est toujours sur la première ligne :

MEM=$(egrep -m1 -o '[0-9]*' /proc/meminfo)

GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#19 Le 07/03/2010, à 15:54

fr-loic

Re : Script d'information PC

Merci je vais prendre ceci:

MEM=$(egrep -m1 -o '[0-9]*' /proc/meminfo) && echo $((${MEM}/1024)) Mio

La liberté n'a de valeur que partagée → Into the wild

Hors ligne

#20 Le 07/03/2010, à 21:15

uboops

Re : Script d'information PC

Pour info :
Ceci ne fonctionne pas chez moi:

#sudo dmidecode -t system | egrep -o "Manufacturer.*|Product Name.*"

Fonctionne:

sudo dmidecode -s baseboard-manufacturer
sudo dmidecode -s baseboard-product-name

“Au lieu de faire que ce qui fût juste fût fort, on a fait que ce qui fût fort fût juste.” (Blaise Pascal).

Hors ligne

#21 Le 07/03/2010, à 22:04

fr-loic

Re : Script d'information PC

Moi ca fonctionne sur tout mes ordinateurs:

loic@Laptop:~$ sudo dmidecode -t system | egrep -o "Manufacturer.*|Product Name.*"
[sudo] password for loic: 
Manufacturer: Dell Inc.
Product Name: Inspiron 910
loic@Laptop:~$ sudo dmidecode -s baseboard-manufacturer
Dell Inc.
loic@Laptop:~$ sudo dmidecode -s baseboard-product-name
CN0J14

La liberté n'a de valeur que partagée → Into the wild

Hors ligne

#22 Le 07/03/2010, à 22:24

uboops

Re : Script d'information PC

Ben pas moi, car j'ai plusieurs "Manufacturer: et Product Name:" avant et après le bon...

sudo dmidecode -t system | egrep -o "Manufacturer.*|Product Name.*"
Manufacturer: System manufacturer
Product Name: System Product Name
sudo dmidecode -s baseboard-manufacturer
ASUSTeK Computer INC.
sudo dmidecode -s baseboard-product-name
P5Q3

Dernière modification par uboops (Le 07/03/2010, à 22:27)


“Au lieu de faire que ce qui fût juste fût fort, on a fait que ce qui fût fort fût juste.” (Blaise Pascal).

Hors ligne

#23 Le 07/03/2010, à 22:27

kyncani

Re : Script d'information PC

wido a écrit :

Bonjour, vire tous tes sudo et remplace par ce bout de code:

if [ ! "$(id -u)" = "0" ]; then 
   echo "Il faut être root" 
   exit 1 
fi

et il y en a au moins deux ou trois commande qui doivent être lancer en root le reste l'utilisateur peut l'obtenir.

Vire tous les sudo et remplace par ce bout de code en en-tête :

test `id -u` -eq 0 || exec sudo "$0" "$@" || exit 1

Hors ligne

#24 Le 07/03/2010, à 23:26

uboops

Re : Script d'information PC

test `id -u` -eq 0 || exec sudo "$0" "$@" || exit 1

C'est vrai ça semble séduisant, mais personnellement et après test, je préfère la méthode pragmatique sudo puis sudo -k .

Dernière modification par uboops (Le 07/03/2010, à 23:28)


“Au lieu de faire que ce qui fût juste fût fort, on a fait que ce qui fût fort fût juste.” (Blaise Pascal).

Hors ligne

#25 Le 07/03/2010, à 23:46

nesthib

Re : Script d'information PC

@uboops : +1, je préfère maîtriser les droits que j'accorde à mes scripts

@kyncani : avec ce bout de code que se passe-t'il lorsque le script s'est bien lancé  (après le sudo $0…) ? il risque d'y avoir des mauvaises surprises…


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne