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 :

veuillez testez mon script svp


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Septembre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Septembre 2019
    Messages : 6
    Par défaut veuillez testez mon script svp
    bien que le fichier csv et le script soient dans le même fichier j'ai de la misère
    Code Powershell : 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
    # Chemin du fichier trace.csv
    $filePath = "C:\examen\trace.csv"
     
    # Fonction pour extraire les adresses IP uniques à partir du fichier trace.csv
    function Extract-UniqueIPAddresses {
        $csvData = Import-Csv $filePath
        $ipAddresses = $csvData | Where-Object { $_.Info -match "\[SYN\]" } | Select-Object -ExpandProperty "Source IP" -Unique
        $ipAddresses
    }
     
    # Fonction pour extraire les adresses IP uniques en réponse à une connexion TCP
    function Extract-UniqueResponseIPAddresses {
        $csvData = Import-Csv $filePath
        $ipAddresses = $csvData | Where-Object { $_.Info -match "\[SYN, ACK\]" } | Select-Object -ExpandProperty "Destination IP" -Unique
        $ipAddresses
    }
     
    # Fonction pour extraire les protocoles uniques du fichier trace.csv
    function Extract-UniqueProtocols {
        $csvData = Import-Csv $filePath
        $protocols = $csvData | Select-Object -ExpandProperty "Protocol" -Unique
        $protocols
    }
     
    # Afficher le menu et demander le choix de l'utilisateur
    do {
        Clear-Host
        Write-Host "A) extraction des demandes SYN"
        Write-Host "B) extraction des réponses des SYN"
        Write-Host "C) extraction des protocoles utilisés"
        Write-Host "D) vérification de l’existence d’un protocole particulier"
        Write-Host "E) quitter"
        $choice = Read-Host "Faites votre choix : "
     
        switch ($choice) {
            "A" {
                $synAddresses = Extract-UniqueIPAddresses
                Write-Host "Adresses IP ayant demandé une connexion TCP (SYN) :"
                $synAddresses
                Read-Host "Appuyez sur Entrée pour continuer..."
            }
            "B" {
                $synAckAddresses = Extract-UniqueResponseIPAddresses
                Write-Host "Adresses IP ayant répondu à une connexion TCP (SYN, ACK) :"
                $synAckAddresses
                Read-Host "Appuyez sur Entrée pour continuer..."
            }
            "C" {
                $uniqueProtocols = Extract-UniqueProtocols
                Write-Host "Protocoles utilisés dans le fichier trace.csv :"
                $uniqueProtocols
                Read-Host "Appuyez sur Entrée pour continuer..."
            }
            "D" {
                $protocolToFind = Read-Host "Entrez le protocole à rechercher : "
                $csvData = Import-Csv $filePath
                $matchingRows = $csvData | Where-Object { $_."Protocol" -eq $protocolToFind }
                if ($matchingRows) {
                    Write-Host "Lignes correspondantes pour le protocole '$protocolToFind' :"
                    $matchingRows
                }
                else {
                    Write-Host "Le protocole '$protocolToFind' n'existe pas dans le fichier."
                }
                Read-Host "Appuyez sur Entrée pour continuer..."
            }
            "E" {
                Write-Host "Merci d'avoir utilisé notre analyseur. Bonne fin de session."
            }
            default {
                Write-Host "Option non valide. Veuillez entrer une option valide (A, B, C, D ou E)."
                Read-Host "Appuyez sur Entrée pour continuer..."
            }
        }
    } while ($choice -ne "E")

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    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 830
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Ton code n'est pas du Python mais du Powershell. Si tu ne sais même pas dans quel langage tu codes...
    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
    Nouveau membre du Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Septembre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Septembre 2019
    Messages : 6
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Bonjour

    Ton code n'est pas du Python mais du Powershell. Si tu ne sais même pas dans quel langage tu codes...
    desolé j'ai 2 scripts un en powershell et l'autre en python je remet en ordre

    Merci!

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Septembre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Septembre 2019
    Messages : 6
    Par défaut voila le script en question
    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
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    def afficher_menu():
        print("Menu :")
        print("a. Ajout d'utilisateur")
        print("b. Suppression d'utilisateur")
        print("c. Modification du dossier de travail d'un utilisateur")
        print("d. Modification du shell de l'utilisateur")
        print("e. Quitter")
     
    def ajouter_utilisateur():
        nom = input("Entrez votre nom : ")
        prenom = input("Entrez votre prénom : ")
        nom_utilisateur = nom + prenom[:2]
     
        # Vérifie si l'utilisateur existe déjà
        with open("passwd.txt", "r") as f:
            for ligne in f:
                if nom_utilisateur in ligne:
                    print("Cet utilisateur existe déjà.")
                    return
     
        # Ajoute l'utilisateur au fichier passwd.txt
        nouvelle_ligne = f"{nom_utilisateur}:x:1000:1000:,,,:/home/{nom_utilisateur}:/bin/bash\n"
        with open("passwd.txt", "a") as f:
            f.write(nouvelle_ligne)
     
        print(f"Utilisateur {nom_utilisateur} ajouté avec succès.")
     
    def supprimer_utilisateur():
        nom = input("Entrez le nom de l'utilisateur à supprimer : ")
     
        # Supprime l'utilisateur du fichier passwd.txt
        lignes = []
        with open("passwd.txt", "r") as f:
            lignes = f.readlines()
     
        utilisateur_supprime = False
        with open("passwd.txt", "w") as f:
            for ligne in lignes:
                if nom not in ligne:
                    f.write(ligne)
                else:
                    utilisateur_supprime = True
     
        if utilisateur_supprime:
            print(f"Utilisateur {nom} supprimé avec succès.")
        else:
            print(f"Utilisateur {nom} n'existe pas.")
     
    def modifier_dossier_travail():
        nom_utilisateur = input("Entrez le nom de l'utilisateur : ")
     
        # Modifie le dossier de travail de l'utilisateur
        with open("passwd.txt", "r") as f:
            lignes = f.readlines()
     
        utilisateur_trouve = False
        for i in range(len(lignes)):
            if nom_utilisateur in lignes[i]:
                utilisateur_trouve = True
                elements = lignes[i].split(":")
                elements[6] = "/home/" + nom_utilisateur + "/tmp"
                lignes[i] = ":".join(elements) + "\n"
                break
     
        if utilisateur_trouve:
            with open("passwd.txt", "w") as f:
                f.writelines(lignes)
            print(f"Dossier de travail de {nom_utilisateur} modifié avec succès.")
        else:
            print(f"Utilisateur {nom_utilisateur} n'existe pas.")
     
    def modifier_shell():
        nom_utilisateur = input("Entrez le nom de l'utilisateur : ")
        nouveau_shell = input("Choisissez le nouveau shell (sh, ksh, csh, tcsh, zsh, bash) : ")
     
        shells_valides = ["sh", "ksh", "csh", "tcsh", "zsh", "bash"]
     
        if nouveau_shell not in shells_valides:
            print("Shell invalide. Choisissez parmi : sh, ksh, csh, tcsh, zsh, bash.")
            return
     
        # Modifie le shell de l'utilisateur
        with open("passwd.txt", "r") as f:
            lignes = f.readlines()
     
        utilisateur_trouve = False
        for i in range(len(lignes)):
            if nom_utilisateur in lignes[i]:
                utilisateur_trouve = True
                elements = lignes[i].split(":")
                elements[-1] = f"/bin/{nouveau_shell}\n"
                lignes[i] = ":".join(elements)
                break
     
        if utilisateur_trouve:
            with open("passwd.txt", "w") as f:
                f.writelines(lignes)
            print(f"Shell de {nom_utilisateur} modifié avec succès.")
        else:
            print(f"Utilisateur {nom_utilisateur} n'existe pas.")
     
    # Programme principal
    while True:
        afficher_menu()
        choix = input("Choisissez une option (a/b/c/d/e) : ").lower()
     
        if choix == 'a':
            ajouter_utilisateur()
        elif choix == 'b':
            supprimer_utilisateur()
        elif choix == 'c':
            modifier_dossier_travail()
        elif choix == 'd':
            modifier_shell()
        elif choix == 'e':
            break
        else:
            print("Option invalide. Veuillez choisir à nouveau.")
     
    print("Programme terminé.")
    passwd.txt

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    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 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par 15BONES Voir le message
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    nouveau_shell = input("Choisissez le nouveau shell (sh, ksh, csh, tcsh, zsh, bash) : ")
     
    shells_valides = ["sh", "ksh", "csh", "tcsh", "zsh", "bash"]
     
    if nouveau_shell not in shells_valides:
    	print("Shell invalide. Choisissez parmi : sh, ksh, csh, tcsh, zsh, bash.")
    Tu ne sens pas qu'il y a là des répétitions qui pourraient se factoriser ??? Pourtant tu sais utiliser str.join() vu que tu l'utilises par ailleurs.
    Et si tu n'as pas besoin de modifier la liste alors tu n'as pas besoin de liste vu que tu as les tuples qui font le même job pour moins cher.

    Ensuite travailler sur /etc/passwd en live (et que je le lis et que je le réécris et je le relis et je le réécris et c'est la fête)...
    Moi je le lirais une fois au début du programme, puis je ferais tout en mémoire, et au final je l'écrirais une seule et unique fois.

    Après, utiliser comme vérificateur le fait que le nom est/n'est pas dans la ligne... moi qui voulais rajouter un utilisateur "Ba Shad" (oui il est moitié chinois moitié arménien)...

    Et enfin rajouter tous les utilisateurs avec uid=1000 et gid=1000 ça va être éclectique quand ils voudront se connecter et travailler... ou alors c'est un système quantique (tous peuvent se connecter mais un seul se connecte réellement)...
    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]

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

    niveau linux (en plus du système nom+prénom bien bizarre):
    - le nouvel utilisateur n'est pas toujours 1000 !!!
    - Au moins tester quel shells sont disponibles


    A la création de l'utilisateur :
    /home/{nom_utilisateur}
    Mais à la modification:
    = "/home/" + nom_utilisateur + "/tmp"
    Il y a une logique ???

    Pour Tester :
    Non merci, tu as peur de casser ton système et tu comptes sur moi bonne poire pour le faire ? Existe des VM (comme virtualbox) et les conteneurs (comme docker) pour tes tests

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    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 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par 15BONES Voir le message
    je remet en ordre
    Entre balises, histoire que ce soit "un peu" lisible...
    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]

  8. #8
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 603
    Par défaut
    Hum, 2 remarques :

    1. ajout de l'utilisateur Dupont Christophe donne comme valeur de nom consigné dans le fichier passwd.txt dupontch. Je veux ajouter Dupont Christian et paf (le chien!) : cet utilisateur existe déjà. Ah bon.

    2. soit. J'ajoute dupontch1 à la main dans le fichier txt afin de pouvoir gérer ce bon vieux Christian. Je veux supprimer un utilisateur et j'indique dupont. Hop, les deux dégagent du fichier.

    Sympa, Knorr.

Discussions similaires

  1. [PowerShell] Script comparaison de nom ou autre méthode pour régler mon problème svp
    Par toinoinfo dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 28/09/2018, 11h12
  2. [XL-2010] Demande d'aide svp pour corriger mon script
    Par developpeur82 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 06/09/2012, 12h03
  3. Mon script cron n'est pas pris en compte
    Par tomnie dans le forum Linux
    Réponses: 11
    Dernier message: 31/03/2004, 11h19

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