Es lässt mich nicht antworten auf Kommentar so Bearbeitung hier, mit Linux als OS. Ich verwende die unten genannten, um Tickets zu erstellen, aber -k Parameter, Duplikation Parameter ruft die Nachricht in "" und wenn es "" in der Nachricht gibt, dann werden diese Parameter durcheinander gebracht und Nachrichten nicht weitergeleitet werden. Wie diese doppelten Anführungszeichen in -k Parameter zu entkommen, so dass es durchläuft? Vielen Dank im VorausFlucht doppelte Anführungszeichen in Perl in Linux
#!/usr/bin/perl
use strict;
use Getopt::Std;
# declare the perl command line flags/options we want to allow
# Define the environment
my %option=();
my $SEND_OUTPUT = "" ;
my $MODE = "Prod" ;
my $SENDEVENT_LOG = "";
my $DATE = "" ;
my $SEND_EVENT = "";
my $SEND_OUTPUT_LOG = "" ;
my $DSOM_SEV = "" ;
getopts("q:a:n:p:s:k:c:m:t:y:z:", \%option);
# Define the environment
if ($MODE =~ m/Prod/i) {
$SENDEVENT_LOG="/var/opt/SendEvent/log/SendEvent.log";
}
if ($MODE =~ m/Dev/i) {
$SENDEVENT_LOG="/var/opt/SendEvent/log/SendEvent.Dev.log";
}
# Define time stamp
my $DATE=`date +%Y:%m:%d:\%T`; chomp $DATE ; my $TIME=`date +%T`; chomp $TIME; my $NOW=$DATE." ";
# Open Logfile and define the Date Variable
open (LOGFILE, ">>${SENDEVENT_LOG}") or die ("Cannot open SendEvent log file ");
# test for the existence of the options on the command line.
# in a normal program you'd do more than just print these.
print LOGFILE "$DATE *******************************************************************\n";
print LOGFILE "\n$DATE New Instance of SendEvent initiated\n" ;
print LOGFILE "$DATE Examine the input arguments below to validate this instance of SendEvent\n\n" ;
print "\n\n" ;
if ($option{q}) { print LOGFILE "$DATE -q $option{q}\n" } else { print LOGFILE "$DATE -q **** value missing *****\n" }
if ($option{a}) { print LOGFILE "$DATE -a $option{a}\n" } else { print LOGFILE "$DATE -a **** value missing *****\n" }
if ($option{n}) { print LOGFILE "$DATE -n $option{n}\n" } else { print LOGFILE "$DATE -n **** value missing *****\n" }
if ($option{p}) { print LOGFILE "$DATE -p $option{p}\n" } else { print LOGFILE "$DATE -p **** value missing *****\n" }
if ($option{s}) { print LOGFILE "$DATE -s $option{s}\n" } else { print LOGFILE "$DATE -s **** value missing *****\n" }
if ($option{k}) { print LOGFILE "$DATE -k $option{k}\n" } else { print LOGFILE "$DATE -k **** value missing *****\n" }
if ($option{c}) { print LOGFILE "$DATE -c $option{c}\n" } else { print LOGFILE "$DATE -c **** value missing *****\n" }
if ($option{m}) { print LOGFILE "$DATE -m $option{m}\n" } else { print LOGFILE "$DATE -m **** value missing *****\n" }
if ($option{t}) { print LOGFILE "$DATE -t $option{t}\n" } else { print LOGFILE "$DATE -t **** value missing *****\n" }
if ($option{y}) { print LOGFILE "$DATE -y $option{y}\n" } else { print LOGFILE "$DATE -y **** value missing *****\n" }
if ($option{z}) { print LOGFILE "$DATE -z $option{z}\n" } else { print LOGFILE "$DATE -z **** value missing *****\n" }
# other things found on the command line
print LOGFILE "$DATE Other things found on the command line:\n" if $ARGV[0];
foreach (@ARGV)
{
print LOGFILE "$DATE $_\n";
}
my $TOOL = "$option{q}" ;
my $MSG_APPL = "$option{a}" ;
my $MSG_NODE_NAME = "$option{n}" ;
my $ESM_PROFILE = "$option{p}" ;
my $MSG_SEV = "$option{s}" ;
my $DEDUPLICATION = "$option{k}" ;
my $MANAGEMENT_ID = "$option{c}" ;
my $LONG_TEXT = "$option{m}" ;
my $SHORT_TEXT = "$option{t}" ;
my $DEFAULT_Q = "$option{y}" ;
my $ACCOUNT = "$option{z}" ;
# Translate OpenView Severity to DSOM Severity
# OpenView Sev DSOM Sev
if ($MSG_SEV =~ m/Critical/i) { $DSOM_SEV = "FATAL" }
if ($MSG_SEV =~ m/Major/i ) { $DSOM_SEV = "CRITICAL" }
if ($MSG_SEV =~ m/Minor/i ) { $DSOM_SEV = "MINOR" }
if ($MSG_SEV =~ m/Warning/i ) { $DSOM_SEV = "WARNING" }
if ($MSG_SEV =~ m/Normal/i ) { $DSOM_SEV = "HARMLESS" }
print LOGFILE "\n$DATE Translating Openview Severity to DSOM Severity, $MSG_SEV => $DSOM_SEV\n\n" ;
$SEND_OUTPUT_LOG = "/opt/SendEvent/dist/SendEvent/SendEvent send -q \"$TOOL\" -a \"$MSG_APPL\" -n \"$MSG_NODE_NAME\" -p \"$ESM_PROFILE\" -s \"$DSOM_SEV\" -k \"$DEDUPLICATION\" -c \"$MANAGEMENT_ID\" -m \"$LONG_TEXT\" -t \"ABC $SHORT_TEXT\" -z \"ABC\" -y \"$DEFAULT_Q\"" ;
$SEND_EVENT=`/opt/SendEvent/dist/SendEvent/SendEvent send -q "$TOOL" -a "$MSG_APPL" -n "$MSG_NODE_NAME" -p "$ESM_PROFILE" -s "$DSOM_SEV" -k "$DEDUPLICATION" -c "$MANAGEMENT_ID" -m "$LONG_TEXT" -t "ABC $SHORT_TEXT" -z "ABC" -y \"$DEFAULT_Q\"` ;
print LOGFILE "$DATE \n$SEND_EVENT\n\n" ;
print LOGFILE "$DATE $SEND_OUTPUT_LOG\n\n" ;
Welches Betriebssystem betreiben Sie? – choroba
Sie bekommen eine Menge Stimmen, um wegen Unklarheit zu schließen, was Sie fragen. Das liegt wahrscheinlich daran, dass es so viel Code gibt, dass es schwierig ist, den Teil zu finden, über den Sie gerade sprechen. Versuchen Sie, den Code, den Sie veröffentlichen, auf das zu beschränken, was zur Demonstration Ihres Problems notwendig ist. – ysth