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

  1. #1
    Membre à l'essai Avatar de mohan
    Homme Profil pro
    mateur en informatique
    Inscrit en
    Juillet 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 30
    Points : 21
    Points
    21
    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 à l'essai Avatar de mohan
    Homme Profil pro
    mateur en informatique
    Inscrit en
    Juillet 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 30
    Points : 21
    Points
    21
    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 à l'essai Avatar de mohan
    Homme Profil pro
    mateur en informatique
    Inscrit en
    Juillet 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 30
    Points : 21
    Points
    21
    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 sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    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 à l'essai Avatar de mohan
    Homme Profil pro
    mateur en informatique
    Inscrit en
    Juillet 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 30
    Points : 21
    Points
    21
    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 éclairé
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2007
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Février 2007
    Messages : 574
    Points : 751
    Points
    751
    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 à l'essai Avatar de mohan
    Homme Profil pro
    mateur en informatique
    Inscrit en
    Juillet 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 30
    Points : 21
    Points
    21
    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!

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par mohan Voir le message
    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 :
    Certes mais ce n'était pas le sujet de la discussion...
    Si vous voulez exécutez des commandes à distances vous avez des tas de bibliothèques qui font déjà cela: vous pourriez essayez de vous en inspirer.

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

  9. #9
    Membre à l'essai Avatar de mohan
    Homme Profil pro
    mateur en informatique
    Inscrit en
    Juillet 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 30
    Points : 21
    Points
    21
    Par défaut
    merci,

  10. #10
    Membre à l'essai Avatar de mohan
    Homme Profil pro
    mateur en informatique
    Inscrit en
    Juillet 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 30
    Points : 21
    Points
    21
    Par défaut
    dommage que le module Salt ne pas disponible dans mon distrib

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par mohan Voir le message
    dommage que le module Salt ne pas disponible dans mon distrib
    Vous n'avez pas Python 2.7?

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

  12. #12
    Membre à l'essai Avatar de mohan
    Homme Profil pro
    mateur en informatique
    Inscrit en
    Juillet 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 30
    Points : 21
    Points
    21
    Par défaut
    j'ai un version plus récent, la 3.4 je suis sous windows

  13. #13
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par mohan Voir le message
    j'ai un version plus récent, la 3.4 je suis sous windows
    Python 2.7 n'est pas si ancienne et reste supportée jusqu'en 2020.
    note: de toutes façons, les outils d'administrations système évoluent plus lentement que le reste.

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

  14. #14
    Membre à l'essai Avatar de mohan
    Homme Profil pro
    mateur en informatique
    Inscrit en
    Juillet 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 30
    Points : 21
    Points
    21
    Par défaut
    pas d'autre moyenne possible?

    mon projet est d'administré plusieurs ordinateurs,
    est cela a l'echel etendus.
    c'est une sort de cyber café pro, mais un peux plus evoluer.

  15. #15
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par mohan Voir le message
    pas d'autre moyenne possible?

    mon projet est d'administré plusieurs ordinateurs,
    est cela a l'echel etendus.
    c'est une sort de cyber café pro, mais un peux plus evoluer.
    Utiliser un ou des outils qui fonctionnent ou (avoir la prétention d')en écrire de bien meilleurs, plus simples,... est une question qu'on se pose souvent. Lisez le code qui fonctionne, regardez comment ont été réalisées les fonctionnalités qui vous intéressent. Ca vous donnera des idées de comment implémenter cela et si vous n'en recopiez pas des morceaux, une estimation de la quantité de boulot (non seulement le temps mais aussi les difficultés techniques) à abattre avant d'avoir un code "fonctionnel".

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

  16. #16
    Membre à l'essai Avatar de mohan
    Homme Profil pro
    mateur en informatique
    Inscrit en
    Juillet 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 30
    Points : 21
    Points
    21
    Par défaut
    c'est qui un peu compliquer maintenant, est que, avant je tester sur le local, il y a certain fonction qui m'avait echaper.
    lorsque j'envoie un commande, par exemple ftp.
    alors la, mon interface client se met attandre un renvoie de type zero: si la commande est executer, et un: si faux.
    mais alors la commande ftp a besoins d'arguments, comme l'adresse host.

    possible que tous le commande envoie soit envoier par le client sans demander l'intervention du server?

+ 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