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 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