OVH Cloud OVH Cloud

nmon et ksh

2 réponses
Avatar
Stef(tm)
Bonjour,

Un soucis avec un script qui fait tourner nmon sur des machines sous
AIX 5.1 et 5.2.

Le script suivant plante systematiquement :

#!/bin/ksh
DIR=/home/stef/monitoring-AIX
ADIR=${DIR}/archives
RDIR=${DIR}/reports
NDIR=${RDIR}/nmon
XDIR=${RDIR}/xls
CDIR=${RDIR}/csv
TDIR=${DIR}/tmp
NSUFF=nmon
CSUFF=csv

for i in $(ls ${NDIR}/*.${NSUFF})
do
FULLNAME=$(echo $i |cut -f7 -d"/")
NAME=$(echo ${FULLNAME} |cut -f1 -d".")
TFILE1=${TDIR}/${NAME}.tmp1
TFILE2=${TDIR}/${NAME}.tmp2
RFILE=${CDIR}/${NAME}.${CSUFF}
cp $i ${ADIR}/${FULLNAME}
compress ${ADIR}/${FULLNAME}
sort ${NDIR}/${FULLNAME} > ${TFILE1}
sed -e 's/,/;/g' ${TFILE1} > ${TFILE2}
sed -e 's/\./,/g' ${TFILE2} > ${RFILE}
rm ${TFILE1} ${TFILE2} $i
done

Les variables s'initialisent bien, les reps sont OK, pas de soucis de droits
et je plante au FULLNAME et sur le NAME. Le cut me semble foireux mais j'avoue
ne plus avoir touché de korn shell depuis quelques temps :-(

J'ai essayé avec un ksh sous linux et freebsd et ca passe...

Une idée ?

Stef(tm)

--
-°) System error ! Windows loaded (°-
/\\ //\
_\_v Join the penguin force v_/_

2 réponses

Avatar
Stephane Chazelas
2004-10-14, 20:37(+00), Stef(tm):
Bonjour,

Un soucis avec un script qui fait tourner nmon sur des machines sous
AIX 5.1 et 5.2.

Le script suivant plante systematiquement :

#!/bin/ksh
DIR=/home/stef/monitoring-AIX
ADIR=${DIR}/archives
RDIR=${DIR}/reports
NDIR=${RDIR}/nmon
XDIR=${RDIR}/xls
CDIR=${RDIR}/csv
TDIR=${DIR}/tmp
NSUFF=nmon
CSUFF=csv

for i in $(ls ${NDIR}/*.${NSUFF})


Pourquoi pas

for i in "$NDIR"/*."$NSUFF"

do
FULLNAME=$(echo $i |cut -f7 -d"/")


NDIR etant /home/stef/monitoring-AIX/reports/nmon
il n'y a pas de septieme champ.

Est-ce que tu ne veux pas plutot

FULLNAME=$(basename -- "$i")

ou FULLNAME=${i##*/}

NAME=$(echo ${FULLNAME} |cut -f1 -d".")


On n'utilise pas echo en shell, surtout avec ksh. Laisser une
variable non quotée a une signification speciale en shell, on ne
doit pratiquement jamais faire ca.

NAME=${FULLNAME%%."$NSUFF"}

Tu pouvais aussi faire:

NAME=$(basename -- "$i" ".$NSUFF")

On met "--" pour dire d'arreter de considerer les arguments
comme des options. Sans ca, basename ne sait pas si "$i" doit
etre pris pour une option ou pour le nom d'un fichier.

TFILE1=${TDIR}/${NAME}.tmp1
TFILE2=${TDIR}/${NAME}.tmp2
RFILE=${CDIR}/${NAME}.${CSUFF}
cp $i ${ADIR}/${FULLNAME}


cp -- "$i" "${ADIR}/${FULLNAME}"

compress ${ADIR}/${FULLNAME}


compress -- "${ADIR}/${FULLNAME}"

sort ${NDIR}/${FULLNAME} > ${TFILE1}
sed -e 's/,/;/g' ${TFILE1} > ${TFILE2}
sed -e 's/./,/g' ${TFILE2} > ${RFILE}
rm ${TFILE1} ${TFILE2} $i


sort < "${NDIR}/${FULLNAME}" | tr '[,.] '[;,]' > "$RFILE"

--
Stephane

Avatar
Stef(tm)
Le ven, 15 oct 2004 at 06:41 GMT, Stephane Chazelas nous sussurait :
2004-10-14, 20:37(+00), Stef(tm):
Bonjour,

Un soucis avec un script qui fait tourner nmon sur des machines sous
AIX 5.1 et 5.2.



/.../

On n'utilise pas echo en shell, surtout avec ksh. Laisser une
variable non quotée a une signification speciale en shell, on ne
doit pratiquement jamais faire ca.


Heu... c'est un script pondu par un p'tit gars d'IBM :-|

Merci en tout cas pour ta reponse, j'en suis finalement venu à bout en
le re ecrivant...

Stef(tm)


--
-°) System error ! Windows loaded (°-
/ //
__v Join the penguin force v_/_