perl Net::Telnet : comment choisir l'interface ?

perl Net::Telnet : comment choisir l'interface ? - Perl - Programmation

Marsh Posté le 03-07-2010 à 05:03:14    

Salut,
 
J'ai pas mal d'ip sur mon serveur (sous eth0:N) et j'utilise Net::Telnet.
Le module utilise l'interface par défaut or j'aimerais pouvoir la choisir (comme pour un curl --interface)
 
J'ai potassé toute la doc de Net::Telnet et il n'y a rien de prévu pour cela dans les options.
Mais il doit bien y avoir une ruse ?
(ajouter 1 ligne au module, faire croire à perl qu'il n'y a qu'une seule interface...)
 
Merci beaucoup par avance !


Message édité par MisterBark le 03-07-2010 à 05:05:46

---------------
La vie c'est comme une boite de chocolats, on ne sait jamais sur quoi on va tomber. (Forrest Gump)
Reply

Marsh Posté le 03-07-2010 à 05:03:14   

Reply

Marsh Posté le 04-07-2010 à 22:54:36    

J'ai pas vraiment l'impression que le code ait été prévu pour. Il faut probablement partir du source qui utilise IO::Socket::INET et modifier l'utilisation de ce module pour pouvoir définir l'interface voulue.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 04-07-2010 à 23:15:23    

ok merci
(gilou, toujours le meme :D)
 
donc je crois que je vais modifier mon programme pour utiliser directement IO::Socket::INET et définir LocalAddr.


---------------
La vie c'est comme une boite de chocolats, on ne sait jamais sur quoi on va tomber. (Forrest Gump)
Reply

Marsh Posté le 05-07-2010 à 01:05:15    

bon, un truc qui m'intéresserait vraiment pour simplifier le code :
 
on peut connaitre la taille actuelle de l'input buffer d'un filehandle ?
 
Par ex je n'ai pas lu STDIN depuis un moment, et j'aimerais connaitre combien d'octets il y a pour le moment à l'intérieur...
THANKS ! :)


---------------
La vie c'est comme une boite de chocolats, on ne sait jamais sur quoi on va tomber. (Forrest Gump)
Reply

Marsh Posté le 05-07-2010 à 09:24:29    

Tu peux contrôler la taille avec setvbuf, mais je ne crois pas que tu puisses aller au delà de ça.  
Pour des choses d'aussi bas niveau, si il n'y a pas un module qui existe déjà pour (et la il faudrait scruter minutieusement CPAN), la technique habituelle est d'écrire la librairie dont on a besoin en C, puis de wrapper le tout avec XS pour appeler les fonctions de la librairie comme des subroutines en perl.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 05-07-2010 à 14:38:01    

merci encore :)
 
c'est bien dommage qu'une telle possibilité ne soit pas offerte par défaut, car c'est un problème de base d'etre obliger de rester bloqué à un while( $line=<FILEHANDLE> ) en attendant qu'il arrive quelque chose.
Rien qu'a cause de ca on charge des tonnes de modules pour procéder completement autrement alors que ca pourrait etre tres simple.
 
On pourrait par ex faire simplement :
 

Code :
  1. $sock = IO::Socket::INET->new( ...);
  2. while( datasize($sock) > 0 && defined($received=<$sock> ){
  3. ...
  4. }
  5. print($sock $answer);


 
(pour simplifier bien sur, car on ferait une petite fonction avec un timeout)


---------------
La vie c'est comme une boite de chocolats, on ne sait jamais sur quoi on va tomber. (Forrest Gump)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed