42 votes

Comment trouver des détails sur le matériel de la machine Linux ?

- c'est-à-dire - comment obtenir une liste complète des composants matériels en ligne de commande (sur une machine sans système de fenêtrage)

Merci.

1voto

Rajat Points 3311

Ci-dessous le code que vous pouvez copier en utilisant vi

#!/bin/bash

a=1; c=0
a=1; c=0
# Rassemble les informations système, peut par exemple être envoyé à | mail dans un cronjob
f_() { while read l; do echo $l; done < $f ; }
#
f_() { while read l; do echo $l; done < $f ; }
# TODO
# ----
# * Sortie netstat
# * Informations sur la mémoire/échange
# * Informations ifconfig
# * Rendre la sortie dépendante de argv
# * Vérifications md5sum                               (fait)
# * Conserver les valeurs précédentes et les comparer
# * Comment faire
# * chmod a+x sysinfo.sh
# * ./sysinfo.sh
####################### NE PAS EDITER SOUS CETTE LIGNE ###########################

siheader() {
        echo "================================================================"
        echo -e "* Statistiques système pour: \t`hostname`.`dnsdomainname`"
        echo -e "* Généré le: \t\t\t`date`"
        echo -e "* Fonctionnant en tant que: \t\t`whoami`"
        echo
}

fuptime() {
        upSeconds=$(cat /proc/uptime | tr "." " " | awk '{print $1}')
        secs=$((${upSeconds}%60))
        mins=$((${upSeconds}/60%60))
        hours=$((${upSeconds}/3600/24))
        days=$((${upSeconds}/86400))
        if [ "${days}" -ne "0" ]
        then
                echo -n "${days} jours, "
        fi
        echo "`printf '%02d' ${hours}`:`printf '%02d' ${mins}`:`printf '%02d' ${secs}`"
}

siuptime() {
        echo "=================== Temps de fonctionnement ====================================="
        echo -e "* Temps de fonctionnement: \t\t\t`fuptime`"
        if [ -x /usr/bin/uprecords ];
        then
                echo -e "* Meilleur score: \t\t\t`uprecords | tail -n1 | cut -d'|' -f1 | cut -d'n' -f3 | sed 's/^[[:blank:]]*//'`"
        fi
        echo -e "* Charge moyenne: \t\t`cat /proc/loadavg | head -c14`"
        echo
}

fw () {
        OFS=${IFS}
        IFS=$'\n'
        CNT=$(echo `w | wc -l`-1 | bc)

        w | tail -n ${CNT} | while read -r a;
        do
                echo -e "\t${a}"
        done

        IFS=${OFS}
}

siusers() {
        echo "=================== Utilisateurs ======================================"
        echo -e "* Utilisateurs actifs: \t\t`who | wc -l`"
        echo "* Informations sur l'utilisateur"
        fw
        echo
}

fpstree() {
        OFS=${IFS}
        IFS=$'\n'
        pstree | while read -r a;
        do
                echo -e "\t${a}"
        done
        IFS=${OFS}
}

fcomms() {
        ps -eo comm | sort | uniq | grep -v ^COMMAND | column
        echo

        IFS=${OFS}
}

fprocs() {
        echo `TERM=Linux top -n1 -b | grep "Tasks" | awk '{print $4,$6,$8,$10}'`
        echo -e "==================================Tâches processus et utilisation de la mémoire=============================\n"
    echo "`top -n1 -b`"
}

sitasks() {
        echo "=================== Tâches ======================================"
        echo -e "* Nombre de tâches en cours d'exécution: \t$(echo `ps ax | wc -l` - 1 | bc)"
        # Cela perturbe l'e-mail
        #echo "* Arbre ps:"
        #fpstree
        echo "* Programmes en cours d'exécution:"
        fcomms
        echo -e "* Charge CPU: \t\t\t`TERM=linux top -n2 -b | grep 'Cpu' | tail -n1 | awk '{print $2+$4+$6}'`%"
        PROCS=`fprocs`
        echo "* État du processus:"
        echo -e "\tEn cours d'exécution: \t\t`echo ${PROCS} | awk '{print $1}'`"
        echo -e "\tEn veille: \t\t`echo ${PROCS} | awk '{print $2}'`"
        echo -e "\tZombie: \t\t`echo ${PROCS} | awk '{print $3}'`"
        echo -e "\tArrêté: \t\t`echo ${PROCS} | awk '{print $4}'`"
        echo
}

froute() {
        OFS=${IFS}
        IFS=$'\n'

        CNT=$(echo `/sbin/route | wc -l` - 1 | bc)
        /sbin/route | tail -n ${CNT} | while read -r a;
        do
                echo -e "\t${a}"
        done

        IFS=${OFS}
}

