Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1340 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] Timeout sur un STDIN

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Perl] Timeout sur un STDIN

n°693779
burgergold
5$? va chez l'diable!
Posté le 06-04-2004 à 15:47:52  profilanswer
 

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

mood
Publicité
Posté le 06-04-2004 à 15:47:52  profilanswer
 

n°693782
Taz
bisounours-codeur
Posté le 06-04-2004 à 15:49:11  profilanswer
 

E/S non bloquantes ou thread de controle

n°693787
burgergold
5$? va chez l'diable!
Posté le 06-04-2004 à 15:51:20  profilanswer
 

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

n°693795
Taz
bisounours-codeur
Posté le 06-04-2004 à 15:53:13  profilanswer
 

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

n°693799
burgergold
5$? va chez l'diable!
Posté le 06-04-2004 à 15:55:56  profilanswer
 

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...

n°693808
Taz
bisounours-codeur
Posté le 06-04-2004 à 15:59:09  profilanswer
 

ben lecture non bloquante voilà


Message édité par Taz le 06-04-2004 à 15:59:16
n°693813
burgergold
5$? va chez l'diable!
Posté le 06-04-2004 à 16:01:08  profilanswer
 

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?

n°693817
Taz
bisounours-codeur
Posté le 06-04-2004 à 16:02:41  profilanswer
 

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

n°693818
Taz
bisounours-codeur
Posté le 06-04-2004 à 16:03:22  profilanswer
 
n°693824
burgergold
5$? va chez l'diable!
Posté le 06-04-2004 à 16:07:02  profilanswer
 

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?

mood
Publicité
Posté le 06-04-2004 à 16:07:02  profilanswer
 

n°693838
Taz
bisounours-codeur
Posté le 06-04-2004 à 16:12:17  profilanswer
 

tu me lis ?

n°693851
burgergold
5$? va chez l'diable!
Posté le 06-04-2004 à 16:21:49  profilanswer
 

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. }

n°693853
Taz
bisounours-codeur
Posté le 06-04-2004 à 16:23:00  profilanswer
 

ça va, il est genre efficace ton programme

n°693952
pospos
Posté le 06-04-2004 à 17:55:41  profilanswer
 

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

n°694237
burgergold
5$? va chez l'diable!
Posté le 06-04-2004 à 23:04:02  profilanswer
 

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
n°694262
pospos
Posté le 06-04-2004 à 23:29:02  profilanswer
 

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

n°694276
burgergold
5$? va chez l'diable!
Posté le 06-04-2004 à 23:34:59  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] Timeout sur un STDIN

 

Sujets relatifs
[Perl] Rappeler une sous chaine dans une expression rationelle[Perl] Comment décoder du UTF8 si pas de module sur le serveur ?
[java]Régler le timeout de déconnexion des sockets[Perl] regrouper des lignes différentes en une seule ttes les n lignes
[Perl] Package Cvs 0.06Probleme d'execution de la commande Unix echo via le perl
perl Makefile.PL[Perl] probleme avec sub - subroutine [résolu -> howto inside]
[Perl] parcourir un fichier à partir d'une certaine ligneLancer un script perl avec du php
Plus de sujets relatifs à : [Perl] Timeout sur un STDIN


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR