Il y a actuellement 244 visiteurs
Mercredi 24 Avril 2024
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: 9041
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: 9041
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 [Réglé] Fichier ADMINISTRATEUR n apparait plus
Bonjour,Je n'arrive plus à faire apparaître le fichier administrateurj'avais cliqué sur WINDOWS puis sur UTILISATEURensuite j'ai fait un clique droit sur ADMINISTRATEUR j'ai fait une erreur DANS PROPRIETE j'ai coché la case Cachédepuis le fichier est introuvableComment le récupérer merci
Réponses: 2

Message Renommer/supprimer des fichier avec caractères spéciaux
Salut,Sur un disque externe (NTFS) je me suis retrouvé avec des fichiers nommés sous la forme "10-XML::SAX::PurePerl" ou "Authen::SASL::Perl::GSSAPI.3pm.gz".Je veux virer tout ça, mais impossible car ils contiennent des ":".Très confiant, j'ai pris mon système préféré, ...
Réponses: 3

Message [Réglé] Aide pour analyse fichier FRST
Bonsoir,J'ai une fenêtre Powershell.exe qui s'ouvre et se ferme quelques minutes après le démarrage et ca n'était pas le cas avant.Mise à jour windows et mise à jour Nvidia récente.J'ai effectué une analyse et j'ai obtenu les fichiers texte suivants.Est ce que quelqu'un peut m'aider et me dire de qu ...
Réponses: 7

Message [Réglé] Streaming : Télécharger un fichier mp3
Bonjour à toutes et à tous,J'espère que ma question n'est pas hors charte. Si elle l'est, je vous prie de m'en excuser et vous pourrez supprimer mon topic.Je souhaiterais télécharger cette émission :Le problème étant réglé, le lien ayant perdu toute nécessité a été suppriméJ'ai cliqué droit sur la f ...
Réponses: 1

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


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités


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