[Perl] Timeout sur un STDIN

Timeout sur un STDIN [Perl] - Perl - Programmation

Marsh Posté le 06-04-2004 à 15:47:52    

J'ai un petit script accessible par telnet sur un port X. Dans celui-ci, ya un STDIN.
 
Mais voilà, j'aimerais tuer le script après 5 secondes, histoire que les connections telnet ne s'accumule pas
 
je cherche du coté de SIG TERM mais jai pas réussi jusqu'ici
 
merci

Reply

Marsh Posté le 06-04-2004 à 15:47:52   

Reply

Marsh Posté le 06-04-2004 à 15:49:11    

E/S non bloquantes ou thread de controle

Reply

Marsh Posté le 06-04-2004 à 15:51:20    

Taz a écrit :

E/S non bloquantes ou thread de controle


 
thread de controle j'y ai pensé mais on m'a demandé de faire plus simple
 
E/S non bloquantes tu entends quoi par là?
 
J'sais pas si t autant gourou du perl que du C, mais t'aurais pas un exemple perl :D

Reply

Marsh Posté le 06-04-2004 à 15:53:13    

en perl j'ai aucune idée. ben tout simplement, quand tu lis, ça n'est pas bloquant, donc t'attends pas comme un couillon. cela dit, au niveau de la connection, si ça se ferme bourrin, le socket se ferme, ton stdin va bouffer du EOF et ça terminera forcément

Reply

Marsh Posté le 06-04-2004 à 15:55:56    

bin ex:
 
telnet serveur port
attend comme un couillon un stdin
 
c'est justement le problème, on est en audit et les auditeurs aiment pas, d'ailleurs ils se sont amusé à en lancer des centaines et ca l'a presque tué le serveur :D
 
bon puisque le script attend comme un couillon, jvois pas comment fermer le stdin ou quitter le script si yen a un autre a coté qui roule et le tue après 5 secondes...

Reply

Marsh Posté le 06-04-2004 à 15:59:09    

ben lecture non bloquante voilà


Message édité par Taz le 06-04-2004 à 15:59:16
Reply

Marsh Posté le 06-04-2004 à 16:01:08    

Taz a écrit :

ben lecture non bloquante voilà


 
ouais mais jsais pas c'est quoi lecture non bloquante et jsais meme pas si ca l'existe sous perl
 
c'est quoi le terme anglais que j'interroge google?

Reply

Marsh Posté le 06-04-2004 à 16:02:41    

non-blocking io ... allez cherche un peu sur CPAN bordel

Reply

Marsh Posté le 06-04-2004 à 16:03:22    

Reply

Marsh Posté le 06-04-2004 à 16:07:02    

non ok là jpense qu'on c'est pas compris
 
jsais comment arreter un socket fait par perl, mais c pas ca la question
 
j'ai un script toto.pl qui peut être exécuter si n'importe qui tappe dans shell telnet serveur port
 
donc faut que ce soit le script toto.pl qui s'arrete de lui même après 5 secondes alors qu'il attend un STDIN
 
tu me suis?

Reply

Marsh Posté le 06-04-2004 à 16:07:02   

Reply

Marsh Posté le 06-04-2004 à 16:12:17    

tu me lis ?

Reply

Marsh Posté le 06-04-2004 à 16:21:49    

bon reglé :D
 

Code :
  1. #!/usr/bin/perl
  2. use strict;
  3. $SIG{"ALRM"} = sub {exit(0)};
  4. my $str = "";
  5. my $char = "";
  6. while(1){
  7.         alarm 5;
  8.         $char = getc(STDIN);
  9.         if ($char eq ":" ){
  10.                 last;
  11.         }
  12.         $str .= $char;
  13. }

Reply

Marsh Posté le 06-04-2004 à 16:23:00    

ça va, il est genre efficace ton programme

Reply

Marsh Posté le 06-04-2004 à 17:55:41    

regarde Term::ReadKey
http://search.cpan.org/~jstowe/Ter [...] ReadKey.pm
 
tu peut faire une lecture non bloquante avec ReadKey(-1) ou ReadKey($timeout) (ou ReadLine aussi)
ca return undef en cas de timeout
 
dans mon souvenir il fallait passer en mode ReadMode('cbreak'), puis repasser en ReadMode('normal') apres, ou un truc du genre

Reply

Marsh Posté le 06-04-2004 à 23:04:02    

pospos a écrit :

regarde Term::ReadKey
http://search.cpan.org/~jstowe/Ter [...] ReadKey.pm
 
tu peut faire une lecture non bloquante avec ReadKey(-1) ou ReadKey($timeout) (ou ReadLine aussi)
ca return undef en cas de timeout
 
dans mon souvenir il fallait passer en mode ReadMode('cbreak'), puis repasser en ReadMode('normal') apres, ou un truc du genre


 
ah, tjrs bon à savoir ca. J'avais deja utilisé ce module pour faire la saisit de mot de passe sans que celui-ci ne saffiche
 
de toute facon c'est pas mon script, le mec travaille que le vendredi mais vu quon se fait auditer fallait le corriger OPC


---------------
http://www.boincstats.com/signature/user_664861.gif
Reply

Marsh Posté le 06-04-2004 à 23:29:02    

c'est chelou ces audites ou il faut corriger directe! Ya une visite de controle apres?! Halala le monde fou des entreprises...

Reply

Marsh Posté le 06-04-2004 à 23:34:59    

pospos a écrit :

c'est chelou ces audites ou il faut corriger directe! Ya une visite de controle apres?! Halala le monde fou des entreprises...


 
ouais c'est plutot impressionnant depuis la semaine dernière
 
moi jsuis tout jeune, bientot 21 ans, j'ai terminé mes études en mai dernier et j'y retourne en aout alors je bosse là entre temps.
 
C'est une audit de la Corp pour voir si tout est en règles au niveau des applications et surtout des serveurs
 
là ils ce qu'ils ont fait, c'est qu'ils ont lancé des centaines de telnet sur le serveur à ce port, et vu que ca se fermait pas, celui ci a durement souffert :D


---------------
http://www.boincstats.com/signature/user_664861.gif
Reply

Sujets relatifs:

Leave a Replay

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