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

Web Perl Discussion :

Pas de resultat lors d'un appel de commande systeme windows via script CGI


Sujet :

Web Perl

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Pas de resultat lors d'un appel de commande systeme windows via script CGI
    Bonjour,

    Sous windows XP Service Pack 2, je cherche à faire des pages web accessibles via un CGI en perl. Un des scripts perl qui générent ces pages doit faire des appels système pour se connecter en ssh sur des machines unix, récupérer des informations et les présenter dans les pages web.

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $result = qx(plink <mon_login>@<adresse_ip_du_serveur_unix> \"<ma_commande_unix>\");
    Voici mon problème:

    - L'appel système ne génére pas d'erreur mais je n'ai pas de retour ($result = NULL)
    - Si j'execute le script en ligne de commande via la console windows ça marche, i.e. je récupère le résultat attendu
    - Si à la place de ma commande systeme avec plink je met une commande DOS basique comme "dir" :
    Ca marche aussi via le CGI.

    Bref je sèche toujours après de nombreuses recherches sur le web.

    Quelqu'un aurait-il une idée?

    Merci

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Petite correction :

    Dans le fichier error.log d'apache j'ai le message d'erreur suivant:

    "The server's host key is not cached in the registry. You have no guarantee that the server is the computer you think it is.

    The server's rsa2key fingerprint is:
    ssh-rsa 1024 6f0f:3a:bd:57:f5:e2:63:0d:2a:b0:57:c8:2e

    If you trust this host, enter "y" to add the key to PuTTy's cache and carry on connecting.
    If you want to carry on connecting just once, without adding the key to the cache, enter "n".
    If you do not trust this host, press Return to abandon the connection.
    Store key in cache? (y/n) connection abandoned."

    Donc le problème c'est que lorsque j'execute mon script en ligne de commande je n'ai pas de warning similaire (j'utilise Putty et Putty authentication ageant, ou Pageant), et que ce warning apparaît lorsque j'appelle le script via Apache. Malheureusement via Apache je ne peut pas répondre au warning qui n'apparaît que dans error.log.

    Une idée?

    Merci

  3. #3
    Membre habitué Avatar de Leishmaniose
    Homme Profil pro
    Ingénieur Bio-industries
    Inscrit en
    Novembre 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur Bio-industries
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 145
    Points : 141
    Points
    141
    Par défaut
    salut,

    je ne suis pas très sûre mais j'ai une seul remarque :

    je ne vois pas de password dans ta commande, moi je m'attendais plûtot à quelque chose du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $result = qx(plink <mon_login:password>@<adresse_ip_du_serveur_unix> \"<ma_commande_unix>\");
    La syntaxe reste à vérifier...

    Bon courage...

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci pour cette première réponse mais je pense que l'authentification passe bien, et que ce n'est pas un problème de mot de passe:

    J'ai essayé plusieurs syntaxe de plink y compris la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $result = qx(plink -l <mon_login> -pw <mon_password> <adresse_ip_du_serveur_unix> \"<ma_commande_unix>\");
    et j'ai le même résultat.

    Mon sentiment est qu'une fois authentifié le serveur auquel je me connecte essaye de m'envoyer sa clé et que mon script perl + apache ne savent pas l'accepter automatiquement. => la connexion échoue.

    De manière générale j'ai remarqué des différences de comportement entre:
    1/ plink appelé via le script perl, lui-même appelé en ligne de commande dans la console windows, et
    2/ plink appelé via le même script perl, appelé cette fois par Apache.

    Par exemple on peut utiliser plink comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plink <host> "<ma_commande_unix>"
    A la place de host on peut mettre le nom d'une session enregistrée dans PuTTy ce que j'ai essayé. Dans le cas 1/ ça marche, dans le cas 2/ plink renvoie "Host does not exist"...

  5. #5
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Tu pourrais utiliser Expect , ou peut-être te plonger dans les options de ton utilitaire pour voir si tu peux lui éviter de faire cette vérification.

    --
    Jedaï

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Resolution
    Tout d'abord pour répondre à Jedai je suis sûr que PuTTY (et plink) n'offre pas d'option pour desactiver le control de la cle rsa. J'ai lu en effet sur la home page du projet que l'auteur considère que c'est contraire à l'esprit même de ssh et ne veut donc pas d'une telle option dans son soft.

    J'ai finalement trouvé pourquoi on a pas les memes comportement entre l'utilisation en ligne de commande simplement (cas 1) et l'utilisation de cette même ligne de commande via apache (ou un autre serveur web) (cas 2).

    Dans le cas 1, Putty stocke les cles et les informations relatives aux sessions dans le registre windows sous HKEY_CURRENT_USER\Software\SimonTatham\PuTTY.
    Or dans le cas 2, les cles du registre utilisées par plink via apache sont dans
    HKEY_USERS\Software\SimonTatham\PuTTY.

    J'ai donc copié la clé HKEY_CURRENT_USER\Software\SimonTatham\ dans HKEY_USERS\Software\ avec tout son contenu.

    Et ça marche.

    Rassurez vous j'ai pas mis un mois pour faire marcher ce truc mais j'ai été pas mal pris ailleurs ces derniers temps.

    Enfin un billet de plus de résolu!

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Goodmorning,

    I'm italian and I can't speak french very well so I'm writing in english.
    I hope you can understand me.

    I've the same problem executing plink.exe from SQL Server Stored Procedure and I've seen that the key is cached in
    HKEY_CURRENT_USER\Software\SimonTatham\PuTTY

    Under my HKEY_USERS there isn't the path
    Software\SimonTatham\PuTTY
    so to resolve the problem I should create all complete path.

    Is it right?

    Many thanks.

  8. #8
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    There are excellent English Perl forums for your future needs if you don't intend to learn French, eg. Perl Monks.
    I think you correctly understood fea2486 (though I doubt the SimonTatham part of the path is the same on your computer.. ), but if the path under HKEY_USERS don't exist at all it might be a sign that plink don't use this path when used from a SQL Server Stored Procedure. Give it a try but don't hold your breath, and search your register for others occurrences of PuTTY.

    --
    Jedaï

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/03/2015, 08h27
  2. Réponses: 19
    Dernier message: 10/08/2012, 11h45
  3. FaultException`1 n'a pas été gérée lors de l'appel de la première méthode
    Par BHMath76 dans le forum Windows Communication Foundation
    Réponses: 1
    Dernier message: 17/02/2010, 13h44
  4. Mon sous-programme ne répond pas lors de l'appel
    Par Stagiette dans le forum C#
    Réponses: 3
    Dernier message: 28/01/2010, 10h21
  5. Réponses: 1
    Dernier message: 14/03/2007, 15h56

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