Rechercher : dans
Par :

Script Linux bash connexion Telnet

Dernière réponse le 29 déc 2004 à 09:45:21 Elise78, le 28 jui 2004 à 09:42:27 
 Signaler ce message aux modérateurs

Salut tout le monde ;-)

Je cherche à faire un script bash qui se connecte avec telnet exécute une commande sur le serveur distant et récupere le fichier créé (ca a la llimite je peux rouvrir une connexion ftp derriere pour récupérer le fichier). Et en plus les renseignement sont passés en parametre du programme :
prog_recup_arbo.sh <serveurdist> <login> <passwd> <deb_arbo_a_recup>


J'ai ca mais ca ne marche pas ( il me semble qu'il me manque des options pour se connecter sans demander authentification directement à la connexion au serveur. C'est ce que je fais avec ma connexion ftp un peu plus bas ) :

     #!/bin/bash

     telnet << END
     open $1
     $2
     $3
     cd $4
     find . -type d -exec echo {} \;  > arbo.txt
     exit
     END

     # Et a la limit une connexion ftp pour recup le fichier 
     # créé : si y'a plus simple je veux bien
     ftp -v -i -n << FIN
     open $1
     user $2 $3
     cd $4
     mget arbo.txt
     exit
     FIN

     # Fin du programme de récuperation de l'arborescence à 
     # partir d'un serveur distant !!


Une aide serait la bienvenue. Merci d'avance.

Cordialement. Melle Elise78

Meilleures réponses pour « Script Linux bash connexion Telnet » dans :
Script d'administration Linux VoirScript d'administration Linux Ce script entièrement rédigé pour ceux qui souhaitent approfondir leurs connaissances en scripting Linux. Vous pouvez reprendre des briques de code, l'améliorer, il est là pour ça ! NOTA : Il se peut qu'il...
[Bash] La variable d'environnement PATH VoirLa variable d'environnement PATH I. Préambule II. C'est quoi le shell ? III. Définition IV. Séance de dissection V. Ajouter un répertoire à la variable PATH VI. Et puis... I. Préambule Sous les systèmes GNU/Linux qu'on le veuille ou...
Comment lire un fichier ligne par ligne VoirComment lire un fichier ligne par ligne Préambule Boucle while Syntaxe Exemple Astuces Bonus Boucle for Syntaxe Préambule Une des erreurs les plus communes dans l'apprentissage des scripts "bash" sous GNU/LInux pour lire un fichier...
Utilisation de Telnet VoirPrésentation de Telnet Telnet est un protocole permettant d'émuler un terminal à distance, cela signifie qu'il permet d'exécuter des commandes saisies au clavier sur une machine distante. L'outil Telnet est une implémentation du protocole...
PHP - Connexion à un annuaire LDAP VoirIntroduction à LDAP PHP permet la connexion et l'envoi de requêtes sur un annuaire LDAP, c'est-à-dire un serveur permettant de stocker des informations de manière hiérarchique. Un serveur LDAP est conçu pour être capable de gérer les opérations...
Linux - Le shell VoirIntroduction au shell L'interpréteur de commandes est l'interface entre l'utilisateur et le système d'exploitation, d'où son nom anglais «shell», qui signifie «coquille». Le shell est ainsi chargé de faire l'intermédiaire le système...

1

grofwa, le 28 jui 2004 à 09:56:43

Salut,

Essaie avec la commande rexec.
Par contre, le FTP, tu n'y couperas pas !

Michael.

Ne vous souciez pas de n'être pas remarqué ; cherchez 
plutôt à faire quelque chose de remarquable [Confucius]

Répondre à grofwa

2

Elise78, le 28 jui 2004 à 10:03:54

[grofwa] Essaie avec la commande rexec. [/grofwa]
Heu oui, mais a la place de quoi ?

le probleme que j'ai pour le moment c'est qu eje n'arrive pas à m'authentifier correctement. J'arrive à accéder au serveur, mais il me met directement apres que le serveur distant à mis fin à la connexion (il ne fait meme pas le reste). Sinon la comme find marche tres bien, j'ai deja tout essaye a la main et tout marche nikel. Le truc c'est que je suis hyper feniante et que du coup je prefere automatiser le plus de trucs possible surtout quand je me le tape plusieurs fois :-p

Répondre à Elise78

3

grofwa, le 28 jui 2004 à 10:23:26

Y a pas de mal à être fainéant, ça peut même être une qualité ;-)

Je proposais de faire le rexec à la place de ton telnet :

rexec [username@hostname] [-DNn] [-l username] [-p password] command

et dans command, tu mets
"cd $4; find . -type d -exec echo {} \;  > arbo.txt"


Ca devrait fonctionner

Ne vous souciez pas de n'être pas remarqué ; cherchez 
plutôt à faire quelque chose de remarquable [Confucius]

Répondre à grofwa

4

Elise78, le 28 jui 2004 à 10:27:53

