Avant toute chose, je vous explique le but de ma manip:
Je possede un serveur Radio-amateur qui met a disposition via un protocole
telnet des informations en temps réel sur la présence de stations radio
autour du monde.
Le but est de permettre de contacter un maximum de pays / iles /département
en vue de concours ou de challenge personnel. Ce systeme s'appelle un "DX
cluster" DX = longue distance et est mis à jour par les radio-amateurs eux
mêmes.
Une fois connectés, les informations "tombent" au grés des soumissions des
utilisateurs.
Je suis un Admin d'un des ces type de serveur (le maillage est mondial) et
fervent utilisateur.
Nous avons actuellement des radioamateurs qui se trouvent au Bhutan
(himmalaya) et qui possedent comme indicatif radioamateur A52. Ils ne sont
présent sur les ondes que selon les disponibiltés : environ 1h par jour.
Je ne peux bien sur scruter le flot de données en temps réel car je suis au
travail.
L'idée est alors de faire un "robot" qui se conncete en mon nom, parse les
données qui tombent, et lorsqu'une ligne apparait avec l'indicatif radio
recherché, m'envoi un email.
J'ai crée un script perl qui via le module Telnet 3.03 se connecte au
serveur en mon nom (indicatif + mot de passe) et grace à la commande
"waitfor" j'attends que dans le flot des données apparaise l'indicatif
recherche.
Pour cela j'ai desactivé le timeout pour parser en permanance jusqu'a
l'arrivée de la data.
Ce script pourra etre appelé dans un futur proche par d'autres utilisateurs.
J'ai donc crée un script avec un paramètre START / STOP qui positionne une
variable à 0 ou a 1 dans /tmp/dxalert.tmp.
Je voudrais vérifier cette valeur régulièrement de façon à pouvoir arreter
le script en cours.
Le probleme est que lorsque je positionne le "waitfor" mon programme est en
attente et ne peux aller vérifier la valeur dans /tmp/dxalert.tmp.
quelle pourrait etre alors ma methode pour aller vérifier le contenu de mon
fichier temporaire tout en scrutant les données ?
Il existe peut etre une meilleure methode ?
voici le bout de script qui ne marche pas du tout:
################################################################
#
# We open temp file
#
open(TMP,">/tmp/$TEMPFILE.tmp")|| die ("unable to open /tmp/$TEMPFILE.tmp")
;
$VAL=<TMP>;
if ($VAL == "0")
{
# We parameter Telnet object
use Net::Telnet ();
$t = new Net::Telnet (Timeout => undef,
Port => $PORT);
# We connect
$t->open("$SERVER");
## Wait for first prompt and fill in.
$t->waitfor('/Callsign :.*$/');
$t->print("$CALL");
## Wait for password prompt and respond .
$t->waitfor('/Password :.*$/');
$t->print("$PASSWORD");
## We put the user in "no present" (not here status)
($cluster) = $t->waitfor('/.*=>/');
$t->print("set\/noh");
## We are waiting for DX
while ($VAL != "1"){
($DXWANTED)= $t->waitfor("/.*$WANTED/");
$VAL=<TMP>;
}
}
else
{
print "erreur de traitement\n";
}
close TMP;
#################################################################
merci de votre aide ..
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Denis -esp2008-
Bonsoir,
Je voudrais vérifier cette valeur régulièrement de façon à pouvoir arreter le script en cours.
Si ce script est destiné à un système de type unix, il vaut mieux utiliser les signaux qui sont prévus pour cela. Une traducton de la doc à ce sujet est disponible sur http://www.enstimac.fr/Perl/DocFr/perlipc.html#signaux
Bonne chance,
-- Denis
Bonsoir,
Je voudrais vérifier cette valeur régulièrement de façon à pouvoir
arreter le script en cours.
Si ce script est destiné à un système de type unix, il vaut mieux
utiliser les signaux qui sont prévus pour cela. Une traducton de la doc
à ce sujet est disponible sur
http://www.enstimac.fr/Perl/DocFr/perlipc.html#signaux
Je voudrais vérifier cette valeur régulièrement de façon à pouvoir arreter le script en cours.
Si ce script est destiné à un système de type unix, il vaut mieux utiliser les signaux qui sont prévus pour cela. Une traducton de la doc à ce sujet est disponible sur http://www.enstimac.fr/Perl/DocFr/perlipc.html#signaux
Bonne chance,
-- Denis
f8arr
hum
ça ne me parait pas trés simple, mais je vais aller voir ça de près , merci !
Guillaume , f8arr
On Mon, 08 Nov 2004 18:10:37 +0100 Denis -esp2008- wrote:
Bonsoir,
Je voudrais vérifier cette valeur régulièrement de façon à po uvoir arreter le script en cours.
Si ce script est destiné à un système de type unix, il vaut mieux utiliser les signaux qui sont prévus pour cela. Une traducton de la doc à ce sujet est disponible sur http://www.enstimac.fr/Perl/DocFr/perlipc.html#signaux
Bonne chance,
-- Denis
hum
ça ne me parait pas trés simple, mais je vais aller voir ça de près , merci !
Guillaume , f8arr
On Mon, 08 Nov 2004 18:10:37 +0100
Denis -esp2008- <esp2008@apinc.org.enleve-ceci.et.cela> wrote:
Bonsoir,
Je voudrais vérifier cette valeur régulièrement de façon à po uvoir
arreter le script en cours.
Si ce script est destiné à un système de type unix, il vaut mieux
utiliser les signaux qui sont prévus pour cela. Une traducton de la doc
à ce sujet est disponible sur
http://www.enstimac.fr/Perl/DocFr/perlipc.html#signaux
ça ne me parait pas trés simple, mais je vais aller voir ça de près , merci !
Guillaume , f8arr
On Mon, 08 Nov 2004 18:10:37 +0100 Denis -esp2008- wrote:
Bonsoir,
Je voudrais vérifier cette valeur régulièrement de façon à po uvoir arreter le script en cours.
Si ce script est destiné à un système de type unix, il vaut mieux utiliser les signaux qui sont prévus pour cela. Une traducton de la doc à ce sujet est disponible sur http://www.enstimac.fr/Perl/DocFr/perlipc.html#signaux