Page 1 sur 1

[..] Utilisation de Plink dans Autoit

Posté : jeu. 25 déc. 2008 15:25
par snoopg60
Bon, et bien je vous présente mon petit souci du moment:

Je suis en train de faire un programme sous autoit qui me permettra de surveiller un parc de machines windows & unix.
Le but, assez simple, est de vérifier la présence de process et la taille de certains File System.
Sous windows, aucun souci, j'ai déjà trouvé comment faire.

Par contre je bloque sous Unix, j'essaye de me servir de l'utilitaire 'plink.exe', mais sans grand succès...
Via mon script, je souhaite me connecteur sur un host avec un login & password, puis passer une commande ("ps -ef|grep -i xxx" dans le cas présent), & enfin récupérer le résultat dans un fichier texte que je traiterais ensuite.

J'avoue avoir un mal fou à me servir de plink en ligne de commande :(

Voilà le bout de code que j'ai pû trouver sur ce forum pour commencer mon script, mais après plusieurs essais, je n'arrive pas à passer ma commande et à récupérer le résultat.

Code : Tout sélectionner

$password="mdp"
$login="login"
$machine="hxxxxxx"
$commande="ps -ef|grep -i xxx"
$flux_out=Run(@ComSpec&' /c plink -pw '&$password&' '&$login&'@'&$machine&' < '&$commande,@WorkingDir,@SW_HIDE,$STDERR_CHILD + $STDOUT_CHILD)
$rep_err=""
$rep_ok=""

While 1
    $rep_err &= StderrRead($flux_out)
    If @error Then ExitLoop
   
    $rep_ok &= StdoutRead($flux_out)
    If @error Then ExitLoop
Wend

MsgBox(0, "STDOUT read:", $rep_ok)
MsgBox(0, "STDERR read:", $rep_err)
Où et quand placer cette commande ? J'ai fait plusieurs essais et ça foire lamentablement... :oops:
Peut-être que 'plink' n'est pas le meilleur outil pour ce que je veux faire ?
Merci d'avance pour votre aide :wink:

Re: [..] Utilisation de Plink dans Autoit

Posté : jeu. 25 déc. 2008 17:13
par jbnh
Mhhh, dans le script je vois pas spécialement d'erreur.
T'as quoi comme erreur, ça te retourne quoi ?
Essaye manuellement dans le cmd, et vois déjà si ta commande marche.

Sinon essaye:

Code : Tout sélectionner

$password="mdp"
$login="login"
$machine="hxxxxxx"
$commande="ps -ef|grep -i xxx"
$flux_out=Run(@ComSpec&' /c plink -pw '&$password&' '&$login&'@'&$machine&' < '&$commande,@WorkingDir,@SW_HIDE,$STDERR_CHILD + $STDOUT_CHILD)
$rep_err=""
$rep_ok=""

While 1
    $rep_err &= StderrRead($flux_out)
    If @error Then ExitLoop
    MsgBox(0, "STDERR read:", $rep_err)
    
    $rep_ok &= StdoutRead($flux_out)
    If @error Then ExitLoop
    MsgBox(0, "STDOUT read:", $rep_ok)
Wend

Re: [..] Utilisation de Plink dans Autoit

Posté : jeu. 25 déc. 2008 20:07
par snoopg60
Honte à moi, je n'ai plus le message exact d'erreur en tête...
Grosso modo, ça me disait que ma commande "ps -ef|grep etc" n'était pas reconnu comme une commande valide par plink.

Je vais voir demain pour noter les erreurs et tester ton script, merci :wink:

Re: [..] Utilisation de Plink dans Autoit

Posté : jeu. 25 déc. 2008 21:24
par jbnh
Grosso modo, ça me disait que ma commande "ps -ef|grep etc" n'était pas reconnu comme une commande valide par plink.
A ce moment la ton script y est pour rien et autoit ne sait en rien t'aider à faire marcher ta commande pour plink. Si t'as commande marche pas déjà à la base, ton script ne pourra en aucun cas récupérer le texte retourné par la commande. Je me trompe ?

Re: [..] Utilisation de Plink dans Autoit

Posté : ven. 26 déc. 2008 11:40
par snoopg60
Désolé pour ma dernière réponse, elle n'était pas valable. J'ai refait des tests ce matin et j'ai résolu quelques soucis de paramétrage (rien à voir avec autoit).

En conclusion de mes tests, j'ai noté j'ai deux problèmes distincts:
- le premier concerne l'utilisation de plink, ce qui est indépendant d'autoit, il faut donc que je fasse des recherches à côté.
- mon deuxième problème est de pouvoir récupérer les infos sur la sortie standard de plink. Et là je pense que c'est un problème autoit, je n'utilise peut-être pas la bonne commande ?

Exemple: si je tape directement la commande "plink -telnet machine", j'ai une fenetre de ce type qui s'ouvre:

Code : Tout sélectionner

AIX Version 4
(C) Copyrights by IBM and by others 1982, 1996.
login:
Et lorsque je passe par le script:

Code : Tout sélectionner

#include <Constants.au3>
#include <array.au3>

$machine="machine"
$commande="ps -ef|grep -i surveil"

$rep_err=""
$rep_ok=""

$flux_out=Run(@ComSpec&' plink -telnet '&$machine,@WorkingDir,@SW_HIDE,$STDERR_CHILD + $STDOUT_CHILD)


While 1
    $rep_err &= StderrRead($flux_out)
    If @error Then ExitLoop
    MsgBox(0, "STDERR read:", $rep_err)
   
    $rep_ok &= StdoutRead($flux_out)
    If @error Then ExitLoop
    MsgBox(0, "STDOUT read:", $rep_ok)
Wend
Et bien je n'ai absollument rien en sortie ! Impossible de récupérer les infos pour les mettre en fichier texte !
Y a t'il une autre commande pour cela ?

Re: [..] Utilisation de Plink dans Autoit

Posté : lun. 29 déc. 2008 10:19
par snoopg60
J'ai beau essayer dans tous les sens, impossible de récupérer quoique ce soit en STDOUT... :(

Quelqu'un aurait-il une idée ?

Re: [..] Utilisation de Plink dans Autoit

Posté : lun. 29 déc. 2008 11:17
par Tlem
Voici un lien qui pourrait peut-être vous aider.
http://www.autoitscript.com/forum/index ... opic=25359

Re: [..] Utilisation de Plink dans Autoit

Posté : mar. 27 janv. 2009 15:39
par Manwe
Salut,
essaye avec ca :

Code : Tout sélectionner

$flux_out=Run(@ComSpec& ' /c plink -telnet '&$machine&' ' ,@WorkingDir,@SW_HIDE, $STDIN_CHILD + $STDERR_CHILD + $STDOUT_CHILD)
Manwe

Re: [..] Utilisation de Plink dans Autoit

Posté : lun. 06 juin 2011 23:19
par Tlem
Pour la recherche du forum, voici un lien vers un Wrapper qui semble piloter correctement Plink : http://www.autoitscript.com/forum/topic ... _p__890269