#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 ) :
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 : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde 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 , 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
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#8 Le 15/02/2010, à 15:57
- HacKurx
Hors ligne
#9 Le 15/02/2010, à 16:00
- HacKurx
Re : Script d'information PC
Ou sinon:
http://marcg.developpez.com/ksh/
Follow Me: http://hackurx.wordpress.com
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
`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
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
echo `cat /proc/meminfo | grep MemTotal`
OMG c'est horrible
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 : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#16 Le 07/03/2010, à 13:33
- fr-loic
Re : Script d'information PC
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 : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde 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
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 : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne