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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    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 801
    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 801
    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 335
    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 335
    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
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 635
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 635
    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.

  5. #5
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    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 !

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 283
    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 ?

  7. #7
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 287
    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 287
    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

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 129
    Par défaut conseils pour affinement durée presence fichier
    Bonjour tout le monde,

    J'aurai besoin d'un éclairage pour obtenir un affinement sur les durées de présence de fichiers sur un serveur

    Il semblerait que les résultats à la base soient intéressant mais je trouve tout de même un peu imprécis les durées.

    Voici le code dont on m'a bien aidé et j'en remercie les contributeurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #!/bin/bash
     
    repRecherche=/poche/guibs/sftpusers/
    log=/poche/guibs/log/fichierlog.txt
     
     
    ftime=`stat -c %Z $repRecherche`
    ctime=`date +%s`
    diff=$(( (ctime - ftime) / 86400 ))
    #echo $diff >> "$log"
    if test -n "$(find "$repRecherche" -maxdepth 0 -empty)"; then
    	echo "Aucun fichier n'existe"
    	exit 1
    fi
     
    find "$repRecherche" -printf "%h/%f : dernier accès le %AA %Ad %AB %AY à %AH:%AM:%.2AS \n dernière modification le %TA %Td %TB à %TH:%TM:%.2TS \n durée de présence du fichier \"$diff\" \n\n\n"  -type f \( -name "*.flag" -o -name "*.tar.gz" -o -name "*.zip" -o -name "*.txt" \) > "$log"
    Voici en image les résultats

    Nom : resultat.JPG
