Verifier l'existance d'un fichier
Résolu
MarMottE
-
MarMottE -
MarMottE -
Il y a 6 minutes. #
Salut à tous,
Voilà j'essaye de faire un script en shell qui doit verifier si le fichier de la veille existe bien dans le dossier.
J'arrive bien à lister la liste de dossier mais après je suis bloqué, j'ai essayé une boucle for avec un if mais sans succès.
Voici mon script
SRV='/bin/cat referentiel.csv | /usr/bin/awk -F";" '{ print $1 }''
POLICY='/bin/cat referentiel.csv | /usr/bin/awk -F";" '{ $1 = "" ; print $0 }''
#for SRV
for i in "$SRV"
do
echo "${SRV}"
if [ -f /home/jmi/Policy/${SRV}/${POLICY}_${DATE}.html.gz ]; then
echo "OK"
fi
done
Pour la boucle for je ne suis pas sur du tout
Voici le résultat du script :
baltazarre
melchiore
pacman
yoshi
./check_policy.sh: ligne 39 : [: trop d'arguments
Merci d'avance
Salut à tous,
Voilà j'essaye de faire un script en shell qui doit verifier si le fichier de la veille existe bien dans le dossier.
J'arrive bien à lister la liste de dossier mais après je suis bloqué, j'ai essayé une boucle for avec un if mais sans succès.
Voici mon script
SRV='/bin/cat referentiel.csv | /usr/bin/awk -F";" '{ print $1 }''
POLICY='/bin/cat referentiel.csv | /usr/bin/awk -F";" '{ $1 = "" ; print $0 }''
#for SRV
for i in "$SRV"
do
echo "${SRV}"
if [ -f /home/jmi/Policy/${SRV}/${POLICY}_${DATE}.html.gz ]; then
echo "OK"
fi
done
Pour la boucle for je ne suis pas sur du tout
Voici le résultat du script :
baltazarre
melchiore
pacman
yoshi
./check_policy.sh: ligne 39 : [: trop d'arguments
Merci d'avance
A voir également:
- Verifier l'existance d'un fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
3 réponses
Salut,
Déjà il faudrait qu'on puisse voir ton script dans sa totalité, parce qu'une erreur à la ligne 39 ça ne veut rien dire pour nous ;-((
De plus on ne sait même pas si $DATE est déclarée, et si oui, comment ;-(
Ta boucle "for" n'a aucune chance d'aboutir dans la mesure ou la variable "$i" n'est utilisée nulle part ;-(
De plus, je suppute l'existence d'espace dans les informations ramenées par ta variable "$SRV" ;-\
Pour finir, la recherche du fichier de la veille devrait pouvoir être cherché avec la commande find ou comparée avec les attributs natifs du fichier, du moins il me semble...
Déjà il faudrait qu'on puisse voir ton script dans sa totalité, parce qu'une erreur à la ligne 39 ça ne veut rien dire pour nous ;-((
De plus on ne sait même pas si $DATE est déclarée, et si oui, comment ;-(
Ta boucle "for" n'a aucune chance d'aboutir dans la mesure ou la variable "$i" n'est utilisée nulle part ;-(
De plus, je suppute l'existence d'espace dans les informations ramenées par ta variable "$SRV" ;-\
Pour finir, la recherche du fichier de la veille devrait pouvoir être cherché avec la commande find ou comparée avec les attributs natifs du fichier, du moins il me semble...
Salut,
Je te met la totalité du script. Pour la boucle ma variable i n'est déclaré nul part. Et pour la recherche il m'a été demandé de m'appuyer sur un fichier source avec le nom des serveur et les fichiers qui doivent être présent.
#! /bin/sh
#Verification de la présence des Policy Files CMA
$1
## VARIABLES
DATE='date +%Y-%m-%d -d'1 days ago''
PATH="/home/jmi/Policy/"
GREP="/bin/grep"
#_NAG_RET_OK=0
#_NAG_RET_CRITICAL=2
##TRAITEMENTS
SRV='/bin/cat referentiel.csv | /usr/bin/awk -F";" '{ print $1 }''
POLICY='/bin/cat referentiel.csv | /usr/bin/awk -F";" '{ $1 = "" ; print $0 }''
#for SRV
for i in "$SRV"
do
echo "${SRV}"
if [ -f /home/jmi/Policy/${SRV}/${POLICY}_${DATE}.html.gz ]; then
echo "OK"
fi
done
./check_policy.sh: ligne 32 : [: trop d'arguments
Je te met la totalité du script. Pour la boucle ma variable i n'est déclaré nul part. Et pour la recherche il m'a été demandé de m'appuyer sur un fichier source avec le nom des serveur et les fichiers qui doivent être présent.
#! /bin/sh
#Verification de la présence des Policy Files CMA
$1
## VARIABLES
DATE='date +%Y-%m-%d -d'1 days ago''
PATH="/home/jmi/Policy/"
GREP="/bin/grep"
#_NAG_RET_OK=0
#_NAG_RET_CRITICAL=2
##TRAITEMENTS
SRV='/bin/cat referentiel.csv | /usr/bin/awk -F";" '{ print $1 }''
POLICY='/bin/cat referentiel.csv | /usr/bin/awk -F";" '{ $1 = "" ; print $0 }''
#for SRV
for i in "$SRV"
do
echo "${SRV}"
if [ -f /home/jmi/Policy/${SRV}/${POLICY}_${DATE}.html.gz ]; then
echo "OK"
fi
done
./check_policy.sh: ligne 32 : [: trop d'arguments
zipe31 - 4 jun 2011 à 18:22
Dans "/home/jmi/Policy/${SRV}/${POLICY}_${DATE}.html.gz" qu'est sensé contenir "${SRV}" ?
Le nom d'un fichier non ? Style "baltazarre" ou "melchiore" ?
${SRV} contient la liste des noms des serveurs :
baltazarre
melchiore
pacman
yoshi
et $ {POLICY} le nom des fichiers
Dans "/home/jmi/Policy/${SRV}/${POLICY}_${DATE}.html.gz" qu'est sensé contenir "${SRV}" ?
Le nom d'un fichier non ? Style "baltazarre" ou "melchiore" ?
${SRV} contient la liste des noms des serveurs :
baltazarre
melchiore
pacman
yoshi
et $ {POLICY} le nom des fichiers
et $ {POLICY} le nom des fichiers
Il manque une boucle imbriquée alors ;-((
Il faut vérifier l'existence de chaque fichier dans chaque serveur ?
Si oui
Sans conviction...
Il manque une boucle imbriquée alors ;-((
Il faut vérifier l'existence de chaque fichier dans chaque serveur ?
Si oui
Sans conviction...
for i in $SRV # sans les guillemets autour do echo "${i}" for j in ${POLICY} do echo "${j}" if [ -f /home/jmi/Policy/${i}/${j}_${DATE}.html.gz ]; then echo "OK" fi done done
C'est presque ça en tout cas il execute bien mon script maintenant merci pour ton aide mais là il parcours tout les fichiers pour chaque serveurs et moi en faite il faut qu'il affiche les fichiers présent dans le dossier du serveur par ex : serveur baltazarre fichier cma_policy_baltazarre.gz.html ....
Merci
Merci
Euh.... non. Logiquement le script teste pour chaque répertoire contenu dans "${SRV}" (variable ${i}) si le fichier correspondant à "${j}_${DATE}.html.z" existe et affiche OK le cas échéant...
Ne sachant pas ce que contiennent tes répertoires, ni ce que retournent exactement tes variables et n'ayant pas les moyens de tester en direct, je ne peux que faire des suppositions ;-\
Ne sachant pas ce que contiennent tes répertoires, ni ce que retournent exactement tes variables et n'ayant pas les moyens de tester en direct, je ne peux que faire des suppositions ;-\