Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Wer kann bei Perl-Script helfen
#1
Hallo zusammen

Ich betreibe einen Hylafaxserver, der völlig problemlos arbeitet.

Ab und an (bei bestimmten Kunden) möchte ich kontrollieren, ob das abgesendete Fax auch ankam - dazu nutze ich hylafax_mod für Webmin (dann kann das auch meine Frau)

Die Seite wird korrekt angezeigt, aber ich hätte gerne anstelle der Auftragsnummer das Versanddatum angezeigt.

Der Abschnitt wird wohl in send_done.pl in Zeile 59 erzeugt.

Nur woher kommt $item? Aus hylafax-lib.pl? Und wie?

Ich würde eben im Array $item den ersten Wert von der Auftragsnummer ins Versanddatum ändern. Das Versanddatum könnte man aus docq/doc in Zeile 60 holen, denn in dem Verzeichnis sind alle docxxx.ps-Dateien gespeichert.

Nur wie? Wenn weitere Dateien oder Infos benötigt werden, liefere ich die gerne.

Danke für die Hilfe, denn Perl kann ich nicht...

Andy


Angehängte Dateien
.gz   hylafax.tar.gz (Größe: 3,64 KB / Downloads: 2)
VDR 1: ASRock mit Atom J1200, NVIDIA GT610, Lüfterlos, TBS 6982 SE mit easyVDR 3.0
Zitieren
#2
Hallo sinai,

wenn ich das richtig sehe, passiert folgendes:

@lines=faxqueue($QPAR);
-> ruft faxstat -ld auf und liest die von faxstat -ld gelieferten Zeilen ins @lines Array ein
...
    foreach $line (@lines)
        {
        $line =~ /^(\d+) /;
        $faxorder{$1}=$line;
        }
-> baut aus den Zeilen ein assoziatives Array mit der Job-ID als Key
...
# sorting faxes by num
    if ($q->param('ASC.x'))
        { @sortfax = sort {$a <=> $b} (keys %faxorder); }
    else
        { @sortfax = sort {$b <=> $a} (keys %faxorder); }
       
  foreach $faxnum (@sortfax)
        {
        @items=&queueItems($faxorder{$faxnum},@sizes);
-> erzeugt einen Sortierschlüssel für das Array (Job-ID auf- oder absteigend), liest das Array dann in der Sortierfolge aus, bereitet die Felder der jeweiligen faxstat -ld Zeile als @items Array auf

Leider enthält die faxstat -ld Ausgabe das Versanddatum nicht. Dein Vorschlag, es aus dem modification date der Queue-Datei zu ermitteln, sollte funktionieren. Vielleicht so:

1) Vor der foreach $item (@items) Schleife merkst Du Dir den Wert von $items[0] (also die Job-ID). Zum Beispiel:

$id = $items[0];

2) Jetzt ersetzt Du nach der foreach $item (@items) Schleife alle Vorkommnisse von $items[0] durch $id.

3) Nach Deiner neuen $id = $items[0]; Zeile (vor der foreach $item (@items) Schleife) setzt Du $items[0] auf das modification date der Queue-Datei:

if (-e "docq/doc".$id.".ps") {
  $items[0] = strftime "%d.%m.%Y %H:%M", localtime((stat "docq/doc".$id.".ps")[9]);
}

Das ist ein normaler strftime Format-String, den Du nach Belieben anpassen kannst.
Mit if(-e ...) wird getestet, ob die Queue-Datei existiert. Sollte immer der Fall sein, aber falls nicht, wird verhindert, dass das Skript aufgrund eines stat() Fehlers abbricht, stattdesen wird wie vorher die Job-ID ausgegeben.

4) vermutlich brauchst Du jetzt noch am Anfang der Datei (nach den require Zeilen) ein

use POSIX;


Ungetestet  Tongue - sollte so oder ähnlich funktionieren  Smile

Viel Glück!
easyVDR 0.6.10/VDR 1.4.7, Kernel 2.6.28.9 (wolf), ASUS M3N78 Mainboard (NVIDIA GeForce 8200 Chipset), AMD X2 4850e 2x2.5GHz CPU, 2GB RAM, 32 GB Super Talent Ultradrive GX MLC Solid State Disk (FTM32GX25H), 2 x 2TB WD AV-GP Platten (WD20EVDS), LG GH22NS30 SATA DVD-Brenner, TechnoTrend C-1500 DVB-C, Hauppauge PVR-150 Analog, Ausgabe über MagicDVD [dxr3], atric IR-Empfänger/Einschalter, schwarzes Silverstone Lascala LC20 Gehäuse, Loewe RC4 Fernbedienung (VCR-Modus)
Zitieren
#3
Bin neugierig: Hat's geklappt?
easyVDR 0.6.10/VDR 1.4.7, Kernel 2.6.28.9 (wolf), ASUS M3N78 Mainboard (NVIDIA GeForce 8200 Chipset), AMD X2 4850e 2x2.5GHz CPU, 2GB RAM, 32 GB Super Talent Ultradrive GX MLC Solid State Disk (FTM32GX25H), 2 x 2TB WD AV-GP Platten (WD20EVDS), LG GH22NS30 SATA DVD-Brenner, TechnoTrend C-1500 DVB-C, Hauppauge PVR-150 Analog, Ausgabe über MagicDVD [dxr3], atric IR-Empfänger/Einschalter, schwarzes Silverstone Lascala LC20 Gehäuse, Loewe RC4 Fernbedienung (VCR-Modus)
Zitieren
#4
Werde grade mit Arbeit zugesch...

Kam noch nicht zum testen.

Sent from my HTC Hero using Tapatalk
VDR 1: ASRock mit Atom J1200, NVIDIA GT610, Lüfterlos, TBS 6982 SE mit easyVDR 3.0
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: