Auteur : Philippe Gaucher Voici un petit script perl pour se passer du journal, de compteur-on et compteur-off : il utilise le programme telecout et exploite directement "/var/adm/messages". C'est donc une variante pour l'utilisation de telecout. ft -h pour une explication. Ca casse pas des briques evidemment mais ca peut etre utile pour des gens qui n'ont pas le temps de se rediger un script. A l'origine, j'avais mon propre script perl mais 1) il avait un très léger "bug" (je ne savais pas que les abonnements primaliste et primaliste_internet baissaient le prix du crédit-temps) 2) de plus il ne tenait pas compte des jours fériés. Par flemme, j'ai donc pris telecout et j'ai supprimé la boucle de calcul de mon script perl. Voilà. Exemple d'utilisation : belzebuth:~$ ft -nuit -primaliste -m Oct 132.04 FF TTC !!! belzebuth:~$ ft -h Calcul du cout téléphonique des connexions PPP. le fichier analysé par défaut est /var/adm/messages. -a analyse des communications du jour -j précise le jour à analyser (par ex -j Aug 9) -m précise le mois à analyser (par ex -m Aug) -p affichage des prix France-Telecom -h affiche cette aide -v affiche la version du programme -primaliste abonnement Primaliste (ex : prix -primaliste -m Jul) -temporalis abonnement Temporalis (ex : prix -temporalis -m Jul) -nuit pour tenir compte de l'abonnement Primaliste Internet -journal sortir le résultat sous forme de journal -ancien ancien tarif Code des mois : Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec (Dans le cas où le système est francisé, le programme doit etre modifié à un endroit indiqué dans le script). !! Mettre les options -m ou -j en dernier !! Il y a une option -journal pour fabriquer un journal. a+. pg. #################################################################### #!/bin/perl -s # Philippe Gaucher, gaucher@hol.fr, 9 Novembre 1997 # version 1.0 : pour utiliser le programme telecout de Laurent Sintes # à partir du fichier /var/adm/messages ######## Paramètres dépendant du système # chaine apparaissant lors de la connexion $connection_pattern = ".+chat.+CONNECT\\s--\\sgot\\sit.+"; # chaine apparaissant lors de la déconnexion $deconnection_pattern = "^.+(Connection\\sterminated|restart|pppd.+Exit).+"; # Le pattern choisi pour la connexion est irréprochable. Celui choisi pour la # déconnexion l'est moins en revanche. Il arrive que la liaison PPP démarre # et juste après coupe (je ne sais pas pourquoi). Aucun des patterns de # déconnexion n'apparait ! Mais comme un login et un mot de passe ont eu le # temps d'etre envoyés, je pense que ça doit compter pour France Telecom. Les # liaisons PPP dument établies qui coupent à cause d'une panne de courant ou # à cause d'une extinction brutale du modem apparaitront bien grace à la # présence de 'restart' et de 'Exit' dans le pattern de déconnexion. $cout = 0; $abonnement = 0; $drapeau = 0; $telecout = "/usr/local/bin/telecout"; $fichier = "/var/adm/messages"; ######## Les tarifs France-Telecom (octobre 97) $credit = 180; $pm = 0.28; ########fin des paramètres généraux # Gestion des options if ($v) {die("version 1.0 ")}; if ($h) {die("Calcul du cout téléphonique des connexions PPP. le fichier analysé par défaut est /var/adm/messages. -a analyse des communications du jour -j précise le jour à analyser (par ex -j Aug 9) -m précise le mois à analyser (par ex -m Aug) -p affichage des prix France-Telecom -h affiche cette aide -v affiche la version du programme -primaliste abonnement Primaliste (ex : prix -primaliste -m Jul) -temporalis abonnement Temporalis (ex : prix -temporalis -m Jul) -nuit pour tenir compte de l'abonnement Primaliste Internet -journal sortir le résultat sous forme de journal -ancien ancien tarif Code des mois : Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec (Dans le cas où le système est francisé, le programme doit etre modifié à un endroit indiqué dans le script). !! Mettre les options -m ou -j en dernier !! ")}; if ($p) {die( " ---------------------------------- |Jours|0h-8h|8h-12h|12h-19h|19h-24h| ----------------------------------- |Norm.| R | | | R | ----------------------------------- |Sam. | R | | R | R | ----------------------------------- |Dim. | R | ----------------------------------- Crédit-temps : 3min à 0,74 ; R=0,14Frs/mn ; sinon 0,28Frs/mn ; tarification à la seconde après le crédit-temps. Primaliste : 20% de réduction sur toute communication ; Primaliste Internet : 40% de réduction sur toute communication pour une communication qui commence entre 22h et 8h du matin ")}; if ($f) {$fichier = $ARGV[0]}; if ($a) {@traduction_mois = ("Jan","Feb","Mar","Apr", "May","Jun","Jul","Aug", "Sep","Oct","Nov","Dec"); @maintenant = localtime; $connection_pattern = $traduction_mois[$maintenant[4]]. "\\s+".$maintenant[3]."\\s+".$connection_pattern}; if ($j) {$connection_pattern = eval($ARGV[0])."\\s+".eval($ARGV[1]). "\\s+".$connection_pattern}; if ($m) {$connection_pattern = eval($ARGV[0])."\\s+". $connection_pattern}; # type d'abonnement choisi if ($journal) {print "abonnement(s) choisi(s) : "}; if ($primaliste) { $abonnement = 1; if ($journal) { print "Primaliste " } }; if ($nuit) { $abonnement = 2; if ($journal) { print "Primaliste-Internet " } }; if ($temporalis) { $abonnement = 4; if ($journal) { print "Temporalis" } }; if ($ancien) { $abonnement = 8; if ($journal) { print "Anciens tarifs" } }; if ($journal) { print "\n" }; if ($primaliste && $nuit) {$abonnement = 3}; if ($temporalis && $primaliste) {$abonnement = 5}; if ($temporalis && $nuit) {$abonnement = 6}; if ($temporalis && $primaliste && $nuit) {$abonnement = 7}; if ($ancien) {$abonnement = 8}; ######## valeur définitive de $connection_pattern $connection_pattern = "^".$connection_pattern; ################################################################### open(toto,$fichier); while() { if ($drapeau == 0 && $_ =~ /$connection_pattern/) { /^(\w+)\s+(\d+)\s+(\d\d):(\d\d):(\d\d)\s.+/; $date_deb = "$1 $2 $3:$4:$5"; $HD = eval(`date +%s -d "$date_deb"`); if ($journal) {print "$date_deb -> "}; $drapeau = 1 }; if ($drapeau == 1 && $_ =~ /$deconnection_pattern/) { /^(\w+)\s+(\d+)\s+(\d\d):(\d\d):(\d\d)\s.+/; $date_fin = "$1 $2 $3:$4:$5"; $HF = eval(`date +%s -d "$date_fin"`); if ($journal) {print "$date_fin : "}; $drapeau = 0; $prix = eval(`$telecout $HD $HF $credit $pm $abonnement`); if ($journal) {print "$prix\n"}; $cout += $prix } }; close(toto); print "$cout FF TTC !!!\n"; # Les points d'exclamations sont obligatoires.