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 :

FTP macdef et lcd boggués ou bien


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Octobre 2009
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Octobre 2009
    Messages : 482
    Par défaut FTP macdef et lcd boggués ou bien
    Bonjour,

    J'ai résolu mon probleme mais un peu par hasard, et donc, deux questions taraudent le mega noob () :

    1) lcd
    a) Execution à la mano : Ok
    b) Execution en shell : Nok
    c) Remplacement du "lcd" par un "cd" placé avant la macro ftp : Ok

    Dans le cas b), le fichier à copier n'est pas trouvé lors de l'execution du shell, alors qu'il l'est lors de l'execution manuelle, dans les mêmes conditions, depuis le même répertoire.
    Dans le cas c), en se plaçant dans le repertoire source avant l'execution de la macro (par un "cd"), le shell fonctionne également.

    => Est ce que la commande "lcd" est bloquée ou inhibée en mode "macro" FTP (Debian Lenny) ?

    2) macdef <nom_macro>
    Si j'essaye de remplacer le nom de la macro par une composition plus .. disons personnelle, le script bloque. En clair, ça bloque dès que je mets un autre nom de macro que "init". Or je n'ai trouvé nulle part que ces noms étaient prédéfinis...

    => Aurais-je (encore) loupé qq chose ?

    Merci d'avance


    Je mets mon shell diabolique le cas échéant - au moins j'espère que ça vous fera marrer - :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    #!/bin/sh
     
    # ################################################################################
    # usage: my_send_ftp <dest_ip> <sh local_file_path> <remote_file_path>
    # ################################################################################
     
    # #########################################################
    # TODO
    # remote chmod 0755 if shell script to be sent : quote site chmod xxx [file name] 
    # #########################################################
     
    # ####################################
    # INIT
    # ####################################
    echo -n "0) preliminary  checks : "
     
    # credentials
    HOST=$1
    PORT="21"
    FTP_USER="foo"
    FTP_PWD="bar"
    EXCHANGE="ascii" #"binary" # or ascii for text files
     
    # Local directories & files
    [ -z $HOME ] || [ ! -d $HOME ] && HOME=/home
    NETRC=$HOME/.netrc
    LOGME=$HOME/ftp.log
    LOCAL_FILE=$2
    [ ! -f $LOCAL_FILE ] && echo "local file not exists" && exit 1
    LOCAL_DIR=$(dirname $LOCAL_FILE)
    LOCAL_FILE=$(basename $LOCAL_FILE)
     
    # remote directories & files
    REMOTE_FILE=$3
    REMOTE_DIR=$(dirname $REMOTE_FILE)
    REMOTE_FILE=$(basename $REMOTE_FILE)
     
    # a few parameter controls
    PARAMETERS=$#
    [ $PARAMETERS -ne 3 ] && echo "missing input parameters" && exit 1
    [ -z $HOST ] && echo "missing destination HOST parameter!" && exit 1
    [ ! -d $LOCAL_DIR ] && echo "local dir not exists" && exit 1
    [ -z $LOCAL_FILE ] && echo "missing file to be sent" && exit 1
    [ -z $REMOTE_FILE ] && echo "missing /destination/path/file" && exit 1
     
     
    # checkpoint : ping HOST
    ping -c1 $HOST >/dev/null
    [ $? -ne 0 ] && echo "$HOST not reachable " && exit 1
     
    # else if all is ok
    echo "done"
     
     
     
    echo -n "1) backup previous netrc: "
    [ -f $NETRC ] && cp $NETRC $NETRC".bak"
    [ -f $NETRC ] && rm $NETRC
    echo "done"
     
    # CLOSING FTP RUNNING PROCESSES
    echo -n "2) clear ftp running processes : "
    pgrep "^ftp$" | xargs kill -9 2>/dev/null
    echo "done"
     
    # Now Send the file
    echo -n "3) send local file to the remote ip : "
    ACTION="lcd $LOCAL_DIR\nmkdir $REMOTE_DIR\ncd $REMOTE_DIR\nput $LOCAL_FILE"
    echo "doing now : \n$ACTION\n"
    cd $LOCAL_DIR
    echo "machine $HOST login $FTP_USER password $FTP_PWD" > $NETRC 
    echo "macdef init" >> $NETRC
    echo "$EXCHANGE" >> $NETRC
    echo -e "$ACTION" >> $NETRC
    echo "quit" >> $NETRC
    echo "" >> $NETRC
    chmod 0600 $NETRC
    ftp $HOST >> $LOGME
    echo "done"
     
    # Final closing (PROCESSES FTP incl .netrc)
    echo -n "4) clear all FTP processes: "
    pgrep "^ftp$" | xargs kill -9 2>/dev/null
    [ -f $NETRC ] && cp $NETRC $NETRC".bak"
    [ -f $NETRC ] && rm $NETRC
    echo "done"
     
    # "This is the end, yes the end" (Jim M.)
    echo "END"
    exit 0

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    bof
    je suis sur Debian Lenny aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    cat ~/netrc
    machine monServeur
    login monLogin
    passwd monPass
     
    macdef whatever
    lcd /home/nbah/public_html
    ls
    close
     
    echo '$ whatever' | /usr/bin/ftp -p
    Local directory now /home/nbah/public_html
    -rw-r--r--   1 monLogin     monLogin         7713 Sep 27  2009 dot_nanorc
    je n'ai pas trouvé d'infos sur la macro init dans la manpage, mais je suppose que cela existe pour être exécuté automatiquement par défaut...
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre chevronné
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Octobre 2009
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Octobre 2009
    Messages : 482
    Par défaut
    merci pour cette info.

    Je dois avoir un problème de config quelque part ailleurs, au fin fond de méandres inconnus et obscurs pour moi.

    Je vais essayer sur une autre Lenny pour voir.

    Je passe en résolu et je garde ce point en suspens, quitte à reposter ultérieurement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment bien déboguer son code ?
    Par D[r]eadLock dans le forum Débuter
    Réponses: 47
    Dernier message: 02/04/2024, 16h06
  2. Programmer encore en VB 6 c'est pas bien ? Pourquoi ?
    Par Nektanebos dans le forum Débats sur le développement - Le Best Of
    Réponses: 85
    Dernier message: 10/03/2009, 14h43
  3. Sur 192 etc, HTTP passe bien mais pas FTP
    Par gifffftane dans le forum Administration
    Réponses: 8
    Dernier message: 04/07/2008, 14h27
  4. FTP et D5
    Par sdidier dans le forum Web & réseau
    Réponses: 2
    Dernier message: 17/07/2002, 10h45
  5. Problème de transfert FTP sous IIS
    Par thanathz dans le forum Développement
    Réponses: 2
    Dernier message: 12/07/2002, 15h27

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