Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails) *** mise à jour 12/10/2014 ***

#1 Le 06/12/2012, à 23:26

Burstfury

Script Lecture Variable

Bonjour,

J'ai un serveur NAS le hp EX470 qui par défaut est installé avec windows 2003. Comme je n’apprécie pas ce system d'exploitation j'ai installé ubuntu 12.04 qui fonctionne très bien. Mais il me reste un problème à réglé qui sont les leds en façade, elle me permettent de voir la santé des disques dur.

J'ai trouvé un script sur le net qui me permet de les faire fonctionné, mais je dois modifier manuellement quelques lignes, car à chaque sda,sdb,sdc,sdd change.

Tout d'abord pour avoir les bonnes informations je tappe la commande suivant :
ls -l /sys/block/sd*
Ca me permet de recupere cette information.

lrwxrwxrwx 1 root root 0 déc.   6  2012 /sys/block/sda -> ../devices/pci0000:00/0000:00:05.0/host0/target0:0:0/0:0:0:0/block/sda
lrwxrwxrwx 1 root root 0 déc.   6  2012 /sys/block/sdb -> ../devices/pci0000:00/0000:00:05.0/host0/target0:0:1/0:0:1:0/block/sdb
lrwxrwxrwx 1 root root 0 déc.   6  2012 /sys/block/sdc -> ../devices/pci0000:00/0000:00:05.0/host2/target2:0:0/2:0:0:0/block/sdc
lrwxrwxrwx 1 root root 0 déc.   6  2012 /sys/block/sdd -> ../devices/pci0000:00/0000:00:05.0/host2/target2:0:1/2:0:1:0/block/sdd
lrwxrwxrwx 1 root root 0 déc.   6  2012 /sys/block/sde -> ../devices/pci0000:00/0000:00:03.3/usb1/1-2/1-2:1.0/host4/target4:0:0/4:0:0:0/block/sde

Et voici le script ou je dois modifier les variable HD0 HD1 HD2 HD3
Dans le script  pour le disque dr HD0 je dois modifier le chiffre apres "host"  je dois faire de même pour "target" et remplacer le "3" suivie des 0:0:0:0 par  le chiffre "0" qui est le disque dur "sdA", et je dois faire ca pour HD0 et HD1, alors que pour le HD3 et HD4 je dois utiliser le chiffre 2.

#!/bin/bash

## Here are my 4 disk paths in sysfs
HD0="/sys/class/scsi_host/host3/device/target3:0:0/3:0:0:0"
HD1="/sys/class/scsi_host/host3/device/target3:0:1/3:0:1:0"
HD2="/sys/class/scsi_host/host4/device/target4:0:0/4:0:0:0"
HD3="/sys/class/scsi_host/host4/device/target4:0:1/4:0:1:0"


## First lets check if all drives are responding to hdparm
DRIVES_OK=1
for drive in $(ls /dev/disk/by-id/ata-*|grep -v part)
do
 /sbin/hdparm -i $drive >/dev/null 2>&1 || DRIVES_OK=0
done
if [ 0 -eq $DRIVES_OK ]
then
  # not all drives are talking with hdparm, rescan needed
  echo 0 0 0 > /sys/class/scsi_host/host0/scan
  echo 0 1 0 > /sys/class/scsi_host/host0/scan
  echo 0 0 0 > /sys/class/scsi_host/host1/scan
  echo 0 1 0 > /sys/class/scsi_host/host1/scan
fi

# set default color (faulty drive)
STATE0=red
STATE1=red
STATE2=red
STATE3=red

# check each drive using sysfs. Set LED to blue if disk is ok
if [ -f  "$HD0/state" ]
then
 cat "$HD0/state" | grep -q running && STATE0=blue
fi
if [ -f  "$HD1/state" ]
then
 cat "$HD1/state" | grep -q running && STATE1=blue
fi
if [ -f  "$HD2/state" ]
then
 cat "$HD2/state" | grep -q running && STATE2=blue
fi
if [ -f  "$HD3/state" ]
then
 cat "$HD3/state" | grep -q running && STATE3=blue
fi

# Execute the binary to update LED status <img src="http://blog.sokkar.org/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley"> 
/root/bin/e47x_setleds $STATE0 $STATE1 $STATE2 $STATE3
exit 0

Et il possible de modifier le script pour que cela ce face automatiquements ou je suis condamné à le faire la main à chaque reboot.
J'espere avoir était le plus clair possible si vous avez besoin d'autres informations pas à demander.
Merci beaucoup pour toute aide!.

Hors ligne

#2 Le 07/12/2012, à 00:06

pingouinux

Re : Script Lecture Variable

Bonsoir,
Ce que tu veux faire, est-ce bien de remplacer les lignes 4 à 7 du second fichier (HD0=… à HD3=…) par la sortie de cette commande ?

ls -l /sys/block/sd{a..d}|awk -F"/" '{printf("HD%d=\"/sys/class/scsi_host/%s/device/%s/%s\"\n",NR-1,$8,$9,$10)}'

Ajouté :
Si c'est bien ça, voici comment modifier ton fichier :

head -3 fichier_initial >fichier_modifie

ls -l /sys/block/sd{a..d}|awk -F"/" '{printf("HD%d=\"/sys/class/scsi_host/%s/device/%s/%s\"\n",NR-1,$8,$9,$10)}' >>fichier_modifie

tail -n +8 fichier_initial >>fichier_modifie

Dernière modification par pingouinux (Le 07/12/2012, à 00:33)

Hors ligne

#3 Le 07/12/2012, à 02:02

Burstfury

Re : Script Lecture Variable

Bonjour,

Merci beaucoup pingouinux ta solution fonctionne parfaitement merci encore ! ^^

Hors ligne

#4 Le 07/12/2012, à 08:25

pingouinux

Re : Script Lecture Variable

Il y a même plus simple, si les valeurs ne changent pas. C'est de conserver le fichier modifié dans un coin, et de le copier sur l'original lors du reboot.

Hors ligne

Haut de page ↑