Schrift
[thread]11229[/thread]

Script-Umstellung ?



<< >> 7 Einträge, 1 Seite
Paule1
 2008-02-01 09:11
#105432 #105432
User since
2007-11-27
4 Artikel
BenutzerIn
[default_avatar]
Folgendes Szenario

ich habe eine Datei "postfix.lis"
An diese Datei soll per Per-Script die Adressen aus der Datei "addr_allowed.lis" angefügt werden.
Und zwar immer, wenn die User-ID passt.
Das ging die ganze Zeit, denn die Datei "postfix.lis" war in diesem Format
1008#Oltrogge#Oltrogge##Oltrogge######smtp-test#DE#0

Jetzt wurde das Format umgestellt und sieht nun so aus (es wurde eine zusätzliche ID vorne angestellt)

201008#1008#Oltrogge#Oltrogge##Oltrogge######smtp-test#DE#0

Natürlich laüf das Script "append-mailadr-to-lis.pl" nun nicht mehr, was vor der Umstellung einwandfrei funktionierte.

Wäre super, wenn mir dabei jemand unter die Arme greifen könnte, bin mit meiner Weissheit am Ende ...
Ich habe unten alle Listings mal angehängt, vielleicht weiss jemand weiter ...


Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/usr/bin/perl -d
#
use strict;
use warnings 'all';

# initialize filenames
my $erste_datei = 'addr_allowed.lis';
my $andere_datei = 'postfix.lis';

# read files
my $data_to_append = &datei_lesen($erste_datei);
my $full_data = &datei_lesen($andere_datei);

# append data
foreach my$key (keys %{$data_to_append})
{
   # check whether we can append the data
   next if !exists($full_data->{$key});

   # append data
   push(@{$full_data->{$key}->[0]}, @{shift(@{$data_to_append->{$key}})});
   push(@{$full_data->{$key}}, @{$data_to_append->{$key}});
}

# output
&datei_schreiben($full_data, $andere_datei);

# NAME:        datei_schreiben()
# USE:        Datei anhand des musters in eine Datei schreiben
# PARAMETERS:    1. Data
#        2. Filename
# RETURNS:    void
sub datei_schreiben($$)
{
   # pick parameters
   my($data, $file) = @_;

   # open file
   open(my$fhOUT, '>', $file)
       or die "open failed: $!";

       # iterate through the data
       foreach my$key (keys %{$data})
       {
           # create line

            my $line = $key . '#' . join(',', map { join('#', @{$_}) } @{$data->{$key}});

           # write out line
           print $fhOUT "$line\n";
       }

   # close file
   close($fhOUT)
       or die "close failed: $!";
} # datei_schreiben

# NAME:        datei_lesen()
# USE:        Datei anhand des musters in eine komplexe Datenstruktur einlesen.
# PARAMETERS:    Filename
# RETURNS:    Hash reference
sub datei_lesen($)
{
   # pick parameters
   my($file) = @_;

   # open file
   open(my$fhIN, '<', $file)
       or die "open failed: $!";

   # read data
   my %data;
   while (my$line=<$fhIN>)
   {
       chomp($line);

       # split line
       my @tracts = split('#', $line);

       # key equals the first tract
       my $key = shift @tracts;
       my $val = [@tracts];

       # push data
       $data{$key} = [] unless exists $data{$key};
        push(@{$data{$key}}, $val);
   }

   # close file
   close($fhIN);

   # return data reference
   return \%data;
} # datei_lesen


Listing "addr_allowed.lis"
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 1008#willi@hoedel1.de
1008#micsdsdsd@t-online.de
1033#ssssht@gmx.de
1033#dddcht@web.de
2552#chrisdsdsdstia@dweb.de
46998#edi@ne.com
1025#joesdssddt@web.de
1025#supsdsddport@delock.de
1025#hotlisdsne@rrrrelster.de
1025#im.sddsdt@web.de
1025#d.sdsdsd@yahoo.de
1025#j-sdda@web.de
1025#peter@dddde.com
1025#Kundenssdsdervice@sdsoe.de
1025#Michael.sdsdS@freenet.de
1025#ddddeams@libero.it
1025#cassddssmo@online.de
1025#maths5@web.de
1025#j-sdsdsd@t-online.de



