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 :

Recuperer dans une variable, les resultats d'une commande DOS


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de mohan
    Homme Profil pro
    mateur en informatique
    Inscrit en
    Juillet 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Cameroun

    Informations professionnelles :
    Activité : mateur en informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2016
    Messages : 30
    Par défaut Recuperer dans une variable, les resultats d'une commande DOS
    bonjour, j'utilise le Windows 7, et la version de mon python est 3.4...
    j'aimerai si possible, envoie un commande DOS a travers le socket,
    et en récupérer le résultats de cet commande dans un variable a fin d'exploiter.

    mon code:

    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
     
    def Serveur():
        HOST ='0.0.0.0'
        PORT =19111
        counter =0
        identify ="A111 "
     
        mySocket =socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        mySocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
     
        try:
            mySocket.bind((HOST, PORT))
        except socket.error:
            sys.exit()
     
        while 1:
            mySocket.listen(2)
            connexion, adresse =mySocket.accept()
            counter +=1
     
            msgServeur ="Vous etez connecter au: "+ identify
            connexion.send(msgServeur.encode("Utf8"))
            msgClient =connexion.recv(1024).decode("Utf8")
     
     
            while 1:
                if msgClient.upper() =="pfb" or msgClient =="s":
                    break
                else:
                    res =os.system(msgClient)
                    true =res.readlines()
     
                msgServeur =true
                connexion.send(msgServeur.encode("Utf8"))
                msgClient =connexion.recv(1024).decode("Utf8")

  2. #2
    Membre averti Avatar de mohan
    Homme Profil pro
    mateur en informatique
    Inscrit en
    Juillet 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Cameroun

    Informations professionnelles :
    Activité : mateur en informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2016
    Messages : 30
    Par défaut
    slt, le problème persister, mais je le contourner...
    grâce a ceci, je créer un fichier qui vas contenir tous les résultats des commande DOS
    envoie, mais aussi cet fichier me permet d'entre dans tous les répertoires, et cela sans me
    demander l'authentification.
    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
     
          while 1:
                if msgClient.upper() =="pfb" or msgClient =="s":
                    break
                else:
                    res =os.system(msgClient)
                    tru =(res)
                    true =[tru]
                    """Vas! mersi"""
                    true1 = str(true)
     
                msgServeur =true1
                connexion.send(msgServeur.encode("Utf8"))
                msgClient =connexion.recv(1024).decode("Utf8")
    si j'envoie comme commande : cmd>nom_fichier ,
    j'aurai dans le répertoire un fichier nommer : nom_fichier.
    et après ça, tous les autres resultats s'imprimerons dans cet fichier.

    mais, mon problème est de récupérer : nom_fichier.

  3. #3
    Membre averti Avatar de mohan
    Homme Profil pro
    mateur en informatique
    Inscrit en
    Juillet 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Cameroun

    Informations professionnelles :
    Activité : mateur en informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2016
    Messages : 30
    Par défaut Se servir d'un fichier comme canal de communication a travers le socket
    Bonjour,

    voici le code server:
    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
    #-*-coding: Utf-8 -*-
    
    ############################# IMPORTATION DES MODULES ##########################
    import sys, os
    import socket
    import threading
    ###########################################################################
    
    def Serveur():
        HOST ='0.0.0.0'
        PORT =19111
        counter =0
        identify ="Cyber A1 "
    
        mySocket =socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        mySocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    
        try:
            mySocket.bind((HOST, PORT))
        except socket.error:
            sys.exit()
    
        while 1:
            mySocket.listen(2)
            connexion, adresse =mySocket.accept()
            counter +=1
    
            msgServeur ="Vous etez connecter au: "+ identify
            connexion.send(msgServeur.encode("Utf8"))
            msgClient =connexion.recv(1024).decode("Utf8")
            
    
            while 1:
                if msgClient.upper() =="pfb" or msgClient =="s":
                    break
                else:
                    res =os.system(msgClient)
                    tru =(res)
                    true =[tru]
                    """Vas! mersi"""
                    true1 = str(true)
                    
                msgServeur =true1
                connexion.send(msgServeur.encode("Utf8"))
                msgClient =connexion.recv(1024).decode("Utf8")
    ################################################################################
    def Envoie():
        while 2:
            ofich ='nom_fichier'
            rf =open(ofich, "rb")
            tr =rf.readlines()
            connexion.send(tr.encode("Uft8"))
            msgClient =connexion.recv(1024).decode("Utf8")
            
    ################################################################################
                
    
    if __name__ =='__main__':
        try:
            Serveur()
            Envoie()
        except ConnectionResetError:
            os.system("start /MIN server.py")
    grace ceci je peux envoie des commandes DOS par le billet de socket.
    pour cela une simple commande : cmd>nom_fichier depuis le client, créeras un fichier: nom_fichier.
    et tous le commandes qui suivrons serons inscrit dans nom_fichier, mais alors mon problème de consulter
    en temps réel le fichier: nom_fichier.
    l'objectif de lire le contenus de nom_fichier en permanent.
    mon problème est de pouvoir consulter nom_fichier depuis l'interface client.
    pour c'est qu'il en est de client, voici le code:

    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
     
    #-*-coding: Utf-8 -*-
     
    ############################# Importation des modules ##########################
    import socket
    import sys, os
    ################################################################################
     
    def Client():
        HOST ='localhost'
        PORT =19111
     
        mySocket =socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     
        try:
            mySocket.connect((HOST, PORT))
        except socket.error:
            print("Machine Eteint.")
            sys.exit
        print("connexion au serveur établie")
     
        msgServeur =mySocket.recv(1024).decode("Utf8")
     
        while 1:
            if msgServeur.upper() =="Attention" or msgServeur =="tchip":
                break
            print(msgServeur)
            msgClient =input("CMD *> ")
            mySocket.send(msgClient.encode("Utf8"))
            print("Veillez pacienter... ")
            msgServeur = mySocket.recv(1024).decode("Utf8")
            Recept()
    ################################################################################
    def Recept():
        while 2:
            texto ="Reçut"
            ofich ='systeminfo'
            rf =open(ofich, "wb")
            sen =mySocket.recv(1024).decode("Utf8")
            tr =rf.write(sen)
            connexion.send(texto.encode("Utf8"))
     
    ################################################################################
     
    if __name__ =='__main__':
        try:
            Client()
        except IOError:
            while 1:
                os.system("start client.py")

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 738
    Par défaut
    Salut,

    Peut être que vous devriez commencer par écrire quelque chose sans "sockets":
    • lire une commande via "input",
    • l'exécuter,
    • afficher la sortie.

    note: votre serveur "complique" un peu les choses mais que fait-il de plus que lire une commande via socket, l'exécuter, et expédier la sortie?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre averti Avatar de mohan
    Homme Profil pro
    mateur en informatique
    Inscrit en
    Juillet 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Cameroun

    Informations professionnelles :
    Activité : mateur en informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2016
    Messages : 30
    Par défaut
    le serveur n'est qu'une partie de mon projet, sont utilité final, est que je veux l'inclure comme
    module.

  6. #6
    Membre chevronné
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2007
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 574
    Par défaut
    Salut,

    Tu te compliques la vie. Il suffit de faire ecrire la resultat de ta commande via la socket (a la dup2() en C). Example sans gestion d'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    # -*- coding: utf-8 -*-
     
    import shlex
    import socket
    import subprocess
     
    with socket.socket() as socket_:
        socket_.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        socket_.bind(("localhost", 1234))
        socket_.listen(1)
        with socket_.accept()[0] as client_socket:
            client_command = shlex.split(client_socket.recv(1024).decode("utf-8"))
            subprocess.Popen(client_command, stdout=client_socket.fileno(), stderr=client_socket.fileno(), close_fds=True)
    Bon courage

  7. #7
    Membre averti Avatar de mohan
    Homme Profil pro
    mateur en informatique
    Inscrit en
    Juillet 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Cameroun

    Informations professionnelles :
    Activité : mateur en informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2016
    Messages : 30
    Par défaut
    mon plus gros problème étais que, j'étais aveugle de c'est qui se passe sur l'interface serveur.
    mais maintenant grâce a ceci je voie et entend :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    import socket
     
    [ip for ip in socket.gethostbyname_ex(socket.gethostname())[2] if not ip.startswith("127.")][0]
    comme j'avais dit, ce serveur est un pièce d'un projet.
    le serveur vas seulement se contenter d'écrire, exécuter,et biensur de s'autoredemarer.
    un ftp seras le suivant.
    et le resultat est:
    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
     
    #-*-coding: Utf-8 -*-
     
    ############################# IMPORTATION DES MODULES ##########################
    import sys, os
    import socket
    ################################################################################
     
    def Serveur():
        HOST =[ip for ip in socket.gethostbyname_ex(socket.gethostname())[2] if not ip.startswith("127.")][0]
        PORT =19111
        counter =0
        identify ="A1 "
     
        mySocket =socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        mySocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
     
        try:
            mySocket.bind((HOST, PORT))
        except socket.error:
            sys.exit()
     
        while 1:
            mySocket.listen(2)
            connexion, adresse =mySocket.accept()
            counter +=1
     
            msgServeur ="Vous etez connecter au: "+ identify
            connexion.send(msgServeur.encode("Utf8"))
            msgClient =connexion.recv(1024).decode("Utf8")
     
     
            while 1:
                if msgClient.upper() =="pfb" or msgClient =="s":
                    break
                else:
                    res =os.system(msgClient)
                    tru =(res)
                    true =[tru]
                    """Vas! mersi"""
                    true1 = str(true)
     
                msgServeur =true1
                connexion.send(msgServeur.encode("Utf8"))
                msgClient =connexion.recv(1024).decode("Utf8")
    ################################################################################
     
    ################################################################################
     
     
    if __name__ =='__main__':
        try:
            Serveur()
        except ConnectionResetError:
            os.system("start /MIN moteur.py")
    qu'est ce que j'ai trop galérer!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/11/2014, 15h24
  2. Réponses: 5
    Dernier message: 19/06/2013, 06h55
  3. [MySQL] stocker dans une variable les resultats d'un while
    Par vinze60 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/02/2010, 15h20
  4. [Smarty] Récuper une variable php à partir d'une variable Smarty
    Par SPKlls dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 23/04/2008, 17h40
  5. [Free Pascal] [2.2] Impossible d'assigner une variable de type T à une variable de type T
    Par Hibou57 dans le forum Free Pascal
    Réponses: 3
    Dernier message: 12/10/2007, 12h31

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