[HS] Aide sur script

Le
b0bba
Bonjour,

Conscient d'être hors charte, je m'en excuse d'avance.

J'ai un problème sur ce script :

> #!/bin/sh

> #FICHIER DE CONF
> CONF=fichier.cfg

> #SEUIL DES ALARMES
> SEUIL

> while read IP SOURCE
> do
> ssh $IP -l root df -k | awk '{ print $6,$7 }' | sed
-e "s/%//g" | sed '1d' > $IP.log

> while read OCCUPATION PARTITION
> do
> if [ "$OCCUPATION" -lt $SEUIL ]
> then
> echo "pas de probleme sur $SOURCE :
$PARTITION est a $OCCUPATION%"
> else
> echo "incident sur $SOURCE : $PARTITION est a
$OCCUPATION%"
> fi
> done < $IP.log
> rm $IP.log
> done < $CONF

La connexion en ssh empeche la deuxieme ligne du fichier de
configuration d'etre bouclée.

Quels sont mes alternatives en shell?

Merci.

--
b0bba
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
b0bba
Le #1903326
b0bba wrote:
ssh $IP -l root df -k


Il suffit d'ajouter un -n :

ssh -n $IP -l root df -k

--
b0bba

noone
Le #1903325
On Wed, 10 Oct 2007 09:06:16 +0200, b0bba wrote:

La connexion en ssh empeche la deuxieme ligne du fichier de
configuration d'etre bouclée.

Quels sont mes alternatives en shell?

Merci.


visiblement tu veux monitorer tes machines, pourquoi ne pas utiliser
MRTG ?

Luc.Habert.00__arjf
Le #1903324
b0bba :

La connexion en ssh empeche la deuxieme ligne du fichier de
configuration d'etre bouclée.


Ton ssh lit sur son stdin pour transmettre au df distant (qui ne lit en fait
pas, mais il y a un buffer à remplir avant que ça bloque) qui est le même
que celui de la boucle, c'est à dire ton fichier de conf. Quand le ssh
quitte, la tête de lecture (qui est partagée, car c'est le même file handle)
a atteint le bout du fichier de conf, et le shell n'a plus rien à lire.

Il suffit d'ajouter un « <&- » au ssh pour fermer son stdin.

Au passage, tu pourrais directement piper la sortie de ton ssh dans la
boucle qui suit plutôt que de passer par un fichier intermédiaire.

b0bba
Le #1903315
Luc Habert wrote:
Il suffit d'ajouter un « <&- » au ssh pour fermer son stdin.


J'ai ajouté l'option -n et ça fonctionne très bien, merci de ta réponse.

Au passage, tu pourrais directement piper la sortie de ton ssh dans la
boucle qui suit plutôt que de passer par un fichier intermédiaire.


Bien vu !

C'est maintenant chose faite.

Merci pour ce "tuning" de script et pour les explications nettes sur le
stdin de ssh.

--
b0bba

Publicité
Poster une réponse
Anonyme