PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : unterschiedliche Ausgaben von einem Befehl über rsh



pygo
13.12.2005, 10:42
Hallo!

Ich habe hier ein seltsames Phänomen, dass ich mir gerade nicht erklären kann und auch nicht weiss, wo ich Informationen dazu finden könnte. Ich mache in einem Perl-Script einen rsh-Aufruf. (Ja, soll ich nicht mehr, geht hier aber nicht anders und eigentlich sollte das auch nicht der Grund für das obskure Verhalten sein.) In dem Script, mit dem ich nur getestet habe, läufts super. Hier der Auszug aus dem Script:

[...]
my $server = 'fs00c1';
open(PS, "rsh $server -l perforce ps -efa | grep 'tail +0f /cluster' | ");
while(<PS>){
print $_;
}
close(PS);gibt das folgende aus, das so auch auf der Kommandozeile käme und völlig erwartet ist:
perforce 24101 23900 0 10:24:06 ? 0:00 tail +0f
/cluster/3008/log/log_3008
perforce 13796 13795 0 13:20:50 ? 0:00 tail +0f
/cluster/3402/log/log_3402
perforce 23865 23863 0 10:24:04 ? 0:00 tail +0f
/cluster/4004/log/log_4004

Dann wollte ich es allerdings übertragen in mein 'Hauptscript' und habe es erst reingepastet und dann angepasst (der hostname sollte zum Beispiel erst ausgelesen werden etc):

[...]
# get the hostname for this server
open(HOST, "rsh perforce$server -l perforce hostname |");
my $host = <HOST>;
close(HOST);

# kill all running tails on the host
my $hostCommand = "tail +0f $logfile";
print $hostCommand."\n";
open(PS, "rsh ".$host." -l perforce ps -efa | grep '".$hostCommand."' | ");
while(my $psLine = <PS>){
print "PSline ".$psLine;
if($psLine =~ / *?[a-zA-Z]+? (\d+?) /){
# this line indicates a running tail that should be quit
my $pidToKill = $1;
open(STOP, "rsh $host -l perforce kill -9 ".$pidToKill." | ");
close(STOP);
}
}
close(PS);
[...]und da erhalte ich als Ausgabe auf einmal
tail +0f /cluster/3402/log/log_3402
PSline Last login: Tue Dec 13 09:11:49 from ls0066.xxx.yyy-
PSline #
PSline # PrimeCLuster fs00c
PSline #
PSline # ################################################## ####
PSline # !! DO NOT change * perf9999 * configuraion
PSline # !! cause this service is the source for new one
PSline # ################################################## ####
PSline
PSline Mirroring Base LUNs/slices:
PSline
PSline Rot(es1000) Wdf(es1001)
PSline /dev/dsk/c3t0d0s6 <-> /dev/dsk/c4t2d0s6
PSline /dev/dsk/c3t1d1s6 <-> /dev/dsk/c4t3d1s6
PSline /dev/dsk/c3t0d2s6 <-> /dev/dsk/c4t2d2s6
PSline /dev/dsk/c3t1d3s6 <-> /dev/dsk/c4t3d3s6
PSline /dev/dsk/c3t0d4s6 <-> /dev/dsk/c4t2d4s6
PSline /dev/dsk/c3t1d5s6 <-> /dev/dsk/c4t3d5s6
PSline __________________________________________________ ______
PSline You have new mail.
PSline /sni/tools/rms/clusterinfo.sh: powermt: execute permission denied
PSline ACHTUNG CAUTION ACHTUNG CAUTION ACHTUNG CAUTION ACHTUNG CAUTION
ACHTUNG
PSline
================================================== =====================
PSline this system ist part of a HA-Cluster !!
PSline
PSline HA-Cluster-Softwarestate on this host: Active
PSline HA-Cluster will start at next reboot : never
PSline Dead EMC Powerpath Channels (normal zero): 0
PSline Perforce Services running on this host : 42
PSline named 1666 1667 2100 3000 3003 3005 3008 3009 3010 3011 3012
PSline 3013 3014 3016 3020 3021 3022 3025 3027 3028 3040 3091
PSline 3100 3223 3224 3225 3227 3228 3230 3300 3301 3402 3645
PSline 4000 4001 4002 4003 4004 5000 5001 5555 9997
PSline
Ich kann dann sogar in dem Kommandofenster, in dem ich das Script gestartet habe Befehle an den entsprechenden Host schicken. Wie kann denn sowas vorkommen? Ich sehe keinen Unterschied zwischen den beiden Aufrufen...

Ok, ich sehe da eine Zeile, die mir was von "execute permission denied" erzählt. Aber ist das überhaupt mein Aufruf und wieso steht das erstens überhaupt in diesem Kontext und zweitens die permission ist mit dem anderen Script ja auch da.

Ich wäre für jede Idee erst mal dankbar!

Beste Grüsse - Pygo

pygo
13.12.2005, 11:24
Also... ich schäm mich jetzt ganz doll aber leider kann ich meinen Eintrag nicht löschen.

Fehler war der: ich habe den Hostnamen eingelesen und in $host gespeichert. Allerdings war da ein \n am Ende - und das hat das Problem verursacht! Da hätte ich auch vorher mal drauf kommen können...

sono
13.12.2005, 12:43
Passiert.
Da bist du nicht der einizige der bereits 5 Minuten nach dem Post das Problem gefunden.

Siehs so , hättest du nicht gepostet hättest du vermutlich das Problem immernoch nicht gefunden rein nach der Annahme dass immer das schlimmstmögliche in einer Situation passiert .

Gruß Sono