Schrift
[thread]6552[/thread]

Hilfe bei Script: Hilfe bei Script



<< >> 2 Einträge, 1 Seite
Gast Gast
 2004-09-01 15:44
#49747 #49747
Code: (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
#!/opt/perl/bin/perl 
print "Hostname:  ";
$host = <>;
chomp($host);
$path = '/var/opt/ignite/recovery/archives/';
$access = '-anon=2,access=';
$complete = "$path".$host." "."$access".$host;
$found_host = 0;
$found_host2 = 0;
$file = "/etc/exports";
open(EXPORTS, "$file")|| die "/etc/exports konnte nicht geoeffnet werden";
while(<EXPORTS>)
{
        if(index($_, ":$host") > -1)
        {
               $found_host2 = 1;
        }
        elsif(index($_, "$path".$host." "."$access".$host) > -1)
        {
               $found_host = 1;
        }
}
close(EXPORTS);

unless($found_host == 1)
{
     open(EXPORTS, ">>$file")|| die "Konnte /etc/exports nicht oeffnen ";
     print EXPORTS "$complete";
     close(EXPORTS);
     print "Host $host erfolgreich importert\n";
     mkdir "$path$host";
}
unless($found_host2 == 1)
{
     open FILE, $file;
     my @lines = <FILE>;
     map (chomp, @lines);
     $lines[0] .= ":$host";
     open FILE, ">$file";
     print FILE join("\n", @lines);
     close(FILE);
     mkdir "$path$host";
}
else
{
     print "Host $host bereits vorhanden\n";
}




Das ist mein bisheriges Script hierzu habe ich 2 Fragen:
1. Wie kann ich das ganze kompakter gestalten?
2. Wie kann ich das machen, dass der Host nachher nicht in der 1. Zeile sondern in einer bestimmten Zeile immer nur angehängt wird und zwar in genau der Zeile in der "$path".$host." "."$access".$host steht...in meinem Script schreibt er es immer genau in die erste Zeile...Warum

Über jede Hilfe würde ich mich freuen...

Mit freundlichen Grüßen

andy999mueller

edit renee: ne runde [code]-Tags spendiert\n\n

<!--EDIT|renee|1094039344-->
renee
 2004-09-01 15:54
#49748 #49748
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Warum er das immer in die erste Spalte schreibt?? Wel Du das an $lines[0] hängst. Da steht die erste Zeile drin...

Du solltest auch use strict; und use warnings; verwenden. Dann musst Du die Variablen allerdings mit 'my' deklarieren...

Mit dem Code sollte es funktionieren:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
unless($found_host2 == 1) 
{
open FILE, $file;
my @lines = <FILE>;
chomp(@lines);
my $search = $path.$host." ".$access.$host;
foreach(@lines){
$_ .= ":$host" if($_ =~ /$search/);
}
open FILE, ">$file";
print FILE join("\n", @lines);
close(FILE);
mkdir "$path$host";
}
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/
<< >> 2 Einträge, 1 Seite



View all threads created 2004-09-01 15:44.