IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Vérification et liste fichiers


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 129
    Par défaut Vérification et liste fichiers
    Bonjour,
    Je vous sollicite pour avoir les meilleurs conseils sur un script.

    En effet, je souhaiterais dans un premier temps faire un script qui liste tous les fichiers avec des extensions du style .flag .tar.gz .zip d'une VM dans une certaine arborescence exemple : /poche/guibs/sftpusers/dossier1 /poche/guibs/sftpusers/dossier2 etc.
    Le résultat de l'analyse des fichiers trouvés serait envoyé dans un fichier de logs à un certain endroit de la VM exemple poche/guibs/log/fichierlog.txt et il préciserait la date à laquelle les
    fichiers se trouvent dans leurs répertoires et depuis quand ils y sont (voire d'autres infos utiles : taille, extension, heure à laquelle ils ont été déposés,
    durée de leur présence sur la VM)
    Ensuite avec une sorte de planification ce script serait lancé au moins une fois par jour.

    Vous allez me dire avec des commandes linux on y arrive, certes, mais le but de le réaliser en script serait d'automatiser la chose et que
    cette tâche de vérification de présence de fichiers ne soit plus rendue manuelle et qu'on aille pas vérifier un à un dans les 500 sous répertoires s'il y'a bien des fichiers présents.

    Le petit plus serait même d'avoir une petite notification par mail
    envoyant le log sur la boîte mail à une certaine heure pour vérifier que des fichiers ne doivent pas être présents sans raison.

    Par avance merci de votre aide

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par saga974 Voir le message
    Je vous sollicite pour avoir les meilleurs conseils sur un script.
    Ah? Un nouveau script qui va poser 50 questions avant de faire ce qu'on peut faire en une commande avec les bonnes options

    Citation Envoyé par saga974 Voir le message
    En effet, je souhaiterais dans un premier temps faire un script qui liste tous les fichiers avec des extensions du style .flag .tar.gz .zip d'une VM dans une certaine arborescence exemple : /poche/guibs/sftpusers/dossier1 /poche/guibs/sftpusers/dossier2 etc.
    find /poche/guibs/sftpusers/dossier[1234567] -type f \( -name "*.flag" -o -name "*.tar.gz" -o -name "*.zip" \) -print (-o = "or")
    Après si les extensions ciblées doivent être modulables ça peut se faire aussi (à voir si nécessaire)

    Citation Envoyé par saga974 Voir le message
    Le résultat de l'analyse des fichiers trouvés serait envoyé dans un fichier de logs à un certain endroit de la VM exemple poche/guibs/log/fichierlog.txt et il préciserait la date à laquelle les fichiers se trouvent dans leurs répertoires et depuis quand ils y sont (voire d'autres infos utiles : taille, extension, heure à laquelle ils ont été déposés,
    find ... -exec ls -l {} \; >poche/guibs/log/fichierlog.txt.

    Citation Envoyé par saga974 Voir le message
    durée de leur présence sur la VM
    Euh là ça devient difficile. Déjà on va arrêter de parler de "VM". Une "VM" c'est juste un ordinateur simulé donc dans la VM, tout se comporte comme sur un vrai ordi.
    Donc sur un ordi tu veux connaitre la durée de présence d'un fichier et ça malheureusement ce n'est pas possible.
    En effet, un fichier ne contient que 3 dates
    • la atime (acces time): date d'accès, mise à jour chaque fois qu'on accède au fichier, ne serait-ce qu'en regardant qu'il existe. Elle est tellement mise à jour dans tous les cas qu'elle ne sert plus à rien (comme un chien qui aboierait tout le temps, à force on n'y fait plus attention). A tel point qu'il existe des options "-noatime" et "-nodiratime" à la commande "mount" permettant de monter un filesystem sans que ces dates soient mises à jour (donc accès plus rapide). Je les ai activées sur ma machine.
    • la mtime (modification time): date de modification, mise à jour à chaque fois que le fichier est modifié. Elle elle est pertinente (c'est celle-là qui est affichée dans le "ls -l") mais comme elle change, on perd la date d'origine
    • la ctime (qui n'est pas comme on peut le croire la création time mais la change time): date mise à jour chaque fois que l'inode change. Pour simplifier, un fichier c'est deux parties, l'inode qui contient ses caractéristiques comme type, droits, propriétaire, etc et la data qui contient le contenu textuel du fichier. Et là encore cette date change

    Donc il n'existe pas de date qui indique le moment où le fichier est arrivé. J'ai parfois évoqué l'intérêt de créer un "etime" (epoch time) qui donnerait cette info mais pour l'instant ce n'est pas à l'ordre du jour. Et donc contrairement aux films MI1, MI2, MI3,..., MI47 ; Unix/Linux n'est pas un super système où Tom Cruise peut venir dire "ce fichier a été créé il y a 8 jours et effacé il y a 3 heures mais on peut le retrouver en analysant les fragments restés présents" ou autres absurdités du même genre. Qu'il se contente de piloter ses F/A-18, là au-moins c'est plus crédible.

    Citation Envoyé par saga974 Voir le message
    Ensuite avec une sorte de planification ce script serait lancé au moins une fois par jour.
    Ah pour ça il y a le cron, l'équivalent (en mieux) du planificateur de tâches. Tu lui dis quoi lancer et quand le lancer et il te le lance. Il y a aussi le "anacron", son petit frère qui lui, peut lancer les taches en retard parce que machine arrêtée. Donc deux outils magnifiques pour l'admin qui, comme tout admin Unix/Linux qui se respecte, est un flemmard accompli.

    Citation Envoyé par saga974 Voir le message
    Le petit plus serait même d'avoir une petite notification par mail
    envoyant le log sur la boîte mail à une certaine heure pour vérifier que des fichiers ne doivent pas être présents sans raison.
    Ah ben le cron est précu pour. Etant donné que l'utilisateur n'est pas forcément présent quand la tache s'exécute, son résultat lui est envoyé par mail. Petit plus offert par la maison.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 362
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Euh là ça devient difficile. Déjà on va arrêter de parler de "VM". Une "VM" c'est juste un ordinateur simulé donc dans la VM, tout se comporte comme sur un vrai ordi.
    Donc sur un ordi tu veux connaitre la durée de présence d'un fichier et ça malheureusement ce n'est pas possible.
    En effet, un fichier ne contient que 3 dates
    • la atime (acces time): date d'accès, mise à jour chaque fois qu'on accède au fichier, ne serait-ce qu'en regardant qu'il existe. Elle est tellement mise à jour dans tous les cas qu'elle ne sert plus à rien (comme un chien qui aboierait tout le temps, à force on n'y fait plus attention). A tel point qu'il existe des options "-noatime" et "-nodiratime" à la commande "mount" permettant de monter un filesystem sans que ces dates soient mises à jour (donc accès plus rapide). Je les ai activées sur ma machine.
    • la mtime (modification time): date de modification, mise à jour à chaque fois que le fichier est modifié. Elle elle est pertinente (c'est celle-là qui est affichée dans le "ls -l") mais comme elle change, on perd la date d'origine
    • la ctime (qui n'est pas comme on peut le croire la création time mais la change time): date mise à jour chaque fois que l'inode change. Pour simplifier, un fichier c'est deux parties, l'inode qui contient ses caractéristiques comme type, droits, propriétaire, etc et la data qui contient le contenu textuel du fichier. Et là encore cette date change

    Donc il n'existe pas de date qui indique le moment où le fichier est arrivé. J'ai parfois évoqué l'intérêt de créer un "etime" (epoch time) qui donnerait cette info mais pour l'instant ce n'est pas à l'ordre du jour. Et donc contrairement aux films MI1, MI2, MI3,..., MI47 ; Unix/Linux n'est pas un super système où Tom Cruise peut venir dire "ce fichier a été créé il y a 8 jours et effacé il y a 3 heures mais on peut le retrouver en analysant les fragments restés présents" ou autres absurdités du même genre. Qu'il se contente de piloter ses F/A-18, là au-moins c'est plus crédible.
    Hmmm... sur ext4 (car ça dépend du type de FS en fait) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ LC_ALL=C stat test_file 
      File: test_file
      Size: 5         	Blocks: 8          IO Block: 4096   regular file
    Device: 817h/2071d	Inode: 22685429    Links: 1
    Access: (0664/-rw-rw-r--)  Uid: ( 1000/disedorgue)   Gid: ( 1000/disedorgue)
    Access: 2022-09-23 17:46:31.808508198 +0200
    Modify: 2022-09-23 17:46:13.616182616 +0200
    Change: 2022-09-23 17:46:13.616182616 +0200
     Birth: 2022-09-23 17:45:49.743755583 +0200

  4. #4
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 324
    Par défaut
    Bonjour
    Citation Envoyé par saga974 Voir le message
    sollicite pour avoir les meilleurs conseils sur un script
    ...
    Vous allez me dire avec des commandes linux on y arrive, certes, mais le but de le réaliser en script serait d'automatiser la chose
    Des conseils sur quoi exactement ?
    - "un script" je ne vois même pas un début donc difficile de parler du néant
    - les commandes "manuelles" linux : Il faut clairement les écrire dans un premier temps, sinon c'est utopique de penser à un script

    ps: oui, il est possible que la commande stat puisse avoir une utilité

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stat --printf '%n : %W => %w\n' *.*
    Citation Envoyé par saga974 Voir le message
    durée de leur présence sur la VM
    A plus ou moins, la fréquence de lancement de ce script

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    Citation Envoyé par Sv@er
    [Tom Cruise q]u'il se contente de piloter ses F/A-18, là au-moins c'est plus crédible.
    tu dis ça parce que tu ne travailles pas en F/A18 !
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 129
    Par défaut
    Bonjour à tous !!

    Merci pour vos réponses. Bon je ne suis pas doué avec les scripts ne m'en voulez pas s'il vous plait.

    Avec vos conseils j'ai essayé, je dis bien essayé d'en produire un + des recherches sur internet mais cela ne fonctionne pas du tout


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #!/bin/bash
    # Shell script pour lister l'ensemble des fichiers dans l'arbo entière de sftpusers (sous-répertoires et fichiers inclus)
     
     
    FOLDER=/poche/guibs/sftpusers/*;
    for FILE in $FOLDER
    do
    find /poche/guibs/sftpusers/* -type f \( -name "*.flag" -o -name "*.tar.gz" -o -name "*.zip" \) -print >poche/guibs/log/fichierlog.txt
     
     
    done

    En fait je me suis rendu compte qu'il fallait une ligne de commande qui permette de dire dans un premier temps s'il y a la présence de fichiers dans l'arborescence. Donc dans un premier temps il balaie l'ensemble des fichiers et il me renvoie fichiers présents ou fichiers non présents. Si fichiers non présents fin du script. Donc je pourrai utiliser ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if [ -e  /poche/guibs/sftpusers/*]
    then
        echo "Des fichiers existent"
    else
        echo "Aucun fichier n'existe pas"
    fi
    Malheureusement je ne sais pas comment imbriquer tout cela en un unique code.

    Citation Envoyé par N_BaH Voir le message
    tu dis ça parce que tu ne travailles pas en F/A18 !

  7. #7
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Bonjour

    Je ne suis peut-être pas réveillé, mais j'ai rien compris. Ce que tu décris est le principe d'une boucle. S'il n'y a pas de fichier, il ne fait rien; s'il y a des fichiers, il agit sur les fichiers. Nul besoin de test.

    D'ailleurs, c'est quoi un fichier non présent ?

  8. #8
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 129
    Par défaut
    Bonjour Flodelarab,

    Si tu résumes bien l’attendu.

    Mais je n'arrive pas à imbriquer le bout bout de script qui testerait d'abord s'il y a des fichiers présents.

    Donc en gros s'il ne trouve pas de fichier il quitte le script et il me met le message il n'y a pas de fichier et s'il trouve des fichiers il me l'indique et continue l'action du script.

  9. #9
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    Bonjour,

    la boucle ne sert à rien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/bin/sh
     
    repRecherche=/poche/guibs/sftpusers/
    log=$repRecherche/fichierlog.txt
     
    find "$repRecherche" -type f \( -name "*.flag" -o -name "*.tar.gz" -o -name "*.zip" \) -fprint "$log"
    c'est tout.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  10. #10
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par saga974 Voir le message
    Donc en gros s'il ne trouve pas de fichier il quitte le script et il me met le message il n'y a pas de fichier et s'il trouve des fichiers il me l'indique et continue l'action du script.
    Un premier if pas de fichier; then afficher et quitter; fi.
    Ensuite le message qui dit qu'il a trouvé (qui ne s'affichera que si le script arrive jusque là donc s'il n'a pas quitté avant) et commence sa boucle.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  11. #11
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 129
    Par défaut
    1er test du code et retour non concluant :
    J'ai créé un fichier .flag dans l'arborescence mais celui-ci ne remonte pas dans le fichierlog.txt lorsque je l'affiche en vim. Ma question est comment cela se fait il ? Est ce un problème d'extension ?
    J'ai créé un fichier .txt au cas ou et idem. Il y a donc un problème avec le renvoi vers le fichierlog.txt mais quel est-il ?
    Ensuite, dois-je mettre ce bout de code avant le find ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if [ -e  /poche/guibs/sftpusers/*]
    then
        echo "Des fichiers existent"
    else
        echo "Aucun fichier n'existe"
    fi
    Citation Envoyé par N_BaH Voir le message
    Bonjour,

    la boucle ne sert à rien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/bin/sh
     
    repRecherche=/poche/guibs/sftpusers/
    log=$repRecherche/fichierlog.txt
     
    find "$repRecherche" -type f \( -name "*.flag" -o -name "*.tar.gz" -o -name "*.zip" \) -fprint "$log"
    c'est tout.

  12. #12
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par saga974 Voir le message
    1er test du code et retour non concluant :
    J'ai créé un fichier .flag dans l'arborescence mais celui-ci ne remonte pas dans le fichierlog.txt lorsque je l'affiche en vim. Ma question est comment cela se fait il ? Est ce un problème d'extension ?
    J'ai créé un fichier .txt au cas ou et idem. Il y a donc un problème avec le renvoi vers le fichierlog.txt mais quel est-il ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if [ -e  /poche/guibs/sftpusers/*]
    then
        echo "Des fichiers existent"
    else
        echo "Aucun fichier n'existe"
    fi
    Fichier ".flag"=fichier caché, il n'est pas inclus dans "*". Le ".*" pourrait convenir mais il incluerait "." et ".." donc ce serait ".??*" mais quitte à faire des tests, autant les faire avec des fichiers tels qu'on les aurait dans la réalité
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ mkdir aaa
    $ test -e aaa/* && echo "fic" || echo "nofic"
    nofic
    $ touch aaa/toto
    $ test -e aaa/* && echo "fic" || echo "nofic"
    fic

    Et (pour info)
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ rm -fr aaa && mkdir aaa && touch aaa/.flag
    $ test -e aaa/* && echo "fic" || echo "nofic"
    nofic

    Une autre solution: rmdir /poche/guibs/sftpusers 2>/dev/null && mkdir /poche/guibs/sftpusers && echo "Pas de fichiers" && exit...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  13. #13
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 129
    Par défaut
    Alors du coup j'ai réessayé en fait voici le souci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/bin/sh
     
    repRecherche=/poche/guibs/sftpusers/
    log=/poche/guibs/log/fichierlog.txt
     
    find "$repRecherche" -type f \( -name "*.flag" -o -name "*.tar.gz" -o -name "*.zip" -o -name "*.txt" \) -fprint "$log"
    La ca fonctionne bien c'est un problème de chemin. En revanche, il me renvoie bien tous les fichiers mais y'a til possibilité de renvoyer le répertoire dans le quel se trouve le fichier ? Ne faut il pas mettre un -type d ? Par exemple le fichier flag appelé fichiertest.flag est dans un répertoire appelé "repertoire". J'aurai souhaité que le chemin complet s'affiche ainsi que toutes les infos de permissions date ect s'affichent je pense qu'un ls -lR serait pas mal mais comment l'imbriquer dans la commande. Ah ah telle est la question !!!


    Citation Envoyé par saga974 Voir le message
    1er test du code et retour non concluant :
    J'ai créé un fichier .flag dans l'arborescence mais celui-ci ne remonte pas dans le fichierlog.txt lorsque je l'affiche en vim. Ma question est comment cela se fait il ? Est ce un problème d'extension ?
    J'ai créé un fichier .txt au cas ou et idem. Il y a donc un problème avec le renvoi vers le fichierlog.txt mais quel est-il ?
    Ensuite, dois-je mettre ce bout de code avant le find ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if [ -e  /poche/guibs/sftpusers/*]
    then
        echo "Des fichiers existent"
    else
        echo "Aucun fichier n'existe"
    fi

  14. #14
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 129
    Par défaut
    Attends je teste ton bout de code Svear


    Citation Envoyé par Sve@r Voir le message
    Fichier ".flag"=fichier caché, il n'est pas inclus dans "*". Le ".*" pourrait convenir mais il incluerait "." et ".." donc ce serait ".??*" mais quitte à faire des tests, autant les faire avec des fichiers tels qu'on les aurait dans la réalité
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ mkdir aaa
    $ test -e aaa/* && echo "fic" || echo "nofic"
    nofic
    $ touch aaa/toto
    $ test -e aaa/* && echo "fic" || echo "nofic"
    fic

    Et (pour info)
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ rm -fr aaa && mkdir aaa && touch aaa/.flag
    $ test -e aaa/* && echo "fic" || echo "nofic"
    nofic

    Une autre solution: rmdir /poche/guibs/sftpusers 2>/dev/null && mkdir /poche/guibs/sftpusers && echo "Pas de fichiers" && exit...

  15. #15
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 129
    Par défaut
    Svear cela fonctionne à merveille

    j'ai mis ce bout de code :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!/bin/sh
     
    repRecherche=/poche/guibs/sftpusers/
    log=/poche/guibs/log/fichierlog.txt
    test -e $repRecherche/* && echo "Des fichiers existent" || echo "Aucun fichier n'existe"
     
    find "$repRecherche" -type f \( -name "*.flag" -o -name "*.tar.gz" -o -name "*.zip" -o -name "*.txt" \) -fprint "$log"
    Citation Envoyé par saga974 Voir le message
    Attends je teste ton bout de code Svear
    Bon maintenant il me faut les données plus précises qui me permettront de voir l'activité de dépôt des fichiers je teste de mon côté et reviens vers vous si je sèche mais déjà un grand merci pour vos lumières

  16. #16
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par saga974 Voir le message
    Svear cela fonctionne à merveille

    j'ai mis ce bout de code :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/bin/sh
     
    repRecherche=/poche/guibs/sftpusers/
    log=/poche/guibs/log/fichierlog.txt
    test -e $repRecherche/* && echo "Des fichiers existent" || echo "Aucun fichier n'existe"
    Citation Envoyé par saga974 Voir le message
    Donc en gros s'il ne trouve pas de fichier il quitte le script et il me met le message il n'y a pas de fichier et s'il trouve des fichiers il me l'indique et continue l'action du script.
    Un bout de code ça sert à montrer le principe, ensuite on l'adapte à son cas. Si aucun fichier n'existe, alors pourquoi ton script ne s'arrête pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/bash
     
    repRecherche=/poche/guibs/sftpusers/
    log=/poche/guibs/log/fichierlog.txt
    if test ! -e $repRecherche/*; then
    	echo "Aucun fichier n'existe"
    	exit 1
    fi
    echo "Des fichiers existent"
    ... (suite du script)...
    C'est ce que j'avais expliqué ici
    Citation Envoyé par Sve@r Voir le message
    Un premier if pas de fichier; then afficher et quitter; fi.
    Ensuite le message qui dit qu'il a trouvé (qui ne s'affichera que si le script arrive jusque là donc s'il n'a pas quitté avant) et commence sa boucle.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  17. #17
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 362
    Par défaut
    Une petite variante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/bin/sh
     
    repRecherche=/poche/guibs/sftpusers/
    log=/poche/guibs/log/fichierlog.txt
    test -e $repRecherche/* && { 
      echo "Des fichiers existent" 
      find "$repRecherche" -type f \( -name "*.flag" -o -name "*.tar.gz" -o -name "*.zip" -o -name "*.txt" \) -fprint "$log"
      true
    } || { echo "Aucun fichier n'existe" ; false; }

  18. #18
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 129
    Par défaut
    J'ai testé tes 2 solutions elles fonctionnent à merveille et désolé si je n'ai pas compris au début je ne savais pas l'adapter justement

    Citation Envoyé par Sve@r Voir le message
    Un bout de code ça sert à montrer le principe, ensuite on l'adapte à son cas. Si aucun fichier n'existe, alors pourquoi ton script ne s'arrête pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/bash
     
    repRecherche=/poche/guibs/sftpusers/
    log=/poche/guibs/log/fichierlog.txt
    if test ! -e $repRecherche/*; then
    	echo "Aucun fichier n'existe"
    	exit 1
    fi
    echo "Des fichiers existent"
    ... (suite du script)...
    C'est ce que j'avais expliqué ici

  19. #19
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Une petite variante :
    En général je préfère mettre en premier les cas d'echec+exit, ce qui me laisse ensuite libre cours pour coder le travail. Sinon le "false" et "true" servent au code retour du côté appelant? Ben oui (je me réponds car je viens de me souvenir) puisque le code retour par défaut c'est celui de la dernière commande exécutée.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  20. #20
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 362
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    En général je préfère mettre en premier les cas d'echec+exit
    Bah, chacun voit le verre à sa façon (à moitié vide ou à moitié plein), moi, tant que la bouteille n'est pas vide

Discussions similaires

  1. [FTP] Listing fichiers comme sur un FTP
    Par zxr69 dans le forum Langage
    Réponses: 7
    Dernier message: 21/09/2006, 14h22
  2. liste fichiers et numéros
    Par biquet dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 12/07/2006, 15h49
  3. [TinyXML] vérification d'un fichier avec une DTD
    Par vasilov dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 14/03/2006, 15h33
  4. liste fichiers (TListView) avec icones
    Par pjb dans le forum C++Builder
    Réponses: 2
    Dernier message: 01/07/2005, 09h06
  5. Vérification d'un fichier
    Par Oberown dans le forum C++
    Réponses: 10
    Dernier message: 24/08/2004, 16h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo