Il y a actuellement 124 visiteurs
Jeudi 08 Juin 2023
accueilactualitésdossierscomparer les prixtélécharger gratuitement vos logicielsoffres d'emploiforum informatique
Connexion
Créer un compte

Condition pour tester l'existence d'un fichier ne marche pas

Besoin d'aide pour configurer un serveur ? Vous souhaitez obtenir des conseils pour référencer votre site ? Un petit souci pour accéder à votre FTP ? Des soucis de programmation en PHP / ASP / HTML / XHTML / XML / XSLT / CSS / ReactJS / AngularJS / VueJS / CGI / PERL / C / MySQL / PostgreSQL ??? Nous avons peut-être la solution dans ce forum ...

Condition pour tester l'existence d'un fichier ne marche pas

Message le 25 Mar 2011 16:28

Bonjour à tous !

Je suis débutant et j'ai un souci avec avec la condition dans mon script en batch.
J'aimerai mettre au point pour mes cours un script qui contrôle les fichiers qui ont le droit Suid sur na machine.

Voici ce que j'aimerai mettre en place :

Lors du premier lancement du script, un fichier est créé contenant tous les fichiers qui ont le droit Suid.Ensuite, lors des prochains lancements du scripts, il va détecter que mon fichier existe et en créera un autre temporaire dans lequel il mettra la nouvelle liste des fichiers en Suid. Enfin il fera un diff des 2 fichiers pour les comparer.

Le problème , c'est que ma condition ne marche pas...

Voici mon code :

#!/bin/bash

original=/root/Bureau/scripts/Setuid.txt
temporaire=/root/Bureau/scripts/Setuidtemp.txt
base=/

if [ -e $orignal]
then
touch $temporaire
recherche=`find $base -type f -perm -u=s -print`
for fichiers in $recherche
do
detail=`ls -l $fichiers`
echo $detail >> $temporaire
done
diff -a $orignal $temporaire
rm $temporaire
else
touch $orignal
recherche=`find $base -type f -perm -u=s -print`
for fichiers in $recherche
do
detail=`ls -l $fichiers`
echo $detail >> $orignal
done
fi
exit

En gros au début je teste si mon fichier existe. Si il existe je crée un fichier temporaire et je fais le diff des 2.
Si il n'existe pas je le crée (le ELSE).

Le problème c'est qu'il ne passe pas au ELSE alors que le fichier n'existe pas... il crée le fichier temporaire et forcément le diff affiche une erreur. La condition ne marche pas... Au secours !!! Je suis pomé là...


Bonne journée et merci d'avance !
shinobitom
Apprenti(e) Expert(e)
Apprenti(e) Expert(e)
 
Messages: 148
Inscription: 14 Avr 2009 19:06
 


Re: Condition pour tester l'existence d'un fichier ne marche

Message le 26 Mar 2011 12:14

Oups j'ai Pas commenté mon code PARDOnnn

En gros ce que je voudrais obtenir c'est :

Si le fichier original existe
Création d'un fichier temporaire qui répertorie les fichiers Suid
diff du fichier original et du temporaire
Sinon
Création du fichier original répertoriant les fichiers Suid

C'est tout bête mais il ne prend pas la condition... Il ne passe pas au "sinon" alors que mon fichier n'existe pas...
:cry:

#!/bin/bash

#Variables

original=/root/Bureau/scripts/Setuid.txt # variable contenant le chemin de mon fichier original
temporaire=/root/Bureau/scripts/Setuidtemp.txt #contient le chemin de mon fichier temporaire
base=/ #base de la recherche

#corps de mon code

if [ -e $orignal ] # si le fichier original fichier existe
then #alors
touch $temporaire #création du fichier temporaire
recherche=`find $base -type f -perm -u=s -print` # recherche des fichiers Suid
for fichiers in $recherche # pour chaque fichiers trouvés
do #faire
detail=`ls -l $fichiers` #ls -l du fichier
echo $detail >> $temporaire # écrire le résultat dans mon fichier temporaire
done
diff -a $orignal $temporaire # différence ds 2 fichiers pour voir si un fichier Suid à été rajouté
rm $temporaire # Supression du fichier temporaire
else #Sinon
touch $orignal #Je créé le fichier original
recherche=`find $base -type f -perm -u=s -print` #Je recherche les fichiers Suid
for fichiers in $recherche #Pour chaque fichiers trouvés
do #faire
detail=`ls -l $fichiers` #ls-l du fichier
echo $detail >> $orignal #écrire le résultat dans mon fichier temporaire
done
fi
exit



Je comprends pas pourquoi il ne passe pas au "sinon" alors que la condition est fausse.. 8O.

Merci d'avance !
shinobitom
Apprenti(e) Expert(e)
Apprenti(e) Expert(e)
 
Messages: 148
Inscription: 14 Avr 2009 19:06
 

Re: Condition pour tester l'existence d'un fichier ne marche

Message le 26 Mar 2011 12:15

AAAj'arrive pas à espacer et mettre des alinéas pour indenter mon code !!!! ça passe pas après que j'envoie... COmment je peux faire? ( lol alalala il est vraiment nul ce débutant en batch !)
shinobitom
Apprenti(e) Expert(e)
Apprenti(e) Expert(e)
 
Messages: 148
Inscription: 14 Avr 2009 19:06
 

Re: Condition pour tester l'existence d'un fichier ne marche

Message le 26 Mar 2011 17:10

Pour l'indentation, sers toi de la balise code : [ code ][ /code ] qui est faite pour cela.
Il doit te manquer un ";" apres la condition :

