1
它不讓我在這裏使用Linux作爲操作系統回覆評論。 我正在使用下述內容獲取創建的票據,但-k參數,重複參數在「」中獲取消息,如果消息中有「」,則這些參數會混亂並且消息不會被轉發。 如何在-k參數中使用這些雙引號以便通過? 在此先感謝在Linux中perl中轉義雙引號
#!/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" ;
你運行什麼操作系統? – choroba
你會得到很多選票來關閉你的問題。這可能是因爲那裏有太多的代碼,很難找到你正在談論的部分。儘量縮小你發佈的代碼,以證明你的問題是必要的。 – ysth