Hello Calvin,

your steps in "2)" look like you're trying to manipulate the input string by 
removing all unnecessary parts. AFAIK regex pattern matching is intended to 
just pick the part you want to keep ignoring the rest.
Using UNIX shell (bash) I successfully tested the following expression: 
\.(.{2})$
To clarify: I'm not quite sure, which regex type (e.g. PCRE) is expected by 
Spectrum.

$ if [[ '0.0.0.0.0.0.0.4E' =~ \.(.{2})$ ]]; then echo "matched part is 
>${BASH_REMATCH[1]}<"; fi
matched part is >4E<

Regarding the third parameter you just need to pass an unsigned integer value 
of zero.

So the interesting part of the event procedure might look like the following (I 
did not test!):

GetRegexp( GetEventAttribute( { S 7 } ), {S \"\.(.{2})$\" }, {U 0} )))"

You might want to look for some existing examples 

[spectrum@spectroserver CsVendor]$ grep GetRegexp */EventDisp
Cisco_Router/EventDisp:        GetRegexp( \
SiemensEntComm/EventDisp:#0x56a0240 E 20 P "SetVariable({V 
Vstr},GetRegexp(GetEventVariable({ U 7 })\
SiemensEntComm/EventDisp:#          ,ToUInteger(GetRegexp({V Vstr},{S 
\"^([0-9]+:)|([0-9]+)$\"},{U 0}))\
SiemensEntComm/EventDisp:0x56a0240 E 20 P "SetVariable({V 
Vstr},GetRegexp(GetEventVariable({ U 7 })\
SiemensEntComm/EventDisp:            ,ToUInteger(GetRegexp({V Vstr},{S 
\"^([0-9]+:)|([0-9]+)$\"},{U 0}))\

Mit freundlichen Gruessen - Yours sincerely

Raphael Franck
Consultant 
Global Infrastructure Operations

Computacenter AG & Co oHG
Enabling Users

Europaring 34-40, 50170 Kerpen, Germany
E-Mail: [email protected]
WWW: www.computacenter.de


-----Ursprüngliche Nachricht-----
Von: [email protected] [mailto:[email protected]] 
Gesendet: Freitag, 27. März 2015 01:35
An: Franck, Raphael
Cc: spectrum
Betreff: RE: AW: [spectrum] Event procedure regex help needed

Thanks for the reply Raphael.  

I've got a couple questions.

1) This is what my input string looks like:  "0.0.0.0.0.0.0.4E"
2) How do I create the following regular expression in Spectrum?
     a. s/\"//g   - this removes the quotes
     b. s/0.//g   - this removes the 0.
     c. hex(4E) - this converts the hex value to decimal
     d. Can those regular expressions be combined into one?
3) According to the documentation, if I use 0 for the third parameter, it will 
return the 'matched part' of the regular expression.  How should that look?

Thanks again.
Calvin



-----Original Message-----
From: "Franck, Raphael" <[email protected]>
Sent: Thursday, March 26, 2015 10:27am
To: "spectrum" <[email protected]>
Subject: AW: [spectrum] Event procedure regex help needed

Hi Calvin, list,

according to the GetRegexp.xml, the function takes the following 3 parameters:

1) An input string
2) A regular expression pattern string
3) A number specifying the return part
   0 ... return the whole matched part
   n > 1 return the n-th subpart of the matched expression
         subparts are referenced by enclosing the desired part
         in the regular expression into brackets: ()
         eg: "(critical|major|minor) ERROR"
         will match any of the error combinations and return the full
         string (eg "critical ERROR") for index 1, and just the error
         severity ("critical") for index 1
    </description>


The third parameter shall be an unsigned integer:

        <procedure-parameter>
            <parameter-position>3</parameter-position>
            <parameter-type>
                <parameter-uinteger/>
            </parameter-type>
            <parameter-description>
The index of the matched subexpression part that should be returned.
0 returns the whole matched portion.
            </parameter-description>
        </procedure-parameter>
    </parameter-list>

Your procedure text below seems to pass '{S 7}' which is treated as text string.
Actually I don't know if this causes the parsing error, but it might be worth 
looking at.

Mit freundlichen Gruessen - Yours sincerely

Raphael Franck
Consultant 
Global Infrastructure Operations

Computacenter AG & Co oHG
Enabling Users

Europaring 34-40, 50170 Kerpen, Germany
E-Mail: [email protected]
WWW: www.computacenter.de


-----Ursprüngliche Nachricht-----
Von: [email protected] [mailto:[email protected]] 
Gesendet: Donnerstag, 26. März 2015 13:54
An: spectrum
Betreff: [spectrum] Event procedure regex help needed

I created a watch that upon violation produces an event that looks like this:

 "0.0.0.0.0.0.0.4E"

I wrote a little perl script that does what I need (keep in mind, I am not a 
perl expert):

[spectrum@anddevspect04 SwScript]$ cat isoAndConv1.pl
#!/usr/bin/perl
#use strict;
use warnings;
my $input = "0.0.0.0.0.0.0.4E";
$input =~ s/\"//g;
print "Original octet string is $input \n";
$input =~ s/0.//g;
print "Isolated value at the end of the string is $input \n";
$output = $input;
my $output = hex($input);
print "The decimal equivalent of the isolated value is $output \n";

When I run the script, I get the following:

[spectrum@devspect SwScript]$ ./isoAndConv1.pl
Original octet string is 0.0.0.0.0.0.0.4E
Isolated value at the end of the string is 4E
The decimal equivalent of the isolated value is 78
[spectrum@devspect SwScript]$

It removes the double quotes, isolates the last part of the string, and the 
converts that hex value to decimal.  

I now need to do the same thing in Spectrum using event procedures.  This is 
what I have come up with this so far:

 0xfff00049 E 50 P "\
CreateEventWithAttributes( { C CURRENT_MODEL }, { H 0xfff0004b }" \
SetEventAttribute( \
GetEventAttributeList(), \
{ S 7 }, \
GetRegexp( \
GetEventAttribute( { S 7 } ), {S\"s/(0.)+//g\"}, \
{ S 7 })))"

I've verified the code and it looks fine, but I'm getting the following :

Procedure did not parse successfully (error reason: Procedure parsing failure) 
for event 0xfff00049 on line 60 of event disposition file 
../custom/Events/EventDisp
    0xfff00049 E 50 P "CreateEventWithAttributes(     { C CURRENT_MODEL },     
{ H 0xfff0004b } SetEventAttribute( GetEventAttributeList(), { S 7 }, 
GetRegexp( GetEventAttribute( { S 7 } ),  {S\"s/(0.)+//g\"}, { S 7 })))"


I'm not sure where the parsing error is.  I'm thinking that my regex statement 
is wrong.  I need a regex statement that removes the zeros and dots leaving the 
last value, removes the quotes, and then converts the last value to a decimal 
number.  Any help is appreciated.  Thanks.


---
To unsubscribe from spectrum, send email to [email protected] with the body: 
unsubscribe spectrum [email protected]

---
To unsubscribe from spectrum, send email to [email protected] with the body: 
unsubscribe spectrum [email protected]


---
To unsubscribe from spectrum, send email to [email protected] with the body: 
unsubscribe spectrum [email protected]

Reply via email to