Thread Code schlanker machen? (10 answers)
Opened by Beeboop at 2009-03-23 01:36

topeg
 2009-03-23 07:33
#119703 #119703
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
ungetestet,
soll nur eine Anregung sein...
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
#!/usr/bin/perl -w

use strict;
use warnings;

# In der main.cf wurde bei relayhost keine IP eingetragen, sondern der DynDns-Name.
# Dadurch ist es nicht noetig, dort die IP zu aendern!

my $main = "/etc/postfix/main.cf";
my $maintmp ="/etc/postfix/ma.txt";

my $transport = "/etc/postfix/transport";
my $transporttmp="/etc/postfix/max.txt";

my $search1=qx(mynetworks\s*=\s*([\d.]+?)/32\s*,\s*127.0.0/8);
my $search2=qx((.+?(?:.com)?) smtp:);

#IP-Adresse auslesen
my $addr = join(".", unpack("C4", (gethostbyname("$name"))[4]));
print ("$addr1\n");

MAIN1 ();
MAIN2 ();
MOVE();
exit();

#IP-Adresse in der main.cf aendern
sub MAIN1
{
  open (IN, '<', $main) || die "Kann die $datei nicht oeffnen($!)\n";
  #Ausgabe in Datei, in Datei schreiben
  open (OUT, '>', $maintmp) || die "Kann $tempdatei nicht oeffnen ($!)\n";
  #nach IP-Adresse suchen
  while(<IN>)
  {
    if ($_ =~/$search1/) #Vergleichsoperator ~
    {
      s/$1/$addr/;  #ersetzen der Zeile
    }
    print OUT $_;
  }
  close (IN);
  close (OUT);
}


#IP-Adresse in der transport aendern
sub MAIN2
{
  open (IN, '<', $transport)|| die "Kann $transport nicht oeffnen\n";
  open (OUT, '>', $transporttmp)|| die "Kann die $transporttmp nicht oeffnen\n";
  #nach IP-Adresse suchen
  while(<IN>)
  {
    if ($_ =~/$search2/) #Vergleichsoperator ~
    {
      s/$1/$addr/;       #ersetzen der Zeile  s= Ersetzoperator
    }
  print OUT $_;
  }
  #Ausgabe in Datei, in Datei schreiben
  close(OUT);
  close (IN);
}

sub MOVE
{
  unlink("$main.old") if(-e "$main.old");
  rename($main "$main.old");
  rename($maintmp $main);

  unlink("$transport.old") if(-e "$transport.old");
  rename($transport "$transport.old");
  rename($transporttmp $transport);

  system("postmap $transport");    # Neue transport einlesen
  system("postfix reload");        # System neu starten
}

Last edited: 2009-03-23 07:35:01 +0100 (CET)

View full thread Code schlanker machen?