wenze
Anmeldungsdatum: 9. August 2006
Beiträge: 161
Wohnort: vergessen
|
Hallo, ich habe ein Problem: Ich habe ein Array mit Werten gefüllt. | my @ListInstances = `/usr/sap/hostctrl/exe/saphostctrl -function ListInstances | grep -vE "DAA|DAB" |sed 's/,//g' | awk '{print \$4,":",\$6,":"}` ;
|
Ausgabe: PIS : 01 :
PIS : 00 :
PIS : 02 :
WDP : 03 :
Nun nehme ich jeden Wert und möchte den ergänzen (im Moment befülle ich damit noch ein zweites Array, was ich aber lassen möchte): 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 |
foreach (@ListInstances) {
print "$_\n";
my $UpperSID = substr($_,0,3);
my $Instance = substr($_,6,2);
my $LowerSID = lc $UpperSID;
my $SIDadm = $LowerSID."adm";
print "$UpperSID\n";
my $disp = `su - $SIDadm -c which disp+work 2>/dev/null`;
if ( defined($disp) ) {
my @SapKernel_Info = `su - $SIDadm -c $disp 2>/dev/null`;
foreach (@SapKernel_Info) {
if (/kernel make variant/) {
$variant = (split)[-1];
} elsif (/compilation mode/) {
$comp = (split)[-1];
} elsif (/patch number/) {
$patch = (split)[-1];
}
}
|
Ziel ist es dass es so dann aussehen soll: PIS : 01 : 741_REL : UNICODE : 111
PIS : 00 : 741_REL : UNICODE : 111
PIS : 02 : 741_REL : UNICODE : 111
WDP : 03 :
Danke für jeden Tipp
|
apt-ghetto
Anmeldungsdatum: 3. Juni 2014
Beiträge: 2943
|
wenze schrieb: Hallo, ich habe ein Problem: Ich habe ein Array mit Werten gefüllt.
Und wo ist das Problem? Es wäre natürlich praktisch, wenn du in deinem Skript auch gleich ein Array mit Testdaten zur Verfügung stellen würdest. Dann brauchst du auch keine Shellbefehle posten. Nun nehme ich jeden Wert und möchte den ergänzen (im Moment befülle ich damit noch ein zweites Array, was ich aber lassen möchte):
So wie ich das sehe, wird das zweite Array dynamisch abgefüllt, also abhängig davon, welchen Wert $SIDadm gerade hat. Ich habe dein Skript angepasst und mit Vermutungen aufgefüllt: 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 | #!/usr/bin/perl -w
# arrayEintrag.pl
use warnings;
use strict;
use v5.20; # wird nur für "say" statt "print" benötigt
my ( $variant, $comp, $patch );
my @ListInstances = ( "PIS : 01 :\n",
"PIS : 00 :\n",
"PIS : 02 :\n",
"WDP : 03 :\n" );
# Dieses Array fülle ich einfach mal mit Testdaten ab, dafür ist Zeile 30 auskommentiert
my @SapKernel_Info = ( "kernel make variant 742_REL\n",
"compilation mode UNICODE\n",
"patch number 100\n" );
foreach ( @ListInstances ) {
chomp;
my $SIDadm = lc substr( $_, 0, 3 ) . "adm"; # Die Variable reicht doch?
my $disp = `su - $SIDadm -c which disp+work 2>/dev/null`;
if ( defined( $disp )) {
# my @SapKernel_Info = `su - $SIDadm -c $disp 2>/dev/null`;
foreach ( @SapKernel_Info ) {
if (/kernel make variant/) {
$variant = (split)[-1];
} elsif (/compilation mode/) {
$comp = (split)[-1];
} elsif (/patch number/) {
$patch = (split)[-1];
}
}
$_ = $_ . " $variant : $comp : $patch\n";
say; # Fürs Debuggen
}
}
|
|
wenze
(Themenstarter)
Anmeldungsdatum: 9. August 2006
Beiträge: 161
Wohnort: vergessen
|
Erst einmal Danke. Ich war in der Zwischezeit nicht untätig und hatte es jetzt erst einmal einfacher für mich gelöst. 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 | my @ListInstances = `/usr/sap/hostctrl/exe/saphostctrl -function ListInstances | grep -vE "DAA|DAB" |sed 's/,//g' | awk '{print \$4,":",\$6,":"}` ;
chomp (@ListInstances);
foreach (@ListInstances) {
#print "$_\n";
my $UpperSID = substr($_,0,3);
my $Instance = substr($_,6,2);
my $LowerSID = lc $UpperSID;
my $SIDadm = $LowerSID."adm";
my $ListInstances = $_;
#print "$UpperSID\n";
#print "$LowerSID\n";
#print "$SIDadm\n";
my $disp = `su - $SIDadm -c which disp+work 2>/dev/null`;
if ( $? == 0 ) {
#print "$disp \n";
#print "$SIDadm\n";
my @SapKernel_Info = `su - $SIDadm -c $disp 2>/dev/null`;
foreach (@SapKernel_Info) {
if (/kernel make variant/) {
$variant = (split)[-1];
} elsif (/compilation mode/) {
$comp = (split)[-1];
} elsif (/patch number/) {
$patch = (split)[-1];
}
}
my $info = $OSinfo." : ".$ListInstances." ".$variant." : ".$comp." : ".$patch;
push @OSinfoSum, $info;
undef $variant;
undef $comp;
undef $patch;
}
else {
my $info = $OSinfo." : ".$ListInstances." : : ";
push @OSinfoSum, $info;
}
}
|
Und das ist mein Zwischenergebnis: dbssapsid : aix : 6.1.0.0 : SID : 01 : 741_REL : UNICODE : 111
dbssapsid : aix : 6.1.0.0 : SID : 00 : 741_REL : UNICODE : 111
dbssapsid : aix : 6.1.0.0 : SID : 02 : 741_REL : UNICODE : 111
dbssapdis : aix : 6.1.0.0 : DIS : 03 : : : Ich werde mir morgen deine Lösung ansehen. Gute Nacht
|