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

WinDev Discussion :

Client Telnet sous WinDev


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 20
    Points : 8
    Points
    8
    Par défaut Client Telnet sous WinDev
    Salut;

    dans l'endroit où je travaille, on a un nombre de serveurs auxquels les opérateurs se connectent via telnet, puis ils exécutent, une commande (développée avant par une autre personne) pour éditer un nombre de lignes (résultat de la commande); ensuite, l'opérateur copie les lignes pour extraire des informations utiles à partir des lignes copiées. Cette opération doit être faite en continu à base d'un délai de 5 minutes.

    Maintenant, on m'a demandé d'automatiser la tâche et d'écrire un programme sous WinDev, qui se connectera aux serveurs telnet, exécutera la commande, récupérera, extraira et affichera l'information dans une grille (table).

    Pourriez-vous m'aider en me donnant un exemple de code, un site utile ou des outils qui feront cela ?

    Merci & cordialement.

  2. #2
    Membre habitué Avatar de petit arbre
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 143
    Points : 153
    Points
    153
    Par défaut
    Salut, je connais bien le problème pour l'avoir sur un gros progiciel un peu 'brut de décoffrage".

    en fait, j'ai fait un script système qui automatise la session :

    dans windev tu saisis les éléments variables, ex : mois à sortir, compte comptable, etc ...
    à partir de ces éléments tu généres un fichier texte script adapté qui lancera la commande Telnet. ça fonctionne également en ftp.

    Ceci étant dit je lance mon telnet sous Unix donc avec un script unix, je ne sais pas trop si on peut le faire sous Windows.

    Dans ton script tu ajoute une commande pour spooler le résultat dans un fichier texte, tu le récupéres ensuite avec Windev et Hop !!!

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Salut,
    Merci pour la réponse petit arbre, seulement je n'ai pas reçu de notification par e-mail de ta réponse ??

    En se qui concerne ta proposition, je ne connais pas la méthode de génération de script dont tu parles, ni comment ouvrir une session avec la commande telnet, exécuter la commande et récupérer le resultat dans un fichier texte. Entre temps j'ai testé sur un poste Win XP.
    Aprés quelque tests, j'ai réussi à écrire le code suivant; il n'affiche pas d'erreur mais il reste figé lorsqu'il arrive à la première instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Info(SocketLit("telnet1",False,300))
    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
    Multitask()
    IF NOT SocketExist("telnet1") THEN
    IF NOT SocketConnect("telnet1",23,"127.0.0.1") THEN
    Error(ErrorInfo())
    RETURN
    END
     
    SocketWrite("telnet1",RC)
    // info(SocketLit("telnet1",false,300))
    SocketWrite("telnet1","uid"+RC) // pour le login
    // info(SocketLit("telnet1",false,300))
    SocketWrite("telnet1","pwd"+RC) // pour le password
    Info(SocketLit("telnet1",False,300))
    SocketWrite("telnet1","d:"+RC)
    Info(SocketLit("telnet1",False))
    SocketWrite("telnet1","cd\"+RC)
     
    SocketWrite("telnet1","dir *.* >> dir06.txt"+RC)
     
    SocketClose("telnet1")
    ELSE
    Info("existe")
    END
    note : le programme doit faire l'opération demandée chaque 5 minute en continue.

    Merci & cordialement.

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 251
    Points : 98
    Points
    98
    Par défaut
    Bonjour nabmed,

    j’essaie une connexion telnet par socket, mais je suis bloqué.
    En php cela fonctionne sans problème.
    J’essaie de faire la même chose avec windev, mais je ne reçois pas de réponde après l'envoie de l'user.
    La connexion se réalise bien, je reçois le premier prompt, avec une différence avec PHP, après "Login: ", je reçois "^@^@"
    Je ne sais pas si le problème vient de là

    As-tu avancé avec tes tentatives?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 122
    Points : 136
    Points
    136
    Par défaut
    Bonjour,

    Vous devriez essayer ce composant dotNET.

    http://www.componentpro.com/telnet.net/

    Je l'utilise en SSH mais cela fonctionne aussi avec du telnet.

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 251
    Points : 98
    Points
    98
    Par défaut
    Merci Whaouu.

    En fait j'ai écrit un classe pour me connecter en Telnet.
    Je l'utilise seulement pour envoyer des commandes a des routers, donc sans console.
    Maintenant cela fonctionne.

    Merci encore

  7. #7
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 2
    Points : 2
    Points
    2
    Par défaut TELNET Windev
    no_me_entero
    Pourrais je avoir un bout de code?
    Je dois faire une appli pareille

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 251
    Points : 98
    Points
    98
    Par défaut
    Sans problème, si tu me dis comment je peux t'envoyer la Classe.
    Je ne sais pas si on peux la copier directement!

    Dans la version Windev 20 ils ont ajouté SSH, cela va faciliter ce type connexions.

    Je l'ai réalisé juste pour un cas concret, il fonctionne bien, mais je ne l'ai pas essayer dans tous les cas.
    Ex:
    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
     
    Telnet	est un objet Telnet_API	
    Telnet.name 		= Lig.tCol["address"]
    Telnet.debug		= True;
    Telnet.socket 		= Telnet.name
    Telnet.ip 			= Lig.tCol["address"]
    Telnet.port			= 23
    Telnet.login 		= "User";
    Telnet.password 	= "MotPasse"  //
     
    Telnet.Connect( Telnet.ip ,Telnet.port, Telnet.login , Telnet.password)
    SI PAS Telnet.connected  ALORS
    FIN
    SI PAS Telnet.loged ALORS
    FIN
     
    Cmd est une chaîne = "ll"
    SI PAS Telnet.DoCommand( Cmd ) ALORS
    FIN
     
    SI Telnet.resp_array[2] + [" "] <> Telnet.prompt + Telnet.cmd_last + Telnet.prompt ALORS
    FIN
     
    ***********************
    Telnet_API est une Classe
    	name est un chaîne;				// Nombre de la Conección
    	ip est une chaîne 						// 
    	port est un entier			= 22     	// Port to connect to
    	login est une chaîne					// 
    	password est une chaîne					// 
     
    	debug est un entier 		= True      // Show debug information
    	error_no est un entier;           		// Variable for storing connection error number, if any
    	error_str est une chaîne;          		// Variable for storing connection error text, if any
    	attempts est un entier 		= 2       	// Connection attempt count
    	delay est un entier 		= 1   	    // Delay between connection attempts in seconds. 
    	timeout est un entier 		= 5       	// Connection attempt timeout and data read timeout. En 10ème secondes Aussi deái de socketconnect()
    	socket est un chaîne;         			// Variable for storing socket resource
    	connected est un booléen 	= False		// Connection state
    	loged est un booléen		= False  	// Connection state
    	wait_time est un entier		= 100		// Temps en 1/100 seconde pour Wait() 		
    	prompt est une chaîne					// Contient le Prompt de la session [admin@nomserveur]
    	resp_array est un tableau de 0 chaînes	// Contient les réponses au commandes
    	resp_str est une chaîne					// Contient les réponses au commandes
    	cmd_last est une chaîne					// Contient la dernière commande
     
    	$show_connect_error est un entier = 1
     
    	$use_usleep est un entier = 0			// change to 1 for faster execution.  don't change to 1 on Windows servers unless you have PHP 5
    	$sleeptime est une entier = 125000
    	$loginsleeptime est un entier = 1000000
     
    	$fp est un booléen =Null
    	$loginprompt est une chaîne
    FIN

  9. #9
    Membre éprouvé Avatar de WDKyle
    Homme Profil pro
    Analyste-Programmeur
    Inscrit en
    Septembre 2008
    Messages
    1 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-Programmeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 200
    Points : 962
    Points
    962
    Par défaut
    Bonsoir,

    Je suis intéressé par ton code no_me_entero

    Petite question, tu utilise donc une API (Telnet_API) ? Ou l'as tu trouvée stp ?

    Merci.

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 251
    Points : 98
    Points
    98
    Par défaut
    L'api est une classe que j'ai écrite en Windev.
    Si tu es intéressé envoie moi un email et je te l'envoie.

    Tu intègres la classe dans ton ton projet (importer) et tu peux essayer.

    Exemple de 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
    Telnet    est un objet Telnet_API   
            Telnet.name         = "Essai"
            Telnet.debug        = True;
            Telnet.socket         = Telnet.name
            Telnet.ip             =  "192.168.10.10"
            Telnet.port        = 23
            Telnet.login         = "root";
            Telnet.password     = "password"
     
            Telnet.Connect( Telnet.ip ,Telnet.port, Telnet.login , Telnet.password)
            SI PAS Telnet.connected  ALORS
                Info( Telnet.ip +" : No conectado " )           
     
                RETOUR
            FIN
            SI PAS Telnet.loged ALORS
                SI Telnet.error_str = "Login failed, incorrect username or password" ALORS
     
                     RETOUR
                FIN
                Info(" Conectado, No Logado " , Telnet.error_str , ErreurInfo() )
            SINON
     
                CmdTelnet est une chaîne = "ls"   
                SI PAS Telnet.DoCommand( CmdTelnet ) ALORS
                    Info( " Comando no ejecutado. " + Telnet.error_str )
                FIN
                SI Telnet.resp_array[2] + [" "] <> Telnet.prompt + Telnet.cmd_last + Telnet.prompt ALORS
                    Info( " Error en el Comando: "+ Telnet.cmd_last + Telnet.resp_array[2] + " : " +Telnet.error_str )
                SINON
                    l = 0
                    BOUCLE SUR Telnet.resp_array
                        l ++
                        TRACE( Telnet.resp_array[ l ] )
                    FIN
                FIN

  11. #11
    Membre éprouvé Avatar de WDKyle
    Homme Profil pro
    Analyste-Programmeur
    Inscrit en
    Septembre 2008
    Messages
    1 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-Programmeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 200
    Points : 962
    Points
    962
    Par défaut
    Salut !

    Super, je t'ai envoyé un message privé avec mon email.

    Merci.

Discussions similaires

  1. dos telnet sous windev 9
    Par vallgui dans le forum WinDev
    Réponses: 12
    Dernier message: 28/01/2008, 15h37
  2. [PowerBuilder] Client Telnet sous Power builder 10
    Par ppronzola dans le forum Powerbuilder
    Réponses: 1
    Dernier message: 30/01/2006, 14h22
  3. PB de tables créées sous Windev
    Par Reynald dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/04/2004, 10h22
  4. Réponses: 1
    Dernier message: 17/04/2004, 17h41
  5. Client FTP sous Linux ?
    Par DgG dans le forum Réseau
    Réponses: 7
    Dernier message: 26/01/2004, 19h26

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