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

Réseau/Web Python Discussion :

Envoyer des commandes FTP


Sujet :

Réseau/Web Python

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 69
    Points : 59
    Points
    59
    Par défaut Envoyer des commandes FTP
    Bonjour,

    j'ai écrit un petit script qui se connecte à un serveur ftp et j'aimerais pouvoir envoyer via ce script des commandes au serveur.
    Je procède de la manière suivante, une fois connecté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    command = raw_input(host+" > ")
    ftp.sendcmd(command)
    Or visiblement, ce n'est pas la bonne manière de procéder puisqu'une exception est soulevée à chaque fois. Que dois-je faire pour que ça fonctionne ?

    Merci d'avance
    Pascal

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Points : 923
    Points
    923
    Par défaut
    Il nous faudrait plus de détails
    Que représente ta variable ftp ?
    Quelle est l'erreur ?

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 69
    Points : 59
    Points
    59
    Par défaut
    Plus présisément, mon code se présente comme ceci :

    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
     
    from ftplib import FTP
     
    def FTPConnexion(host, user, password): # Fonction de connexion
        ....
        ftp = FTP(host,user,password)
        while 1:
            command = raw_input(host+" > ")
            if command == "close":
                break
            else:
                try:
                    ftp.sendcmd(command)
                except:
                    print "Erreur lors de l'envoi de la commande \""+command+"\" !"
                    break
    J'espère que ça rend plus claire ma question...
    Pascal

  4. #4
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    il serait mieux d'écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                try:
                    ftp.sendcmd(command)
                except Exception, err:
                    print err
                    print "Erreur lors de l'envoi de la commande \""+command+"\" !"
                    break
    Ce qui permettrait d'avoir la valeur de l'exception

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Points : 923
    Points
    923
    Par défaut
    Sinon tu peux aussi relancer l'exception avec raise à la fin de ton except, ne serait-ce que pour la "voir" entièrement

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 69
    Points : 59
    Points
    59
    Par défaut
    Ok,ça à l'air de fonctionner pour certaines commandes, comme "pwd", mais si par exemple j'entre la commande "ls", l'erreur est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    500 LS not understood
    Pascal

  7. #7
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 46
    Points : 58
    Points
    58
    Par défaut
    ça depends ce que tu mets dans "command" car la fonction "sendcmd" envoie une commande d'un point de vu protocole. C'est à dire que le contenu de command sera envoyé tel quel, si jamais tu mets un truc du genre "ls" ça ne marchera pas. (ls est une commande utilisateur).

    Bref pour ton probleme il serai plus interessant que tu parse ta ligne de commande ensuite tu fait appel a la methode de la classe FTP qui va bien un peu comme ça:

    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
     
    command = raw_input(host+" > ")
    tokens = command.split()
    cmd = tokens[0]
    if cmd == "ls":
       result = ftp.nlst()
       # traitement de result
    elif cmd == "pwd":
       result = ftp.pwd()
       # traitement de result
    elif cmd == "delete":
       try:
          filename = tokens[1]:
       except IndexError:
          # il faut un nom de fichier a supprimer
       else:
          result = ftp.delete(filename)
          # traitement resultat ...
     
    ... etc etc

  8. #8
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 46
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par Pascmar
    Ok,ça à l'air de fonctionner pour certaines commandes, comme "pwd", mais si par exemple j'entre la commande "ls", l'erreur est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    500 LS not understood
    normal "LS" n'est pas une commande protocole, la command protocole qui permet de lister un repertoire c'est NLST ou LIST. A moins de connaitre par coeur les différentes commandes protocole du FTP ainsi que tout leurs parametres et formattage tu ne peux utiliser sendcmd comme tu le fait.

  9. #9
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 69
    Points : 59
    Points
    59
    Par défaut
    Ok, je comprends, merci beaucoup !
    Pascal

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

Discussions similaires

  1. Envoyer des commandes en IP
    Par kkt8 dans le forum Windows
    Réponses: 1
    Dernier message: 23/04/2010, 17h49
  2. [Web/Reseaux] envoyer des commandes à une caméra Vivotek
    Par lili81 dans le forum C++Builder
    Réponses: 4
    Dernier message: 22/03/2010, 16h32
  3. Envoyer des commandes vers un PID
    Par lil-works dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 16/02/2009, 09h31
  4. Réponses: 2
    Dernier message: 06/07/2007, 15h01
  5. Envoyer des commands a un serveur ftp
    Par sitirna dans le forum C++Builder
    Réponses: 3
    Dernier message: 02/09/2006, 12h16

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