Affichages : 266
Taille : 212,2 Ko


    Premièrement comment éliminer la première ligne ? Elle ne me sert pas puisque c'est le répertoire 'sftpusers" de base dans lequel il y a tous les sous répertoires avec les fichiers déposés dedans.

    Deuxièmement comment seulement afficher la durée de présence des fichiers et pas leur répertoire parent ? Exemple pour le fichier "txtfile.txt" je ne souhaite pas afficher la durée de présence du répertoire "int". La ligne "durée de présence du fichier "2"" est incohérente car c'est un répertoire.

    Enfin, comment affiner la durée de présence du fichier ? En effet, si je prends "txtfile.txt" ce fichier est présent depuis lundi 26 septembre 2022, nous sommes le vendredi 30 septembre donc cela fait au moins 4 jours

    Voila je sèche grandement sur ces points et demande donc votre aide et vous remercie par avance.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 635
    Par défaut
    en l'état, ton script ne peut pas faire ce que tu veux. relis ma précédente réponse

    la table de données existe-t-elle
    • oui
      • comparer
      • mettre à jour
      • afficher les résultats

    • non
      • créer table de données

    là, on a un début d'algorithme !

    le format de ton fichier log est lisible par humain, ce qui implique qu'il sera très difficile à traiter programmatiquement.
    ton fichier log devrait être au format CSV (nom fichier;date accès (depuis Epoch);date modification (depuis Epoch);autres données pertinentes;...) pour être facilement traité par un script.
    et c'est le script qui produira un truc lisible naturellement par l'utilisateur.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

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


    Malheureusement je n'ai pas les capacités pour réaliser un autre script c'est pour moi super dur sans connaissances et malgré ce que j'ai pu lire sur divers sites

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 283
    Par défaut
    L'avantage des connaissances, c'est que ça s'acquiert. Ce forum n'est pas un outil de livraison de travail gratuit. Tu ne réponds pas aux questions que les habitués du forum te posent. As-tu une liste des fichiers à vérifier ? Cette liste est-elle fixe ? Relis les messages des intervenants et applique leurs conseils (rédiger un algorithme en bon français, par exemple).

  12. #12
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 287
    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 287
    Par défaut
    Citation Envoyé par saga974 Voir le message
    Je vous sollicite pour avoir les meilleurs conseils sur un script.
    pas plus simple de dire tout simplement, je suis allergique à la ligne de commande, je ne désire lire aucune documentation et je n'ai aucune compétence en programmation.
    Pouvez-vous m'écrire un programme ?
    Malheureusement, ce forum a pour but d'aider les codeurs et non de travailler gracieusement à la place des autres

    Citation Envoyé par saga974 Voir le message
    Malheureusement je n'ai pas les capacités pour réaliser un autre script
    mais ici, il n'y a même pas un script ! une pauvre ligne de code qui ne fait même pas le travail n'a pas d'intérêt. Le "script" actuel, c'est peut-être que 2% du script final donc tout mettre à la poubelle peut être une bien meilleure option que s'entêter sur une pente plus que savonneuse.


    Citation Envoyé par saga974 Voir le message
    - 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.
    - à une certaine heure pour vérifier que des fichiers ne doivent pas être présents sans raison.
    Comme indiqué #60, il faut faire une maquette du fichier (type excel?) que l'on désire pour notre finalité (pas obligatoirement un fichier log)

    Si je sais lire, le but FINAL est (une alerte en temps "réel" et pas un rapport "stats" sur x jours)
    - de tester si des fichiers non autorisés sont présents sur les serveurs ftp ?
    - de tester si des fichiers (obligatoires) sont bien présents (A une certaine heure) ?


    - Pourquoi ne lister que 3 extensions ???? si le but est de dépister les fichiers non autorisés ... "monfilm.mkv" de 36 Go n'est même pas détecté. Donc script inutile !
    - Pour vérifier les fichiers "obligatoires", ici aussi, on n'a qu'un simple contrôle manuel. Donc script inutile puisqu'il ignore actuellement cette fonctionnalité !
    Uniquement ici que la notion de date arrive ? "certaine heure". Avec un script qui tourne une fois par jour, difficile de tester une présence à une certaine heure. Donc script actuel inutile !

    ------------

    Ainsi, sans définir exactement ce que l'on désire en sortie (et la finalité exacte), il n'y a aucune raison d'entamer l'écriture du script. Sauf si on aime perdre son temps (mais puisque c'est le nôtre ).

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 635
    Par défaut
    c'est sûr quavec un objectif mal défini, c'est moins facile de déterminer les étapes pour y arriver.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  14. #14
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 801
    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 801
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par saga974 Voir le message
    mais je trouve tout de même un peu imprécis les durées.
    Qu'entends-tu par "imprécis" ? Une division entière de secondes par 86400 donne une durée entière en jours (mathématiques niveau 5°). Si tu veux plus de précision, à toi d'indiquer comment la calculer. C'est toi qui dirige ton code, pas ton code qui te dirige (adaptation de la citation d'Edgar Grospiron qui a dit "c'est toi qui dirige tes skis, ce ne sont pas tes skis qui te dirigent").

    Citation Envoyé par saga974 Voir le message
    Premièrement comment éliminer la première ligne ? Elle ne me sert pas puisque c'est le répertoire 'sftpusers" de base dans lequel il y a tous les sous répertoires avec les fichiers déposés dedans.

    Deuxièmement comment seulement afficher la durée de présence des fichiers et pas leur répertoire parent ? Exemple pour le fichier "txtfile.txt" je ne souhaite pas afficher la durée de présence du répertoire "int". La ligne "durée de présence du fichier "2"" est incohérente car c'est un répertoire.
    Le find demande d'abord le ciblage, puis ensuite l'action. Donc "-type" et "-name" en premier puis "-print" ensuite.

    Citation Envoyé par saga974 Voir le message
    Enfin, comment affiner la durée de présence du fichier ? En effet, si je prends "txtfile.txt" ce fichier est présent depuis lundi 26 septembre 2022, nous sommes le vendredi 30 septembre donc cela fait au moins 4 jours
    La variable "diff" que tu affiches à chaque fois est le résultat du calcul entre ctime (date du jour) et de ftime (date du dossier "repRecherche"). Partant de là, je ne vois pas trop comment ça pourrait afficher la durée de présence du fichier "txtfile.txt"
    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]

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

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

    Qd je dis imprécis c'est surtout le fait que j'ai créé un fichier un lundi et un vendredi et dans le code qui calcule une différence il est impossible que ca me remonte le même nombre de jour de présence c'est pour cela que je dis "imprécis".

    Je vois demain pour essayer de switcher la commande find et regarderai les résultats produits et te tiendrai au courant.

    Pour la variable diff, il faut donc que je précise pour le fichier ? Mais quelle commande rajouter en plus de repRecherche et qui puisse prendre en compte l'ensemble des fichiers situés dans les sous répertoires ? J'ai cherché sur le net mais pas forcément tout compris à ce qui se dit.



    Citation Envoyé par Sve@r Voir le message
    Qu'entends-tu par "imprécis" ? Une division entière de secondes par 86400 donne une durée entière en jours (mathématiques niveau 5°). Si tu veux plus de précision, à toi d'indiquer comment la calculer. C'est toi qui dirige ton code, pas ton code qui te dirige (adaptation de la citation d'Edgar Grospiron qui a dit "c'est toi qui dirige tes skis, ce ne sont pas tes skis qui te dirigent").


    Le find demande d'abord le ciblage, puis ensuite l'action. Donc "-type" et "-name" en premier puis "-print" ensuite.


    La variable "diff" que tu affiches à chaque fois est le résultat du calcul entre ctime (date du jour) et de ftime (date du dossier "repRecherche"). Partant de là, je ne vois pas trop comment ça pourrait afficher la durée de présence du fichier "txtfile.txt"

  16. #16
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 801
    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 801
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par saga974 Voir le message
    Qd je dis imprécis c'est surtout le fait que j'ai créé un fichier un lundi et un vendredi et dans le code qui calcule une différence il est impossible que ca me remonte le même nombre de jour de présence c'est pour cela que je dis "imprécis".
    Ben oui mais comme tu affiches à chaque fois le même résultat, résultat qui n'est jamais recalculé, tu obtiens à chaque fois la même valeur. Que cette valeur ne te convienne pas c'est compréhensible mais là encore c'est toi qui dirige ton script. Si tu veux afficher la valeur de "truc", il te faut au préalable récupérer la valeur de "truc" et non pas la valeur de "machin".

    Citation Envoyé par saga974 Voir le message
    Pour la variable diff, il faut donc que je précise pour le fichier ? Mais quelle commande rajouter en plus de repRecherche et qui puisse prendre en compte l'ensemble des fichiers situés dans les sous répertoires ? J'ai cherché sur le net mais pas forcément tout compris à ce qui se dit.
    Normal, car encore une fois tu atteints les limites de find et ça m'étonnerait que dans ce qui se dit ailleurs il y ait une réponse concrète à ta préoccupation, c'est probablement pour ça que tu ne comprends pas ce qui s'y dit. "find" ce n'est pas la-commande-magique-qui-peut-tout-faire (et à mon avis elle en fait déjà trop par rapport à la philosophie Unix qui dit "une commande ne fait qu'une chose simple mais la fait bien").
    Tu veux traiter de façon très particulière les fichiers retournés par find, c'est possible mais à toi de programmer l'action comme j'ai montré un exemple ici. Et c'est ça la philosophie Unix, une commande ne fait qu'une chose simple mais la fait bien et si je veux une chose complexe, à moi alors d'associer les différentes commandes entre elles pour obtenir mon résultat. Et c'est faisable car toutes les commandes ont la même structure à savoir un même point d'entrée (stdin) et un même point de sortie (stdout) et on peut alors connecter la sortie de l'une à l'entrée de l'autre pour obtenir le résultat que l'on veut. Comme des legos qui ne sont au départ que carrés et cubes mais qu'on peut associer les uns avec les autres pour former des objets.

    Citation Envoyé par saga974 Voir le message
    Malheureusement je n'ai pas les capacités pour réaliser un autre script c'est pour moi super dur sans connaissances et malgré ce que j'ai pu lire sur divers sites
    Il n'y a pas de honte à manquer de connaissance. La honte c'est d'en manquer et de ne rien faire pour y remédier. Il y a plein de tutos de shell sur le net, ainsi que l'un d'entre eux mentionné dans ma signature (ok il est vieux donc ne contient pas toutes les dernières technologies mais tout ce qui y est écrit est utilisable). En as-tu téléchargé un seul ? En plus tu es enseignant franchement!!! Comment réagirais-tu si tes élèves te disaient "ouais je sais pas faire mais c'est normal car je manque de connaissances" ???
    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]

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