Commande telnet

Bonjour,

j’ai un petit soucis avec ma ligne de commande telnet.
J’ai un fichier bash dans lequel je récupère des log d’un pabx(standard téléphonique) pour les traiter ensuite.
Je suis face à deux problématiques:

  • comment sortir de telnet automatiquement quand tous les log des appels ont était écrit dans mon fichier car je suis obliger de faire un CTRL Z pour finir mon telnet. J’ai essayer -e mais cela remplace juste le CTRL Z
  • je n’arrive pas à enregistrer les logs dans mon fichiers pourtant je les vois bien défilés à l’écran

Ma ligne de commande pour récupérer mes logs des appels est:
telnet -n /opt/partage/log.xml [addresse] [port]

Et le modèle des lignes récupérer est du type:
13 IVIN 16:32 009 1727 00:08:58 6100 [NumTel] 0:14

Merci de m’aider à compléter ma ligne car c’est la seule ligne qui me bloque dans mon bash.

Merci d’avance.

salut,

un document en ligne (here-doc, voir man bash) :telnet [tes_Options] <<eof commande_telnet_1 commande_telnet_2 commande_telnet_n eof

[mono]telnet[/mono] ne fermera le fichier log que quand il aura terminé son travail, ce qui n’est pas le cas si tu utilise [mono]Ctrl-Z[/mono] qui envoie le signal [mono]SIGTSTP[/mono] (voir [mono]man sigsuspend[/mono]).

Tu pourra récupérer le N° du process suspendu avec la commande [mono]jobs[/mono]

En utilisant la commande [mono]fg[/mono] (suivie du n° de process), [mono]telnet[/mono] sera réactivé.

=======

[quote=“Theonardo”]…J’ai essayer -e mais [strike]cela remplace juste le CTRL Z[/strike]…[/quote][quote="“man telnet”"]…
-e escapechar
Sets the escape character to escapechar. If no character is supplied, no escape character will be used. Entering the escape character while connected causes telnet to drop to command mode.
…[/quote]

=======

[quote=“Theonardo”]…comment sortir de telnet automatiquement quand tous les log des appels ont était écrit dans mon fichier…[/quote]Il faudrait donc d’abord chercher à savoir (ou déterminer) “… quand tous les log des appels ont était écrit dans mon fichier …”

Merci pour vos réponses rapides.
Bon du coup ma commande dans mon bash s’apparenterait à:
telnet x.x.x.x [port] <<EOF
telnet -n /opt/partage/log.xml x.x.x.x [port]
eof

sauf que cela me ferme directement ma connexion après m’être connecter:

[quote]Suppression du fichier existant
Récupération des log
Trying x.x.x.x …
Connected to x.x.x.x …
Escape character is ‘^]’.
Connextion closed by foreign host .
OK[/quote]

Et je n’ai même pas de fichier log.xml qui se créer
En passant ma commande telnet en ligne de commande
telnet -n /opt/partage/log.xml x.x.x.x [port]
ça passe!

ok merci pour l’explication du CTRL Z!
En revanche avec escapechar [-e] il faut que je tape manuellement le caractère pour pouvoir sortir du telnet, ce qui pose un problème pour automatiser mon .bash

Alors sur ce point j’y ai déjà pensé mais je n’ai pas trouver de commandes me permettant de couper ma connexion telnet quand mon fichier de log reste in-changer pendant 30 secondes par exemple. Ou alors de fermer la connexion au bout de 5 minutes après l’ouverture, pour lui laisser le temps d’enregistrer les logs de la journée.

J’ai fouillé pas mal le man telnet mais je ne suis pas super bon en anglais donc il y a peut être des options que je n’ai pas réussis à bien comprendre.

Merci.

par exemple :telnet $server $port <<eof ? close quit eofpour afficher l’aide.

Même soucis:
Trying x.x.x.x …
Connected to x.x.x.x …
Escape character is ‘^]’.
Connextion closed by foreign host .

Une question, en utilisant
telnet $add $port <<eof
telnet -n $fichier $add $port
close
quit
eof

à quel moment le programme passe de la 2ème ligne (telnet -n …) à la 3ème (close)?

telnet -n ...' n'est pas une commandetelnet’, elle n’a pas à figurer dans la liste des commandes envoyées à l’appareil.

[quote]Ma ligne de commande pour récupérer mes logs des appels est:

telnet -n /opt/partage/log.xml [addresse] [port][/quote]en fait, cette commande te connecte au PABX, et enregistre la session dans le fichier donné en argument de l’option -n', si certaines options sont positionnées, c'est tout. une fois connecté, tu dois bien taper d'autres commandes (des commandestelnet’, parmi celles listées par la commande `?’) pour récupérer tes logs, non ?

Non, c’est configurer sur le PABX, ça t’envoie directement les log en passant par le port 4001
J’avais fais les tests sur l’invite de commande windows et ça marche, juste en passant la commande:
telnet $add 4001 -f $chemain
et je récupérer un fichier avec mes log à l’emplacement voulut:

[quote]11 IVOT 10:16 008 00:00:05 27 $Numtel

12 IVOT 10:16 007 00:00:24 17 $Numtel

…etc…[/quote]

comme je ne veux pas de serveur windows pour héberger mon appli, j’ai essayer de reproduire la ligne de commande d’où le -n qui pour moi remplace le -f de windows.

Alors je reviens sur ce sujet,

donc j’ai créer un fichier pour regarder comment agissait mon telnet comme ma connexion se ferme directement:

telnet 192.168.252.252 4001 <<eof telnet -n /opt/partage/log.xml sleeep 30 close quit eof

Ca me fait exactement comme si je ne mettais pas le sleep…
Est ce que je n’utilise pas correctement l’option sleep?

Je l’avais pas vue celle là : il y a un [mono]e[/mono] de trop dans la commande de ton script [strike][mono]sleeep 30[/mono][/strike]

Remplace cette ligne de commande de ton script par : [mono]sleep 30[/mono]

Une erreur dans la recopie de mon programme. Dans mon bash il y a bien sleep avec deux ‘e’.

J’ai toujours le même message qui s’affiche d’un coup.

[quote]Trying $ip …
Connected to $ip …
Escape character is ‘^]’.
Connextion closed by foreign host .

[/quote]

Si vous n’avez pas la solutions mais des pistes de réflexions sur lesquels m’orienter ça m’aiderais, merci.

Personnes n’a jamais rencontrer ce problème en fesant un bash?