Code: Tout sélectionner
if [ -e $orignal ];                                                   # si le fichier original fichier existe
       then                                                           #alors


shinobitom a écrit:( lol alalala il est vraiment nul ce débutant en batch !)

Meuhh non, par contre t'es débutant en commentaire de code... on commente par ce genre de truc :
do #faire

parce que si on sait pas ce que "do" fait, on va pas lire le code...
en encore moins ceci :
detail=`ls -l $fichiers` #ls -l du fichier

commenter un 'ls -l " pour dire que c'est un "ls -l"... heu c'est inutile
Je te dis cela car ça a aussi un grand intérêt de savoir commenter du code, presque autant que de savoir le faire ;-)
Avatar de l'utilisateur
CaSa
PC-Infopraticien
PC-Infopraticien
 
Messages: 9028
Inscription: 13 Mai 2003 16:32
Localisation: Sisteron... et jamais loin d'une Debian
 

Re: Condition pour tester l'existence d'un fichier ne marche

Message le 27 Mar 2011 13:20

Lol ! J'avoue ! ( a bon do ça veut dire faire ? :lol: )

Merci bien !

Bon par contre t'es sûr pour ";" dans la condition ? J'ai jamais vu ça sur les tutos et les cours de Batch que j'ai suivi...

Par contre j'ai trouvé la solution ! Il faut mettre des doubles côtes au niveau de la variable dans la condition sinon il la prend pas... J'ai mis if [ -e $original ] à la place de if [ -e "$original" ].

A+
shinobitom
Apprenti(e) Expert(e)
Apprenti(e) Expert(e)
 
Messages: 148
Inscription: 14 Avr 2009 19:06
 

Re: Condition pour tester l'existence d'un fichier ne marche

Message le 27 Mar 2011 22:04

[quote="shinobitom"Bon par contre t'es sûr pour ";" dans la condition ? J'ai jamais vu ça sur les tutos et les cours de Batch que j'ai suivi...[/quote]
Chapitre 4 - les conditions
=> http://www.trustonme.net/didactels/148.html
Avatar de l'utilisateur
CaSa
PC-Infopraticien
PC-Infopraticien
 
Messages: 9028
Inscription: 13 Mai 2003 16:32
Localisation: Sisteron... et jamais loin d'une Debian
 

Re: Condition pour tester l'existence d'un fichier ne marche

Message le 29 Mar 2011 11:07

Bonjour,

Le ";" indique une fin d'instruction, le lien donné par CaSa indique un ";" après la fin de la condition et avant le "then".

Personnellement, je mets le "then" sur la ligne d'après.

Ces 2 codes sont donc bon :

Code: Tout sélectionner
if [ -e $orignal ]; then
  #code
fi

Code: Tout sélectionner
if [ -e $orignal ]
then
  #code
fi



shinobitom a écrit:Par contre j'ai trouvé la solution ! Il faut mettre des doubles côtes au niveau de la variable dans la condition sinon il la prend pas... J'ai mis if [ -e $original ] à la place de if [ -e "$original" ].


Je viens de faire un test et chez moi (gentoo 2.6.36 r5) ça fonctionne avec ou sans doubles quotes... Peut-être un paramétrage ou une différence de version.
Avatar de l'utilisateur
RobinSG
Moderateur
Moderateur
 
Messages: 1509
Inscription: 29 Juin 2004 14:26
Localisation: Atys
 



Sujets similaires

Message Intégrer fichier audio dans story instagram
Bonjour Gàbor, Tu as essayé ceci. Voir rubrique "Ajouter de la musique à un Story Instagram depuis son mobile Android"Bonne journée
Réponses: 1

Message Problème envoi fichier PDF
BonjourJ'aimerai envoyer un fichier PDF à un destinataire, sauf que je veux qu'il arrive en image "brute" si j'ose m'exprimer ainsi. je m'explique, mon fichier est sur acrobat et quand je l'envoi le destinataire à le document mais avec les plages d'illustration, etc...je prends comme exemp ...
Réponses: 2

Message Fichier PDF
Hello à tousne sachant pas sur quel forum aller je me tourne vers vousmon CV est au format PDF, j'ai changer de numéro de portable et j'aimerai savoir si y a possibilité de corriger ce numéro merci
Réponses: 7

Message souci fichier swf de videosurveillance
BonjourJ'ai un vieux système de vidéo-surveillance qui vient de tomber en panne. J'ai réussi à récupérer les fichier en SWF mais IMPOSSIBLE de les lire! J'ai essayé de les convertir, d'utiliser plusieurs logiciels de lecture, tous me disent: "erreur de lecture" et ce sur l'ensemble des fic ...
Réponses: 4

Message installation d'un fichier compressé tar.gz
BonjourA chaque fois que j'ai ce genre de chose a faire, ça me donne l'impression d'être encore un débutant avec linux. Ce que j'ai trouvé sur le net, ne m'aide pas du tout, les explications ne correspondent pas à ce que j'ai. Comment puis-je installé, ce truc secret. Merci
Réponses: 7

Message Fichier ".ssoi" ... le retour.
Voilà les fichiers après analyse:Shortcut.txtFRST.txtAddition.txt
Réponses: 18

Message [Résolu] Fichier ".ssoi"
BonjourJ'ai été hacké par un ransomware qui me réclame 980 $ pour me donner une cléf pour décripter les fichiers virolés.voilà ce que j'ai déjà fait :- J'ai formaté mon dd externe deux fois pour tout supprimer ces cochonneries qui se sont logés dans mes fichiers audio, j'avais une sauvegarde sur un ...
Réponses: 15


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


.: Nous contacter :: Flux RSS :: Données personnelles :.