Journal Faire un script lançant un programme sur une machine distante

Posté par  .
Étiquettes : aucune
0
26
mar.
2004
Cher journal, j'ai un problème qui me prend la tête depuis un bon gros bout de temps : je souhaite lancer une application par telnet (en attendant que l'admin de cette babasse installe ssh, ce qui risque pas d'être fait avant longtemps :-().
Je fais :
(sleep 5; echo "mon_login"; sleep 5; echo "mon_pass" ; sleep 2 ; touch test) | telnet babasse_distante

il me met la la demande du login, le login se remplit, il demande le mot de passe qui se remplit tout seul aussi puis il m'affiche le message d'accueil de la babasse ("Pendant la nuit les fichiers ".ps" et ".bak" sont supprimes dans vos repertoires... blabla".... puis
"mon_login@babasse_distante:mon_login$ Connection closed by foreign host."

Et le problème, c'est que le fichier "test" est créé sur la machine LOCALE au lieu d'être créé là-bas !!!
Quelqu'un a une idée ?
  • # Re: Faire un script lançant un programme sur une machine distante

    Posté par  . Évalué à 2.

    tu devrais regarder si "expect" peut t'aider.
  • # Re: Faire un script lançant un programme sur une machine distante

    Posté par  . Évalué à 2.

    echo "touch test"
  • # Re: Faire un script lançant un programme sur une machine distante

    Posté par  . Évalué à 2.

    Tu as essayé rsh?

    Si tu peux utiliser telnet il y a de bonnes chances que rsh marche aussi. L'avantage de ce dernier (outre le fait qu'il a précisément été conçu pour ce que tu as l'intention de faire) est que tu peux spécifier dans un fichier (.rhosts) les utilisateurs autorisés à se connecter sans fournir de mot de passe. Accessoirement cela t'évitera de balancer le tien -- de mot de passe -- en clair sur le réseau.

    Bref, dans ton cas, tu crées un script, touch_test.sh par exemple, qui contient les commandes que tu veux exécuter à distance (touch test, en l'occurence) et tu lances ensuite : rsh <machine_distante> touch_test.sh

    Bon, maintenant si tu te prends tellement la tête à essayer de faire une session telnet non-interactive, c'est peut-être que rsh n'est vraiment pas disponible...
    • [^] # Re: Faire un script lançant un programme sur une machine distante

      Posté par  . Évalué à 1.

      J'ai lu les man de rsh et rlogin en long et en large et je n'ai pas trouvé mon bonheur. Sinon, oui, je peux utiliser rsh ou rlogin si c'est plus simple.
      Sinon, concernant le .rhost c'est pas trop envisageable, tu vas vite voir pourquoi :
      en fait je fais un dérivé de Knoppix pour les élèves de mon école et l'une des fonctionalités que j'ai prévu d'implémenter est de pouvoir lancer Matlab voire Catia sur les machines de l'école, à partir des résidences. Afin de simplifier les choses, je ne peux pas demander à chacun de bidouiller leur .rhost.

      Et le problème, c'est que je n'ai pas trouvé comment passer le mot de passe en paramètre à rlogin ou rsh, sinon, un "rsh -l mon_login --pass mon_mdp babasse scrpt.sh" me plairait bien.
  • # Re: Faire un script lançant un programme sur une machine distante

    Posté par  . Évalué à 3.

    Si perl est installé sur la machine, utilise le module Net::Telnet et un script du genre:

    use Net::Telnet ();

    $t = new Net::Telnet (Timeout => 10, Prompt => '/bash\$ $/');
    $t->open("babasse_distante");
    $t->login($username, $passwd);
    @lines = $t->cmd("touch test");
    print @lines;



    /bash\$ est le pompt affiché par babasse_distante.
  • # Merci à tous

    Posté par  . Évalué à 1.

    Oui merci à tous ceux qui m'ont aidé : en moins d'une heure j'ai la solution d'un problème qui m'a cassé les pieds pendant un bont bout de temps. Merci pour toutes ces solutions diverses et variées utilisant tu perl, du tcl, un netcat ou un rsh.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.