#!/usr/bin/perl # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # # # Licensed Materials - Property of IBM # # (C) COPYRIGHT International Business Machines Corp. 2000,2019 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # sccsid = "@(#)30 1.18 src/rsct/rm/SensorRM/cli/bin/rmsensor.perl, sensorcli, rsct_rady, rady2035a 11/12/15 16:37:21" # Removes an RMC IBM.Sensor resource use strict; use locale; BEGIN { # this enables us to redirect where it looks for other RSCT files during development $::rsctroot = $ENV{'RSCT_ROOT'} || '/opt/rsct'; $::rsctpm = "$::rsctroot/pm"; $::rsctmsgmaps = "$::rsctroot/msgmaps"; } use lib $::rsctpm; use Getopt::Long; use CT_cli_utils qw(printIMsg printEMsg); use CT_cli_input_utils qw( check_input_file ); use MC_cli_utils qw( read_from_Stdin ); $main::PROGNAME = 'rmsensor'; $main::MSGCAT = 'sensorcli.cat'; $main::LSMSG = '/opt/rsct/bin/ctdspmsg'; # For the usage, see sensorcli.msg #sub usage { printIMsg('IMsgRmsensorUsage'); exit (scalar(@_) ? $_[0] : 1); } #sub usage { printIMsg('IMsgRmsensorUsage2'); exit (scalar(@_) ? $_[0] : 1); } sub usage { printIMsg('IMsgRmsensorUsage3'); exit (scalar(@_) ? $_[0] : 1); } Getopt::Long::Configure ("bundling", "no_auto_abbrev", "no_ignore_case", "require_order", "prefix_pattern=(--|-)"); # Parse the cmd line args and check them if(!GetOptions( 'h|help|version' , 'a' , 'm' , 'v' , 'V', 'n=s', 'N=s' )) { &usage; } if ($::opt_h) { &usage(0); } if (scalar(@ARGV) < 1 || (defined($::opt_n) && defined($::opt_N)) || ($::opt_a && defined($::opt_N)) || ($::opt_a && defined($::opt_n))) { &usage; } if ($::opt_V) { $::opt_v = 1; } # determine the class to use my $CLASSNAME = "IBM.Sensor"; if ($::opt_m) { $CLASSNAME = "IBM.MicroSensor"; } my $name = join("','",@ARGV); my $selectstr = q/Name IN ('/ . join("','",@ARGV) . q/')/; my $node_file_flag = 0; # node_file_flag =1 if -N was specified. my $node_file_name = ""; # node_file_name my $node_file_from_stdin = 0; # node_file_from_stdin = 1 if -N '-' # set -api command delimiters my $DELIMITERI = "tvitvitvi"; my $DELIMITERO = "tvotvotvo"; if ($::opt_a || defined($::opt_n) || defined($::opt_N)) { if ($ENV{CT_MANAGEMENT_SCOPE}!=2 && $ENV{CT_MANAGEMENT_SCOPE}!=3) { $ENV{CT_MANAGEMENT_SCOPE}=4; } } if (defined($::opt_n)) { my @nodes = split(/[, ]+/,$::opt_n); if (length($selectstr)) { $selectstr .= ' && '; } $selectstr .= q/NodeNameList IN ('/ . join("','",@nodes) . q/')/; } if (defined($::opt_N)) { $node_file_name = $::opt_N; $node_file_flag = 1; if ( $node_file_name eq "-" ) { $node_file_from_stdin = 1; } else { if ( check_input_file($node_file_name) ) { exit(1); } } } if (length($selectstr)) { $selectstr = qq("$selectstr"); } my $cmd; if ( $node_file_flag == 0) { $cmd = qq(/usr/bin/rmrsrc-api -I $DELIMITERI -D $DELIMITERO -s ${CLASSNAME}${DELIMITERI}$selectstr 2>&1); } else { if ($node_file_from_stdin != 0) { $node_file_name = read_from_Stdin(); } $cmd = qq(/usr/bin/rmrsrc-api -I $DELIMITERI -D $DELIMITERO -w ${CLASSNAME}${DELIMITERI}${selectstr}${DELIMITERI}$node_file_name 2>&1); } if ($::opt_v) { $main::PROGNAME = 'lssensor'; printIMsg('IMsgRmcCmd', $cmd); $main::PROGNAME = 'rmsensor'; } my @output = `$cmd`; my $rc = $? >> 8; # remove temp node file if from STDIN if ($node_file_from_stdin != 0) { unlink($node_file_name); } if ($rc) { if (!$::opt_v) { $output[0] =~ s/.*${DELIMITERO}.*${DELIMITERO}.*${DELIMITERO}.*${DELIMITERO}.*${DELIMITERO}//; } if ($rc == 6) { if ($::opt_v) { print @output; } printEMsg('EMsgResNotDefinedRm',$name); } else { print @output; } exit $rc; } exit $rc;