Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[HS] Aide sur script

4 réponses
Avatar
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=90

> 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

4 réponses

Avatar
b0bba
b0bba wrote:
ssh $IP -l root df -k


Il suffit d'ajouter un -n :

ssh -n $IP -l root df -k

--
b0bba

Avatar
noone
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 ?

Avatar
Luc.Habert.00__arjf
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.

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