Hi friends, Kindly help me regarding the issue Im facing with the below perl script,
I have a below script which send the message to Console. I need to modify this script it send message to a Log file. Please find the below steps which i performed to send a message to log. Orginal Script: =============== return -1 on error # 0 pkg is starting or running and switchable # 1 pkg is starting or running and not switchable # 2 pkg is not running _show_pkg() { local pkg=${1:-ALL} #i.e 'GENPKG1,GENPKG3' or 'ALL' or 'GENPKG1' or ... local mode=${2:-silent} #i.e 'normal' clustat -flx | perl -MXML::Twig -e' my %S = (started => q/UP/, recoverable => q/FAILED/, pending => q/FAILED/, stopped => q/DOWN/, failed => q/FAILED/, disabled => q/ DOWN/ ); my @A = split /,/, $ARGV[0]; my ($ret,$cs) = (0,0); my $twig = new XML::Twig(TwigRoots => {node => 1, group => 1}, TwigHandlers => { node => sub { my ($t,$n) = @_; $cs = $ret = 1 unless ($n->att(rgmanager) eq q/1/ and $n->att(state) eq q/1/); }, group => sub { my ($t,$g) = @_; my $pkg = (split /:/,$g->att(name))[1]; return unless (q/ALL/ eq $A[0] or grep /$pkg/, @A); my $owner = "on ".substr($g->att(owner),0,-2) if $g->att(state_str) eq q/started/; unless ($ARGV[1] eq q/silent/) { print("State of $pkg is $S{$g->att(state_str)}"); print(" $owner and ",($g->att(restarts)>0 or $cs)?"not":" "," switchable") if $owner; print "\n"; } $ret = 1 if $g->att(restarts)>0; $ret = 2 unless $g->att(state_str) eq q/started/; }}); print(STDERR "Cannot open XML::Twig\n"), exit -1 unless defined $twig; $twig->safe_parse(STDIN); exit $ret; ' ${pkg} ${mode} } Note ===> Steps 1. The output of the above script will display below information in Screen ( console), it will only display GENPKG{1..5} information on screen. [root@incciozr0846 hbha]# show_pkg State of GENPKG1 is FAILED State of GENPKG2 is FAILED State of GENPKG3 is FAILED State of GENPKG4 is FAILED State of GENPKG5 is FAILED [root@incciozr0846 hbha]# 2. I want to send the same message to log file, So I adopted the script as shown below. my $file1 = "/tmp/pmon/usbs_manage_ha.log"; open FILE, ">>$file1" or die "unable to open $file1 $!"; unless ($ARGV[1] eq q/silent/) { print("State of $pkg is $S{$g->att(state_str)}"); print FILE ("State of $pkg is $S{$g->att(state_str)} \n "); print(" $owner and ",($g->att(restarts)>0 or $cs)?"not":" "," switchable") if $owner ; print FILE (" $owner and ",($g->att(restarts)>0 or $cs)?"not":" "," switchable \n" ) if $owner ; print "\n"; } close FILE or die; 3) Kindly note, Now im able to write to $file1 ("/tmp/pmon/ usbs_manage_ha.log"), but its continiously writing to the $file1 in loop, < extract of messgae in log > #*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#* #H: show_pkg called by: bash[2208] at Sat Jan 19 03:46:41 CET 2002 State of GENPKG1 is FAILED State of GENPKG2 is FAILED State of GENPKG3 is FAILED State of GENPKG4 is FAILED State of GENPKG5 is FAILED #H: show_pkg (ret = 2) terminate at Sat Jan 19 03:46:41 CET 2002 State of GENPKG5 is FAILED State of GENPKG1 is FAILED State of GENPKG2 is FAILED State of GENPKG3 is FAILED State of GENPKG4 is FAILED State of GENPKG5 is FAILED State of GENPKG1 is FAILED State of GENPKG2 is FAILED State of GENPKG3 is FAILED State of GENPKG4 is FAILED State of GENPKG5 is FAILED State of GENPKG1 is FAILED State of GENPKG2 is FAILED State of GENPKG3 is FAILED 4) Please provide your inputs to get rid of this loop, -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/