Ah ok !! :-)

Je vais essayer de ce pas.

Cordialement, Melle Elise78.

Répondre à Elise78

5

Elise78, le 28 jui 2004 à 11:33:03

Re :-)

Bon alors j'ai essayé dans tous les sens - au cas ou j'aurai fait une erreur - j'ai vérifié ce que j'ai tapé plusieurs fois et j'ai lu le man en long et en large - mais la je ne suis pas une fleche en anglais alors un petit bémol :-p

Y'a rien a faire il ne veut pas comprendre que j'ai besoisn de faire cette manip.

Alors j'ai ce code :

       echo " test "

       rexec root@servdist -l login -p passwd "find . -type d > arbo.txt"
       echo " fin test "


Mais il me redemande le mot de passe et me répond ceci :
       Password : 
       rexec :  Error in rexec system call
       rexec :  (The following system error may itself be in error)
       rexec :  Success


Et la je suis completement à la masse. je ne vois pas l'erreur. Si y'a une idée du problème ...

Cordialement, Melle Elise78.

Répondre à Elise78

6

grofwa, le 28 jui 2004 à 15:30:55

Woow...

t'arrives a faire la connexion telnet manuellement ?


Ne vous souciez pas de n'être pas remarqué ; cherchez 
plutôt à faire quelque chose de remarquable [Confucius]

Répondre à grofwa

7

Elise78, le 28 jui 2004 à 16:04:46

Oui sans aucun soucis.

[root]# telnet
telnet> open servdist
blablabla...
login : root
password : pass
servdist:/# ls -la 
servdist:/# exit
[root]# 

Je ne comprends plus rien je vais devenir folle :-~

Répondre à Elise78

8

grofwa, le 28 jui 2004 à 16:10:46

Strange...
Je suis pas au boulot et je ne peux pas tester.
Tu as essayé de retirer l'espace entre telnet << et END ?


Ne vous souciez pas de n'être pas remarqué ; cherchez 
plutôt à faire quelque chose de remarquable [Confucius]

Répondre à grofwa

9

Elise78, le 28 jui 2004 à 16:18:23

Oui, j'ai tout essayé !
sous toutes les formes
du style :

...
user $login $passwd
...
$login
$passwd
...
$login $passwd
...
au cas ou il ne le lirait differemment du ftp

Répondre à Elise78

10

grofwa, le 28 jui 2004 à 16:34:10

Je sais bien que j'avais essayé de faire du telnet comme ça et j'avais fini par me rabattre sur le rexec. Mais je pense qu'il y a des limitations et des versions différentes de rexec selon les OS... notamment pour le fait de passer le password en paramètre.

Honnêtement, je ne vois pas trop que faire de plus...

Michael.

Ne vous souciez pas de n'être pas remarqué ; cherchez 
plutôt à faire quelque chose de remarquable [Confucius]

Répondre à grofwa

11

Elise78, le 28 jui 2004 à 16:38:37

Bein, bien merci de m'avoir aidée, je crois que je vais abandonner et dieu sait (s'il existe bien entendu lol) que c'est dur pour moi.
Je veux trouver la solution ! Mais étant donné qu'il ne faut pas etre trop borné dans la vie, alors je mets tout ca de coté 'pour le moment'.

Encore merci. Si un jour tu trouves, fais moi signe ;-)

Répondre à Elise78

12

grofwa, le 28 jui 2004 à 16:54:48

J'ai encore regardé sur le net, mais je n'ai pas trouvé de solution à ton problème de rexec.

Sorry !

Michael.

Ne vous souciez pas de n'être pas remarqué ; cherchez 
plutôt à faire quelque chose de remarquable [Confucius]

Répondre à grofwa

13

 MacThoFer, le 29 déc 2004 à 09:45:21
  • +1

Astuce pour executer une commande sur un serveur distant,
lorsque que l'on a acces par un telnet mais que l'on ne
veut pas mettre les services (rlogin,rsh,rexec) en place
sur ce serveur distant.

1) Faire un script contenant les operations que l'on ferait manuellement
par un telnet. (Exemple script "action.scr" suivant)
#!/bin/sh
sleep 2
echo "user de connexion"
sleep 1
echo "mot de passe"
sleep 1
echo "commande 1"
sleep 1
echo "commande n"
sleep 1
echo "exit"

Remarque(1):Le "sleep 1" est important sur les plateformes linux
Sinon le script est trop rapide est le telnet ne voit
pas passer les instructions !
Augmenter la valeur du sleep suivant la commande si celle-ci
a un delai de reponse long.
Remarque(2):Ne pas oublier de mettre les droits d'execution sur
le script (chmod 777 action.scr)

2)Ensuite lancer le script redirige vers le telnet
Exemple:
#sh action.scr|telnet adresseIP

Resultat:Connexion telnet, avec application des commandes 'echo "cmde"'
du script "action.scr" ("comme de facon manuelle").

Répondre à MacThoFer