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

Python Discussion :

aide pour script python


Sujet :

Python

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Points : 15
    Points
    15
    Par défaut aide pour script python
    Bonjour,
    je cherche un script en python dont le role est de mémoriser (dans la liste de chaines Utilisateurs) le nom de tous les utilisateurs ayant tenté de s'authentifier sur un serveur ftp dont le fichier de log se trouve ci joint...
    Le nom d'un utilisateur ne peut apparaitre qu'une seule fois dans la variable Utilisateurs.

    et enfin un script Python dont le role est de memoriser (dans la variable Plans), le nom de tous les fichiers (plans) concernes par les tentatives de telechargement (qu'elles aient abouti ou non).
    Pour chaque fichier, le nombre de tentatives dolt etre memorise.
    Plans sera donc un dictionnaire dont les clefs seront les noms des fichiers et les valeurs les nombre de tentatives de téléchargement.

    Si quelqu'un pouvait me donner des indications pour ces 2 scripts
    Merci

    fichier.log:

    (000011) 22/10/2008 14:11:09 - (not logged in) (172.20.50.33)> Connected, sending welcome message...
    (000011) 22/10/2008 14:11:09 - (not logged in) (172.20.50.33)> 220-FileZilla Server
    (000011) 22/10/2008 14:11:09 - (not logged in) (172.20.50.33)> 220-IGN
    (000011) 22/10/2008 14:11:11 - (not logged in) (172.20.50.33)> USER coco
    (000011) 22/10/2008 14:11:11 - (not logged in) (172.20.50.33)> 331 Password required for coco
    (000011) 22/10/2008 14:11:14 - (not logged in) (172.20.50.33)> PASS ******
    (000011) 22/10/2008 14:11:14 - (not logged in) (172.20.50.33)> 530 Login or password incorrect!
    (000011) 22/10/2008 14:11:14 - (not logged in) (172.20.50.33)> SYST
    (000011) 22/10/2008 14:11:14 - (not logged in) (172.20.50.33)> 215 UNIX emulated by FileZilla
    (000011) 22/10/2008 14:11:17 - (not logged in) (172.20.50.33)> PORT 172,20,50,33,140,94
    (000011) 22/10/2008 14:11:17 - (not logged in) (172.20.50.33)> 530 Please log in with USER and PASS first.
    (000011) 22/10/2008 14:11:25 - (not logged in) (172.20.50.33)> QUIT
    (000011) 22/10/2008 14:11:25 - (not logged in) (172.20.50.33)> 221 Goodbye
    (000011) 22/10/2008 14:11:25 - (not logged in) (172.20.50.33)> disconnected.
    (000012) 22/10/2008 14:11:28 - (not logged in) (172.20.50.33)> Connected, sending welcome message...
    (000012) 22/10/2008 14:11:28 - (not logged in) (172.20.50.33)> 220-FileZilla Server
    (000012) 22/10/2008 14:11:28 - (not logged in) (172.20.50.33)> 220-IGN
    (000012) 22/10/2008 14:11:30 - (not logged in) (172.20.50.33)> USER coco
    (000012) 22/10/2008 14:11:30 - (not logged in) (172.20.50.33)> 331 Password required for coco
    (000012) 22/10/2008 14:11:33 - (not logged in) (172.20.50.33)> PASS ******
    (000012) 22/10/2008 14:11:33 - coco (172.20.50.33)> 230 Logged on
    (000012) 22/10/2008 14:11:33 - coco (172.20.50.33)> SYST
    (000012) 22/10/2008 14:11:33 - coco (172.20.50.33)> 215 UNIX emulated by FileZilla
    (000012) 22/10/2008 14:11:35 - coco (172.20.50.33)> PORT 172,20,50,33,183,193
    (000012) 22/10/2008 14:11:35 - coco (172.20.50.33)> 200 Port command successful
    (000012) 22/10/2008 14:11:35 - coco (172.20.50.33)> LIST
    (000012) 22/10/2008 14:11:35 - coco (172.20.50.33)> 150 Opening data channel for directory list.
    (000012) 22/10/2008 14:11:35 - coco (172.20.50.33)> 226 Transfer OK
    (000012) 22/10/2008 14:11:43 - coco (172.20.50.33)> PORT 172,20,50,33,128,39
    (000012) 22/10/2008 14:11:43 - coco (172.20.50.33)> 200 Port command successful
    (000012) 22/10/2008 14:11:43 - coco (172.20.50.33)> RETR rouen.pln
    (000012) 22/10/2008 14:11:43 - coco (172.20.50.33)> 150 Opening data channel for file transfer.
    (000012) 22/10/2008 14:11:43 - coco (172.20.50.33)> 226 Transfer OK
    (000012) 22/10/2008 14:11:44 - coco (172.20.50.33)> QUIT
    (000012) 22/10/2008 14:11:44 - coco (172.20.50.33)> 221 Goodbye

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 222
    Points : 290
    Points
    290
    Par défaut
    Si j'ai bien compris ce que tu veux faire, il suffit de repérer les lignes où USER et RETR apparaissent dans fichier log. Il faut tout de même faire attention car le mot USER apparait également à la ligne "530 Please log in with USER and PASS first". Il y a peut être d'autre exception à gérer.
    Voici un exemple:

    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
     
    listUser = []
    plans = {}
    file = open('fichier.log')
    lines = file.readlines()
    for line in lines:
        #si il y a USER dans la ligne et pas 530
        #il y a peut etre d'autre exception a verifier
        if 'USER' in line and not "530" in line:
            #recupere l'index du mot USER
            index = line.find('USER')
            #recupere le nom de l'utilisateur
            user = line[index+5:-1]
            #pour eviter les doublons
            if not user in listUser:
                listUser.append(user)
        #si il y a RETR dans la ligne
        elif 'RETR' in line:
            #recupere l'index du mot RETR
            index = line.find('RETR')
            #recupere le nom du fichier
            fileName = line[index+5:-1]
            #si le fichier est deja dans le dico
            if fileName in plans:
                #on incremente la valeur
                nbrDownload = plans[fileName]
                plans[fileName] += 1 
            #sinon on l'ajoute avec une valeur de 1
            else:
                plans[fileName] = 1
    file.close()
     
    print listUser
    print plans
    J'espère avoir répondu à ta question.

Discussions similaires

  1. aide pour script python
    Par bansan dans le forum Programmation multimédia/Jeux
    Réponses: 0
    Dernier message: 28/11/2008, 19h41
  2. [mIRC] besoin d'aide pour scripting
    Par emile13 dans le forum IRC / mIRC
    Réponses: 5
    Dernier message: 03/03/2007, 00h05
  3. Aide pour script d'analyse d'évènements
    Par Spear- dans le forum VBScript
    Réponses: 7
    Dernier message: 18/10/2006, 11h49
  4. aide pour script php/mysql
    Par jem27 dans le forum Débuter
    Réponses: 18
    Dernier message: 27/03/2006, 18h08
  5. aides pour script en shell
    Par komatek dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 12/08/2003, 15h36

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