<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=EN-IE link="#0563C1" vlink="#954F72" style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal><span style='mso-fareast-language:EN-US'>Hi Heas, Jon, community,<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'><br>I’m overdue sharing this module content and for this I apologise.<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>I have this working for several months now for ZPE devices using the following configuration.<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>--- File /etc/rancid/rancid.types.base or /etc/rancid/rancid.types.conf ---<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'># This section to the next hash governs ZPE devices running Nodegrid OS<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>zpe;script;zperancid -t zpe<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>zpe;login;zpelogin<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>zpe;module;zpe<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>zpe;inloop;zpe::inloop<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>zpe;command;zpe::ShowVersion;show system/about<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>zpe;command;zpe::ShowConfig;export_settings<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>#<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>--- File /usr/share/perl5/rancid/zpe.pm (module) in perl5 module directory ---<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>Take a copy of the IOS module (for example – ios.pm) and strip this down to remove the sections which are not relevant to you. For example, as you can see in my rancid types above, I’m only currently interested, in my use case, in the “ShowVersion” and “ShowConfig” *<b>sub</b>* sections.<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>Then you simply edit the existing inloop part of the module as follows<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'># main loop of input of device output<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>sub inloop {<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>    my($INPUT, $OUTPUT) = @_;<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>    my($cmd, $rval);<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>TOP: while(<$INPUT>) {<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                tr/\015//d;<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                if ((/\>\s?logout$/) || $found_end) {<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                    $clean_run=1;<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                    last;<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                }<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                if (/^Error:/) {<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                    print STDOUT ("$host complogin error: $_");<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                    print STDERR ("$host complogin error: $_") if ($debug);<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                    $clean_run=0;<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                    last;<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                }<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                <o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>        while (/[>#][\s\a]*($cmds_regexp)\s*$/) {<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                    $cmd = $1;<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                    if (!defined($prompt)) {<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                                $prompt = ($_ =~ /^([^#>]+[#>])/)[0];<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                                $prompt =~ s/([][}{)(\\])/\\$1/g;<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                                print STDERR ("PROMPT MATCH: $prompt\n") if ($debug);<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                    }<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                    print STDERR ("HIT COMMAND:$_") if ($debug);<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                    if (! defined($commands{$cmd})) {<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                                print STDERR "$host: found unexpected command - \"$cmd\"\n";<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                                $clean_run = 0;<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                                last TOP;<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                    }<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                    if (! defined(&{$commands{$cmd}})) {<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                                printf(STDERR "$host: undefined function - \"%s\"\n",<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                                       $commands{$cmd});<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                                $clean_run = 0;<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                                last TOP;<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                    }<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                    $rval = &{$commands{$cmd}}($INPUT, $OUTPUT, $cmd);<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                    delete($commands{$cmd});<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                    if ($rval == -1) {<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                                $clean_run = 0;<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                                last TOP;<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                    }<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>                }<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>    }<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>}<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>The root of the fix to get this working is the *<b>while</b>* line and the *<b>prompt</b>* lines and the associated regex<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>For completeness, I separated out the bin files and duplicated the clogin to zpelogin and rancid to zperancid aswell – but this may not be necessary for you.<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>HTH,<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'>Mick<o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal style='margin-bottom:12.0pt'><b><span style='font-size:12.0pt;color:black'>From: </span></b><span style='font-size:12.0pt;color:black'>heasley <heas@shrubbery.net><br><b>Date: </b>Thursday, 17 February 2022 at 04:45<br><b>To: </b>Jon Lewis <jlewis@lewis.org><br><b>Cc: </b>Mick O'Donovan <mick.odonovan@heanet.ie>, rancid-discuss@www.shrubbery.net <rancid-discuss@sea.shrubbery.net><br><b>Subject: </b>Re: [rancid] Assistance creating a perl module to use with ZPE Systems NodegridOS Devices<o:p></o:p></span></p></div><div><p class=MsoNormal><br>If one of you shares the raw file and the code, i can try to help resolve<br>that failure.<br><br><br></p></div></div></body></html>