sinetwork() {
        echo "=================== Réseau ================================"
        echo "* Table de routage:"
        froute
        echo
}

simemory() {
        echo "=================== Mémoire ===================================="
        RAMTOTAL=`echo $(($(cat /proc/meminfo | grep MemTotal | awk '{print $2}')/1024))`
        echo "* Ram:\t\t\t libre de ${RAMTOTAL}Mo"
}

sidiskstats() {
        echo "=================== Disque dur ================================="
        echo "* Informations sur le disque:"
        OFS=${IFS}
        IFS=$'\n'
        df -h | grep -v ^none | while read -r a;
        do
                echo -e "\t${a}"
        done
        IFS=${OFS}
        echo
        echo "* Montages:"
        OFS=${IFS}
        IFS=$'\n'
        mount | while read -r a;
        do
                echo -e "\t${a}"
        done
        IFS=${OFS}
        echo
}

simd5() {
        if [ ! -e md5sums.lst ];
        then
                return
        fi

        echo "=================== Vérification des MD5Sum =============================="

        OFS=${IFS}
        IFS=$'\n'

        echo "* Vérification des sommes MD5"

        cat md5sums.lst | grep "^/" | while read -r a;
        do
                F=`echo ${a} | cut -d':' -f1`
                S=`echo ${a} | cut -d':' -f2`
                S2=`md5sum ${F} | cut -d' ' -f1`
                echo -n -e "\t${F}: \t\t\t\t"
                if [ "${S}" = "${S2}" ];
                then
                        echo "[OK]"
                else
                        echo "[INVALID]"
                fi                        
        done

        IFS=${OFS}
        echo
}

##Pour trouver le modèle de CPU, les cœurs et
cpuinfo() {
    echo "=================== Détails du CPU pour Xen =============================="
    echo -e "Détails du CPU: \n`cat /proc/cpuinfo | sed -n '1,/^$/p'`"
    echo -e "Nombre de cœurs: \n`cat /proc/cpuinfo | grep processor | wc -l`"
    if [ "egrep '(vmx|svm)' /proc/cpuinfo >/dev/null 2>/dev/null" ];
    then
        echo -e "\n===============================================================\nLe serveur prend en charge la virtualisation complète"
    else
        echo -e "\n===============================================================\nSoit le serveur ne prend pas en charge la virtualisation complète, soit elle est désactivée dans le BIOS"
    fi

    if [ "egrep 'pae' /proc/cpuinfo >/dev/null 2>/dev/null" ];
    then
        echo -e "\n===============================================================\nLe serveur prend en charge la virtualisation paravirtualisée"
    else
        echo -e "\n===============================================================\nLe serveur ne prend pas en charge la virtualisation paravirtualisée"
    fi
}

##Pour les informations sur le disque
diskinfo() {
        echo "=================== Utilisation du disque =============================="
        echo -e "Détails sur l'utilisation du disque: \n`df -h`"
}   
##Informations sur la distribution
distroinfo() {
        echo "=================== Infos sur la distribution =============================="
        echo -e "Détails sur la distribution: \n`lsb_release -a`"
        echo -e "Détails du noyau: \n`uname -a`"
}   

##Informations sur les périphériques
deviceinfo() {
        echo "=================== Infos sur le périphérique =============================="
        echo -e "Détails du périphérique: \n`lspci -v`"
        echo -e "Détails du noyau: \n`uname -a`"
}   
summary() {
        siheader
        siuptime
        siusers
        sitasks
        sinetwork

        simemory
        sidiskstats
    fprocs
        simd5
    deviceinfo
    cpuinfo
    distroinfo
        echo "==============================================================="
        echo "* Présenté par Taashee- http://www.taashee.com"
}

summary

1voto

mivk Points 3226

Pour les disques durs, j'utilise un script personnalisé qui regroupe en une seule liste les sorties de :

cat /proc/partitions
cat /proc/mounts

parted -m /dev/sdX unit MB print # besoin des droits root pour parted
# ou
parted -m -l unit MB print

blkid /dev/sdXN

1voto

alexus Points 12076

Pour résumer, je dirais que c'est un bon début pour obtenir des informations sur votre système :

  1. dmesg - imprimer ou contrôler le tampon d'anneau du noyau
  2. lspci - lister tous les périphériques PCI
  3. lsusb - lister les périphériques USB
  4. /proc - système de fichiers pseudo d'informations de processus

1voto

ilitirit Points 4636

Je vous recommande de jeter un œil à facter qui produit beaucoup d'informations sous une forme facile à utiliser dans les scripts.

http://www.puppetlabs.com/puppet/related-projects/facter/

1voto

Sc0rian Points 1011

J'apprécie vraiment l'utilisation de "Facter". Donne une belle liste d'informations très utiles.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X