Listing "postfix.lis"

Code: (dl )
1
2
3
4
5
6
7
8
201008#1008#Oltrogge#Oltrogge##Oltrogge######smtp-test#DE#0
201033#1033#Diamant-Quelle#Diamant-Quelle##Klee+Jungblut-GmbH######smtp-test#DE#0
2014396#14396#RFN388#RFN388##Buddelei-Mode-GmbH-Bloherfelder-Str-276-26129-Oldenburg######smtp-test#DE#0 2007222#7222#BRUEGGEN#BRUEGGEN##BRUEGGEN-MUEHLWERKE######smtp-test#DE#0
2024108#24108#MONTAGEWAGEN-576#MONTAGEWAGEN-576##Kueppersbusch/Gelsenk#KUNDENDIENST#####smtp-test#DE#0
2006074#6074#EHSNL111#EHSNL111##Milchhof-Eiskrem######smtp-test#DE#0
2047557#47557#CREDIT-AGRICOLE-INDOSUEZ-ABS#CREDIT-AGRICOLE-INDOSUEZ-ABS##CREDIT-AGRICOLE-INDOSUEZ######smtp-test#DE#02002552#2552#guj003#guj003##Gruner+Jahr-Hamburg######smtp-test#DE#0
2046998#46998#Bockelmann#Bockelmann##Spedition-Bockelmann######smtp-test#DE#0
2001025#1025#Joerg voll#voll#Joerg#DTAG######smtp-test#DE#0
Paule1
 2008-02-01 10:51
#105436 #105436
User since
2007-11-27
4 Artikel
BenutzerIn
[default_avatar]
Hallo,

nein leider macht er nun folgendes:

er stellt die 20 vor die erste und zweite Spalte ...


Die Datei soll aber so aussehen, dass es nur nach der 5-stelligen User-ID sucht, und sobald er einen "Match" hat, sollte er die Mailadresse aus "addr_allowed.lis" hinten anstellen

Wie hier:

201008#1008#Oltrogge#Oltrogge##Oltrogge######smtp-test#DE#0

#1008#willi@hoedel1.de
renee
 2008-02-01 11:27
#105439 #105439
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Sorry, da habe ich Dich wohl erst misverstanden...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2008-02-01 11:42
#105441 #105441
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
[...]
# read files
my $data_to_append = &datei_lesen($erste_datei,0);
my $full_data = &datei_lesen($andere_datei,1);[...]

sub datei_lesen{
   # pick parameters
   my($file,$index) = @_;

   # open file
   open(my$fhIN, '<', $file)
       or die "open failed: $!";

   # read data
   my %data;
   while (my$line=<$fhIN>)
   {
       chomp($line);

       # split line
       my @tracts = split('#', $line);

       # key equals the first tract
       my $key = $tracts[$index];
       my $val = [@tracts];

       # push data
       $data{$key} = [] unless exists $data{$key};
        push(@{$data{$key}}, $val);
   }

   # close file
   close($fhIN);

   # return data reference
   return \%data;
} # datei_lesen
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2008-02-01 09:41
#105448 #105448
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Gibt es denn eine "Regel", wie die ID vorne zustande kommt?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Paule1
 2008-02-01 09:56
#105451 #105451
User since
2007-11-27
4 Artikel
BenutzerIn
[default_avatar]
Mhhh,

Das ist folgendermassen:

Wenn die ID 4-stellig ist, wird eine 200 vornangestellt
Wenn die ID 5-stellig ist, wird eine 20 vornangestellt

also immer 7 stellig !
renee
 2008-02-01 10:00
#105452 #105452
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Dann mach mal aus :my $line = $key . '#' . join(',', map { join('#', @{$_}) } @{$data->{$key}});
einfach
Code (perl): (dl )
my $line = '20' . sprintf("%05d",$key) . '#' . $key . '#' . join(',', map { join('#', @{$_}) } @{$data->{$key}});
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 7 Einträge, 1 Seite



View all threads created 2008-02-01 09:11.