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 envoi de fichier avec controle taille


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Homme Profil pro
    Webmarketer
    Inscrit en
    Octobre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Octobre 2008
    Messages : 191
    Par défaut Vérification envoi de fichier avec controle taille
    Bonjour,
    j'ai réalisé un petit shell qui appel un fichier texte ect...j'ai réutilisé les batch que j'avais fais pour windows, et je les ai modifiés (si y a des erreurs merci de m'en avertir ).

    Bref, mon code envoi sous un fichier zip des pages html sur un serveur ftp.
    J'aimerais vérifier que les fichiers se sont correctement envoyés, pour cela j'ai pensé a une vérification de la taille a l'octet près avant et après l'envoi. Si le fichier n'est pas entier, il faudrait qu'il ecrive dans un fichier log qu'il crée le nom des fichiers qui ont été mal envoyés.

    De plus, j'aimerais trouver un code qui me permette de récupérer l'ip de ma machine linux afin de pouvoir la mettre dans une variable et de la mettre dans le nom de mon fichier zip.

    Si je demande autant de choses c'est pas parce que je suis fénéant mais parce que je suis en stage en entreprise et qu'il se termine bientot, j'aimerais pouvoir finir mon projet, et je ne trouve rien de très concluant sur le net. J'ai bien trouvé des codes pr trouver l'ip avec ipconfig et find mais je ne sais pas comment le mettre dans une variable ( j'ai jamais vraiment vu les commandes linux ). Merci beaucoup pour votre aide!!
    Voici les codes :

    le .sh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    mkdir /var/SpiralAFServunix
    cd /var/SpiralAFServunix
    mkdir as
    cd as
    ftp -s:envoi.txt ftp.X.net
    del as.zip
    cd /var/SpiralAFServunix
    mkdir pagesgenere
    cd pagesgenere
    ftp -s:envoi2.txt ftp.X.net
    del pg.zip
    le .txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ftu
    ftu
    bin
    mkdir AF
    cd AF
    put as.zip
    bye
    merciiii

  2. #2
    Membre expérimenté
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 248
    Par défaut
    dans ton fichier de commande ftp tu pourrais rajouter une commande:

    logger ta sortie FTP et comparer la taille des fichiers

  3. #3
    Membre confirmé
    Homme Profil pro
    Webmarketer
    Inscrit en
    Octobre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Octobre 2008
    Messages : 191
    Par défaut
    non mais le problème c'est que ls -l m'affiche les droits d'accès , la date aussi en plus du poids en octets... et je ne veux pas le comparer à la main...
    Comment je peux faire pour récupérer juste le poids et le comparer à l'autre poids ? deux variables peut-être ?

  4. #4
    Membre expérimenté
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 248
    Par défaut
    Citation Envoyé par kavdo34 Voir le message
    non mais le prob c'est que ls -l m'affiche les droits accès , la date aussi en plus du poids en octet... et je veux pas le comparer a la main...comment je peux faire pr récupérer juste le poids et le comparer a l-autre poids? deux variables peut etre?
    Il est possible de récupérer la sortie de la commande FTP.

    Il te reste la taille extraite de la sortie de la commande FTP, supprimer les lignes qui ne servent pas, ne garder que la ligne qui affiche la taille de as.zip, extraire cette taille et la comparer avec la taille de ton fichier as.zip local

  5. #5
    Membre confirmé
    Homme Profil pro
    Webmarketer
    Inscrit en
    Octobre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Octobre 2008
    Messages : 191
    Par défaut
    hum hum...plus facile a dire qu'a faire

  6. #6
    Membre expérimenté
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 248
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/bin/bash
    LOCAL_SIZE=`grep "as.zip" | awk '{printf("%d", $5}'`
     
    ftp .......> transfert.log
     
    REMOTE_SIZE=`grep "as.zip" transfert.log | awk '{printf("%d", $5}'`
    if [ "$REMOTE_SIZE" != "$LOCAL_SIZE" ] ; then
        echo "error"
    fi

    Quelque chose comme celà

  7. #7
    Membre confirmé
    Homme Profil pro
    Webmarketer
    Inscrit en
    Octobre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Octobre 2008
    Messages : 191
    Par défaut
    oula ok^^
    je comprend pas grand chose mais jvais le tester.
    merci beacoup!

  8. #8
    Membre confirmé
    Homme Profil pro
    Webmarketer
    Inscrit en
    Octobre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Octobre 2008
    Messages : 191
    Par défaut
    [root@spiral-majuv6test ~]./test1.sh
    awk: cmd. ligne:1: {printf("%d", $5}
    awk: cmd. ligne:1: ^ syntax error
    c'est peut etre parce que mon serveur ftp a un mot de passe non?

  9. #9
    Membre expérimenté
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 248
    Par défaut
    Citation Envoyé par kavdo34 Voir le message
    c'est peut etre parce que mon serveur ftp a un mot de passe non?
    oops....excuse moi y a une fôoote! Décidement j'ai écrit n'importe quoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #!/bin/bash
    LOCAL_SIZE=`ls -l as.zip | awk '{printf("%d", $5}'`
     
    ftp .......> transfert.log
     
    REMOTE_SIZE=`grep "as.zip" transfert.log | awk '{printf("%d", $5)}'`
    if [ "$REMOTE_SIZE" != "$LOCAL_SIZE" ] ; then
        echo "error"
    fi

  10. #10
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    Bonjour,

    Je ne connais pas ftp, mais j'ai bien l'impression qu'il manque une parenthèse fermante à la deuxième ligne (le printf dans awk).

    Cela étant, j'imagine mal un protocole qui n'avertirait pas l'utilisateur si le transfert ne s'était pas bien fait.

  11. #11
    Membre expérimenté
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 248
    Par défaut
    Citation Envoyé par jmelyn Voir le message
    Bonjour,

    Je ne connais pas ftp, mais j'ai bien l'impression qu'il manque une parenthèse fermante à la deuxième ligne (le printf dans awk).
    Oui, il manquait la parenthèse et plein d'autre chose
    Cela étant, j'imagine mal un protocole qui n'avertirait pas l'utilisateur si le transfert ne s'était pas bien fait.
    Le client a toujours raison (même quand il demande quelque chose d'inutile)

  12. #12
    Membre confirmé
    Homme Profil pro
    Webmarketer
    Inscrit en
    Octobre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Octobre 2008
    Messages : 191
    Par défaut
    ????
    je pense que dans ma demande on sentait bien que je ne connaissais pas du tout le sujet! Si il existe une maniere plus intelligente par exemple de reprendre une reponse console je suis tout a fait intéressé! Le truc c'est que je suis incapable de dire si lors d'une microcoupure (et non coupure qui arreterait la connexion reseau), si certains octets n'ont pas été transférés, si le protocole d'échange ftp me signalerait l'abscence de ces derniers

  13. #13
    Membre expérimenté
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 248
    Par défaut
    Citation Envoyé par kavdo34 Voir le message
    ????
    je pense que dans ma demande on sentait bien que je ne connaissais pas du tout le sujet! Si il existe une maniere plus intelligente par exemple de reprendre une reponse console je suis tout a fait intéressé! Le truc c'est que je suis incapable de dire si lors d'une microcoupure (et non coupure qui arreterait la connexion reseau), si certains octets n'ont pas été transférés, si le protocole d'échange ftp me signalerait l'abscence de ces derniers
    En fait dans un transfert de fichier il peut y avoir deux problèmes:
    - des données corrompues
    - des données tronquées

    Pour détecter des données tronquées c'est par la taille du fichier
    Pour détecter des données corrompues c'est par le calcul d'une clé sur l'ensemble du fichier (md5sum par exemple)

    Mais tu peux te reposer sur le code retour de FTP pour savoir si ca c'est bien passé. Sinon, il y a peut être la commande rsync qui pourrait être utilisée si tu es paranoiaque

  14. #14
    Membre confirmé
    Homme Profil pro
    Webmarketer
    Inscrit en
    Octobre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Octobre 2008
    Messages : 191
    Par défaut
    Ce n'est pas une question de paranoïa ; je dois gérer environ 200 serveurs via une application... Cette application doit être utilisée tous les jours par une tache planifiée. Je dois pouvoir couvrir toutes les erreurs possibles...
    Ce n'est pas simplement pour de la culture générale.

  15. #15
    Membre expérimenté
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 248
    Par défaut
    Tu peux envoyer avec chaque fichier, sa clé MD5. Et sur tes 200 serveurs dès que tu a reçu les fichier zip, ils calculent le MD5 des fichiers reçus et comparent la clé avec celle que tu as envoyée. Comme celà tu seras tranquille et tes 200 serveurs tourneront sans problème.

    Exemple:
    si tu envoies un fichier as.zip tu envoies aussi sa clé MD5 dans un fichier nommé as.zip.MD5.

  16. #16
    Membre confirmé
    Homme Profil pro
    Webmarketer
    Inscrit en
    Octobre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Octobre 2008
    Messages : 191
    Par défaut
    ok merci j'vais essayer de trouver ça

  17. #17
    Membre confirmé
    Homme Profil pro
    Webmarketer
    Inscrit en
    Octobre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Octobre 2008
    Messages : 191
    Par défaut
    non en fait j'ai consulté mes supérieurs et je pense que je vais juste faire un fichier dans lequel je mettrais le retour console lors de l'envoi du fichier a une ligne précise. J'ai juste a trouver la ligne de commande qui va me l'écrire dans mon fichier

Discussions similaires

  1. Réponses: 7
    Dernier message: 27/04/2006, 16h51
  2. [VB]Envoie de fichier avec winsock
    Par Xdrei dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 24/03/2006, 09h54
  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. envoie de fichier avec winsock2
    Par chichou10 dans le forum Bibliothèques
    Réponses: 8
    Dernier message: 08/03/2006, 00h38
  5. Envoi de fichier avec Indy
    Par Nicodemus dans le forum Web & réseau
    Réponses: 2
    Dernier message: 28/10/2005, 15h29

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