<html><body><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt"><div><span>Hello,</span></div><div><span>Alan, thank you.</span></div><div><span></span> </div><div><span>I can see something better now. </span></div><div><span></span> </div><div><span>[eserica@netflow bin]$ /home/eserica/rancid/bin/h3crancid -d 10.3.4.5<br>executing /home/eserica/rancid/bin/hulogin -t 90 -c"display version ; display current-configuration" 10.3.4.5<br>executing /home/eserica/rancid/bin/hulogin -t 90 -c"display version ; display current-configuration" 10.3.4.5<br>10.3.4.5: missed cmd(s): display current-configuration,display version<br>10.3.4.5: missed cmd(s): display current-configuration,display version<br>10.3.4.5: End of run not found<br>10.3.4.5: End of run not found<br>#</span></div><div><br></div>  <div style="font-family: times new roman, new york, times, serif; font-size: 12pt;"> <div
 style="font-family: times new roman, new york, times, serif; font-size: 12pt;"> <div dir="ltr"> <div class="hr" style="margin: 5px 0px; padding: 0px; border: 1px solid rgb(204, 204, 204); height: 0px; line-height: 0; font-size: 0px;" contenteditable="false" readonly="true"></div>  <font face="Arial" size="2"> <b><span style="font-weight: bold;">From:</span></b> Alan McKinnon <alan.mckinnon@gmail.com><br> <b><span style="font-weight: bold;">To:</span></b> Erica James <jameserica156@yahoo.com> <br><b><span style="font-weight: bold;">Cc:</span></b> rancid shrubbery <rancid-discuss@shrubbery.net> <br> <b><span style="font-weight: bold;">Sent:</span></b> Tuesday, September 17, 2013 11:19 AM<br> <b><span style="font-weight: bold;">Subject:</span></b> Re: [rancid] Rancid-missed cmds<br> </font> </div> <div class="y_msg_container"><br>Ah, I see it now. The PATH is set in rancid.conf correctly so it is<br>available when run from
 cron.<br><br>You now need to add it to *your* path so it's available when you run the<br>command on the cli. Add it in your .bashrc or .profile as appropriate,<br>then log out, log in and run the test commands again. If rancid also<br>runs as a different user yu should add the same to that users<br>environment too.<br><br>These steps won't affect how rancid runs on a cron schedule, it will<br>only affect cli commands so our debugging efforts work<br><br><br>On 17/09/2013 08:08, Erica James wrote:<br>> Hello.<br>> I have checked in rancid's PATH.<br>> this is a portion of the rancid.conf file.<br>> BASEDIR=/home/eserica/rancid/var/rancid; export BASEDIR<br>> PATH=/home/eserica/rancid/bin:/usr/bin:.:/bin:/usr/kerberos/bin:/usr/local/bin:/usr/bin;<br>> export PATH<br>> <br>>  <br>> <br>> *From:* Alan McKinnon <<a href="mailto:alan.mckinnon@gmail.com"
 ymailto="mailto:alan.mckinnon@gmail.com">alan.mckinnon@gmail.com</a>><br>> *To:* Erica James <<a href="mailto:jameserica156@yahoo.com" ymailto="mailto:jameserica156@yahoo.com">jameserica156@yahoo.com</a>><br>> *Cc:* rancid shrubbery <<a href="mailto:rancid-discuss@shrubbery.net" ymailto="mailto:rancid-discuss@shrubbery.net">rancid-discuss@shrubbery.net</a>><br>> *Sent:* Monday, September 16, 2013 10:37 PM<br>> *Subject:* Re: [rancid] Rancid-missed cmds<br>> <br>> On 16/09/2013 16:32, Erica James wrote:<br>>> Alan,<br>>> <br>>> Thank you . Please see the below,<br>>> <br>>> 1. Can telnet to device and authenticate manually<br>>> <br>>> 2. /home/eserica/rancid/bin/hulogin -d 10.3.4.5 logs in successfully,<br>>> and enables properly. Prompt is correct as well<br>>> <br>>> 3. /home/eserica/rancid/bin/hulogin -t 90 -c"display<br>>> current-configuration ;
 display version" 10.3.4.5 runs cleanly. commands<br>>> are run neatly. automatic login and logout<br>>> 4.[<a href="mailto:eserica@netflow" ymailto="mailto:eserica@netflow">eserica@netflow</a> <mailto:<a href="mailto:eserica@netflow" ymailto="mailto:eserica@netflow">eserica@netflow</a>> logs]$<br>> /home/eserica/rancid/bin/h3crancid -d 10.3.4.5<br>>> executing hulogin -t 90 -c"display version ; display<br>>> current-configuration" 10.3.4.5<br>>> executing hulogin -t 90 -c"display version ; display<br>>> current-configuration" 10.3.4.5<br>>> sh: hulogin: command not found<br>> <br>>       ^^^^^^^^^^^^^^^^^^^^^^^^^^<br>> <br>> You almost certainly do not have "/home/eserica/rancid/bin/" in rancid's<br>> PATH. It is set in $RANCID_DIR/etc/rancid.conf.<br>> <br>> As to why this happened, it is very likely an installation failure.<br>> <br>> Did you install all of
 rancid to /home/eserica/rancid, or is that just a<br>> convenient place to put rancid scripts you are testing?<br>> <br>> <br>> The rancid build system works almost perfectly every time. It uses<br>> autotools and is designed to install the entire package to<br>> /usr/local/rancid/ by default and for the scripts to be run by user<br>> "rancid". As with all Unix apps it is sensitive to ownership and<br>> permission errors<br>> <br>> The errors you are getting indicate a faulty install, possibly trying to<br>> do itmanually.<br>> <br>> <br>> <br>> <br>>> 10.3.4.5: missed cmd(s): display current-configuration,display version<br>>> 10.3.4.5: missed cmd(s): display current-configuration,display version<br>>> 10.3.4.5: End of run not found<br>>> 10.3.4.5: End of run not found<br>>> The router.db<br>>> 10.3.4.5:huawei:up<br>>> <br>>> The rancid-fe<br>>> 
   'huawei'            => 'h3crancid',<br>>> <br>>> Don't understand why am getting such an output  from<br>>> /home/eserica/rancid/bin/h3crancid -d 10.3.4.5<br>>> Any comments on the above?<br>>> <br>>> Still the same logs.<br>>> <br>>> Eserica<br>>> <br>>><br>>> *From:* Alan McKinnon <<a href="mailto:alan.mckinnon@gmail.com" ymailto="mailto:alan.mckinnon@gmail.com">alan.mckinnon@gmail.com</a><br>> <mailto:<a href="mailto:alan.mckinnon@gmail.com" ymailto="mailto:alan.mckinnon@gmail.com">alan.mckinnon@gmail.com</a>>><br>>> *To:* rancid shrubbery <<a href="mailto:rancid-discuss@shrubbery.net" ymailto="mailto:rancid-discuss@shrubbery.net">rancid-discuss@shrubbery.net</a><br>> <mailto:<a href="mailto:rancid-discuss@shrubbery.net"
 ymailto="mailto:rancid-discuss@shrubbery.net">rancid-discuss@shrubbery.net</a>>><br>>> *Sent:* Monday, September 16, 2013 4:33 PM<br>>> *Subject:* Re: [rancid] Rancid-missed cmds<br>>><br>>> The approach to fixing this is always the same, at this point nothing<br>>> rancid is outputting helps debug in the slightest - all it says is that<br>>> something went wrong, but we already know that.<br>>><br>>> Do the following:<br>>><br>>> 1. telnet to device and check you can auth manually<br>>> 2. "hulogin <device>" and check it logs in and enables properly, and<br>>> that the prompt etc on the screen is correct<br>>> 3. run "hulogin -t 90 -c"display current-configuration,display version"<br>>> <device>" and check that the commands do actually run correctly<br>>> 4. run "hurancid -d <device>" - this dumps a *complete* log in the<br>>> current
 directory containing more info than the regular log you quoted<br>>> and often reveals the problem (but not always).<br>>><br>>><br>>> But first a few prior steps need to be verified:<br>>><br>>> - the command in #3 I pasted from your log output, and that has comma<br>>> separators. Your device might need semicolons, I have no idea as I don;t<br>>> know that vendors stuff<br>>> - the relevant line in router.db must contain the appropriate type<br>>> string in field 3<br>>> - you will have had to edit rancid-fe and add a line for huawei to a<br>>> perl hash. Without this, rancid-run doesn't know what parser script to<br>>> call and it cannot work.<br>>> - the device you have must be supported by the script you are using;<br>>> just because Huawei made it is no guarantee it works similarly to<br>>> anything else they might have
 made.<br>>><br>>><br>>> If all of that checks out, then we need to look into the running perl<br>>> itself.<br>>><br>>> I believe we've been over most of this before, I don't recall getting a<br>>> definitive answer. You really do need to go through all these steps as<br>>> given, nothing else is going to get to the root of your problem.<br>>><br>>><br>>><br>>> On 16/09/2013 15:11, Erica James wrote:<br>>>> Hello<br>>>> I have a problem with rancid parsing script. Logs show missed cmd(s).<br>>>> Trying to get all of the configs.<br>>>> 10.3.4.5: missed cmd(s): display current-configuration,display version<br>>>> 10.3.4.5: End of run not found<br>>>> #<br>>>> All routers sucessfully completed.<br>>>> cvs diff: Diffing .<br>>>> cvs diff: Diffing configs<br>>>> cvs commit: Examining
 .<br>>>> cvs commit: Examining configs<br>>>><br>>>> The script is for Huawei. The problem now seems to be that rancid is not<br>>>> collecting configs.<br>>>> Anyone with an idea on what to do?<br>>>><br>>>> Below is the rancid-script<br>>>><br>>>> #! /usr/bin/perl<br>>>> ##<br>>>> ## $Id$<br>>>> ##<br>>>> ## rancid 2.3.8<br>>>> ##<br>>>> ## Copyright (C) 1997-2004 by Terrapin Communications, Inc.<br>>>> ## All rights reserved.<br>>>> ##<br>>>> ## This software may be freely copied, modified and redistributed<br>>>> ## without fee for non-commerical purposes provided that this license<br>>>> ## remains intact and unmodified with any RANCID distribution.<br>>>> ##<br>>>> ## There is no warranty or other guarantee of fitness of this software.<br>>>>
 ## It is provided solely "as is".  The author(s) disclaim(s) all<br>>>> ## responsibility and liability with respect to this software's usage<br>>>> ## or its effect upon hardware, computer systems, other software, or<br>>>> ## anything else.<br>>>> ##<br>>>> ## Except where noted otherwise, rancid was written by and is<br>>> maintained by<br>>>> ## Henry Kilmer, John Heasley, Andrew Partan, Pete Whiting, and Austin<br>>>> Schutz.<br>>>> ##<br>>>> #<br>>>> # hurancid - Interface to Huawei devices<br>>>> #<br>>>> #  RANCID - Really Awesome New Cisco confIg Differ<br>>>> #<br>>>> # usage: rancid [-d] [-l] [-f filename | $host]<br>>>> #<br>>>> use Getopt::Std;<br>>>> getopts('dfl');<br>>>> $log = $opt_l;<br>>>> $debug = $opt_d;<br>>>> $file =
 $opt_f;<br>>>> $host = $ARGV[0];<br>>>> $clean_run = 0;<br>>>> $found_end = 0;<br>>>> $timeo = 90;                    # hulogin timeout in seconds<br>>>><br>>>> my(%filter_pwds);              # password filtering mode<br>>>> # This routine is used to print out the router configuration<br>>>> sub ProcessHistory {<br>>>>    my($new_hist_tag,$new_command,$command_string,@string)=(@_);<br>>>> if((($new_hist_tag ne $hist_tag) || ($new_command ne $command))<br>>>>        && defined %history) {<br>>>>        print eval "$command \%history";<br>>>>        undef %history;<br>>>>    }<br>>>>    if (($new_hist_tag) && ($new_command) &&
 ($command_string)) {<br>>>>        if ($history{$command_string}) {<br>>>>            $history{$command_string} =<br>>>> "mailto:$history%7B$command_string%<a href="mailto:7D@string" ymailto="mailto:7D@string">7D@string</a> <mailto:<a href="mailto:7D@string" ymailto="mailto:7D@string">7D@string</a>><br>> <mailto:<a href="mailto:7D@string" ymailto="mailto:7D@string">7D@string</a> <mailto:<a href="mailto:7D@string" ymailto="mailto:7D@string">7D@string</a>>>";<br>>>>        } else {<br>>>>            $history{$command_string} = "@string";<br>>>>        }<br>>>>    } elsif (($new_hist_tag) && ($new_command)) {<br>>>>        $history{++$#history} = "@string";<br>>>>    } else
 {<br>>>>        print "@string";<br>>>>    }<br>>>>    $hist_tag = $new_hist_tag;<br>>>>    $command = $new_command;<br>>>>    1;<br>>>> }<br>>>><br>>>> sub numerically { $a <=> $b; }<br>>>><br>>>> # This is a sort routing that will sort numerically on the<br>>>> # keys of a hash as if it were a normal array.<br>>>> sub keynsort {<br>>>>    local(%lines)=@_;<br>>>>    local($i) = 0;<br>>>>    local(@sorted_lines);<br>>>>    foreach $key (sort numerically keys(%lines)) {<br>>>>        $sorted_lines[$i] = $lines{$key};<br>>>>        $i++;<br>>>>    }<br>>>>    @sorted_lines;<br>>>>
 }<br>>>><br>>>> # This is a sort routing that will sort on the<br>>>> # keys of a hash as if it were a normal array.<br>>>> sub keysort {<br>>>>    local(%lines)=@_;<br>>>>    local($i) = 0;<br>>>>    local(@sorted_lines);<br>>>>    foreach $key (sort keys(%lines)) {<br>>>>        $sorted_lines[$i] = $lines{$key};<br>>>>        $i++;<br>>>>    }<br>>>>    @sorted_lines;<br>>>> }<br>>>><br>>>> # This is a sort routing that will sort on the<br>>>> # values of a hash as if it were a normal array.<br>>>> sub valsort{<br>>>>    local(%lines)=@_;<br>>>>    local($i) = 0;<br>>>>    local(@sorted_lines);<br>>>>    foreach $key (sort
 values %lines) {<br>>>>        $sorted_lines[$i] = $key;<br>>>>        $i++;<br>>>>    }<br>>>>    @sorted_lines;<br>>>> }<br>>>><br>>>> # This is a numerical sort routing (ascending).<br>>>> sub numsort {<br>>>>    local(%lines)=@_;<br>>>>    local($i) = 0;<br>>>>    local(@sorted_lines);<br>>>>    foreach $num (sort {$a <=> $b} keys %lines) {<br>>>>        $sorted_lines[$i] = $lines{$num};<br>>>>        $i++;<br>>>>    }<br>>>>    @sorted_lines;<br>>>> }<br>>>><br>>>> # This is a sort routine that will sort on the<br>>>> # ip address when the ip address is anywhere in<br>>>> # the
 strings.<br>>>> sub ipsort {<br>>>>    local(%lines)=@_;<br>>>>    local($i) = 0;<br>>>>    local(@sorted_lines);<br>>>>    foreach $addr (sort sortbyipaddr keys %lines) {<br>>>>        $sorted_lines[$i] = $lines{$addr};<br>>>>        $i++;<br>>>>    }<br>>>>    @sorted_lines;<br>>>> }<br>>>><br>>>> # These two routines will sort based upon IP addresses<br>>>> sub ipaddrval {<br>>>>    my(@a) = ($_[0] =~ m#^(\d+)\.(\d+)\.(\d+)\.(\d+)$#);<br>>>>    $a[3]+256*($a[2]+256*($a[1]+256*$a[0]));<br>>>> }<br>>>> sub sortbyipaddr {<br>>>>    &ipaddrval($a) <=> &ipaddrval($b);<br>>>> }<br>>>><br>>>><br>>>> # This routine
 processes a "show configuration"<br>>>> # This routine processes a "show configuration"<br>>>> sub WriteTerm {<br>>>>    print STDERR "    In WriteTerm: $_" if ($debug);<br>>>>    #my($lineauto) = 0;<br>>>><br>>>>    while (<INPUT>) {<br>>>> #print STDERR "History $_\n";<br>>>> <br>>>>        tr/\015//d;<br>>>>        last if(/^$prompt/);<br>>>>        next if (/^(\s*|\s*$cmd\s*)$/);<br>>>>        return(1) if (/^\s*\^\s*$/);<br>>>>        return(1) if (/Line has invalid autocommand /);<br>>>>        return(1) if (/(Invalid (input|command) detected|Type help or<br>> )/i);<br>>>>        return(-1) if (/command authorization
 failed/i);<br>>>>        # the pager can not be disabled per-session on the PIX<br>>>>        if (/^(<-+ More -+>)/) {<br>>>>            my($len) = length($1);<br>>>>            s/^$1\s{$len}//;<br>>>>        }<br>>>>     <br>>>>        /^/ && next;<br>>>>        ProcessHistory("COMMENTS","keysort","B1","# $_") && next;<br>>>>    }<br>>>><br>>>>        # end of config...is a comment.<br>>>>        if (/^return/i) {<br>>>> $found_end = 1;<br>>>>            return(1);<br>>>>        }<br>>>> <br>>>>     
   return(0);<br>>>> }<br>>>><br>>>> # This routine copies everything with precefing "#"<br>>>> sub CopyComment {<br>>>>    print STDERR "    In CopyComment: $_" if ($debug);<br>>>><br>>>>    while (<INPUT>) {<br>>>>        tr/\015//d;<br>>>>        last if (/^$prompt/);<br>>>><br>>>>        ProcessHistory("","","","# $_");<br>>>>        # end of config<br>>>>    }<br>>>>    return(0);<br>>>> }<br>>>><br>>>> # filter out "uptime" lines<br>>>> sub FilterUptime {<br>>>>    print STDERR "    In FilterUptime: $_" if ($debug);<br>>>><br>>>>    while (<INPUT>) {<br>>>>     
   tr/\015//d;<br>>>>        last if (/^$prompt/);<br>>>> #nmeongeza<br>>>>        next if (/^(\s*|\s*$cmd\s*)$/);<br>>>>        return(-1) if (/command authorization failed/i);<br>>>>        /^VERSION\=>(\s+.*)$/ &&<br>>>> ProcessHistory("COMMENTS","keysort","C1","\#\n# Version: $1\n")<br>>>> && next;<br>>>>        /^PATCH\=>(\s+.*)$/ &&<br>>>> ProcessHistory("COMMENTS","keysort","C2","\# Patch: $1\n")<br>>>> && next;<br>>>><br>>>>        /^PRODUCT\=>(\s+.*)$/ &&<br>>>> ProcessHistory("COMMENTS","keysort","C3","\# Version: $1\n")<br>>>> && next;<br>>>> }<br>>>> return(0);<br>>>>
 }<br>>>><br>>>><br>>>> # dummy function<br>>>> sub DoNothing {print STDOUT;}<br>>>><br>>>> # Main<br>>>> @commandtable = (<br>>>>        {'display version'                      => 'FilterUptime'},<br>>>>        {'display patch-information'            => 'CopyComment'},<br>>>>        {'display device'                        => 'CopyComment'},<br>>>>        {'display device pic-status'            => 'CopyComment'},<br>>>>        {'display current-configuration'        => 'WriteTerm'},<br>>>> );<br>>>><br>>>> # Use an
 array to preserve the order of the commands and a hash for<br>>> mapping<br>>>> # commands to the subroutine and track commands that have been completed.<br>>>> @commands = map(keys(%$_), @commandtable);<br>>>> %commands = map(%$_, @commandtable);<br>>>><br>>>> $huaw_cmds=join(";",@commands);<br>>>> $cmds_regexp=join("|",@commands);<br>>>><br>>>> open(OUTPUT,">$host.new") || die "Can't open $host.new for writing:<br>> $!\n";<br>>>> select(OUTPUT);<br>>>> # make OUTPUT unbuffered if debugging<br>>>> if ($debug) { $| = 1; }<br>>>><br>>>> if ($file) {<br>>>>    print STDERR "opening file $host\n" if ($debug);<br>>>>    print STDOUT "opening file $host\n" if ($log);<br>>>>    open(INPUT,"<$host") || die "open failed for $host: $!\n";<br>>>> } else
 {<br>>>>    print STDERR "executing hulogin -t $timeo -c\"$huaw_cmds\" $host\n"<br>>>> if ($debug);<br>>>>    print STDOUT "executing hulogin -t $timeo -c\"$huaw_cmds\" $host\n"<br>>>> if ($debug);<br>>>>    if (defined($ENV{NOPIPE}) && $ENV{NOPIPE} =~ /^YES/i) {<br>>>>        system "hulogin -t $timeo -c \"$huaw_cmds\" $host </dev/null ><br>>>> $host.raw" || die "hulogin failed for $host: $!\n";<br>>>>        open(INPUT, "< $host.raw") || die "hulogin failed for $host:<br>> $!\n";<br>>>>    } else {<br>>>>        open(INPUT,"hulogin -t $timeo -c \"$huaw_cmds\" $host </dev/null<br>>>> |") || die "hulogin failed for $host: $!\n";<br>>>>    }<br>>>> }<br>>>><br>>>> # determine password
 filtering mode<br>>>> if ($ENV{"FILTER_PWDS"} =~ /no/i) {<br>>>>        $filter_pwds = 0;<br>>>> } elsif ($ENV{"FILTER_PWDS"} =~ /all/i) {<br>>>>        $filter_pwds = 2;<br>>>> } else {<br>>>>        $filter_pwds = 1;<br>>>> }<br>>>><br>>>> ProcessHistory("","","","#RANCID-CONTENT-TYPE: Huawei\n#\n");<br>>>> ProcessHistory("COMMENTS","keysort","B0","#\n");<br>>>> ProcessHistory("COMMENTS","keysort","F0","#\n");<br>>>> ProcessHistory("COMMENTS","keysort","G0","#\n");<br>>>> TOP: while(<INPUT>) {<br>>>>    tr/\015//d;<br>>>><br>>>> #print STDERR ("CMD: $_\n");<br>>>> <br>>>>    if (/\>\s?quit.*$/) {<br>>>>        $clean_run=1;<br>>>>       
 last;<br>>>>    }<br>>>><br>>>>    if (/^Error:/) {<br>>>>        print STDOUT ("$host hulogin error: $_");<br>>>>        print STDERR ("$host hulogin error: $_") if ($debug);<br>>>>        $clean_run=0;<br>>>>        last;<br>>>> }<br>>>> <br>>>>    while (/\>\007*\s*($cmds_regexp)\s*$/) {<br>>>>        $cmd = $1;<br>>>><br>>>>        if (!defined($prompt)) {<br>>>>            $prompt = ($_ =~ /^([^>]+\>)/)[0];<br>>>>            $prompt =~ s/([][}{)(file://])///$1/g;<br>>>>            print STDERR ("PROMPT MATCH: $prompt\n") if ($debug);<br>>>>   
     }<br>>>>        print STDERR ("HIT COMMAND:$_") if ($debug);<br>>>>        if (! defined($commands{$cmd})) {<br>>>>            print STDERR "$host: found unexpected command - \"$cmd\"\n";<br>>>>            $clean_run = 0;<br>>>>            last TOP;<br>>>>        }<br>>>>        $rval = &{$commands{$cmd}};<br>>>>        delete($commands{$cmd});<br>>>>        if ($rval == -1) {<br>>>>            $clean_run = 0;<br>>>>            last TOP;<br>>>>        }<br>>>>    }<br>>>> }<br>>>> print STDOUT "Done
 $logincmd: $_\n" if ($log);<br>>>> # Flush History<br>>>> ProcessHistory("","","","");<br>>>> # Cleanup<br>>>> close(INPUT);<br>>>> close(OUTPUT);<br>>>><br>>>> if (defined($ENV{NOPIPE})) {<br>>>>    #unlink("$host.raw") if (! $debug);<br>>>> }<br>>>> # check for completeness<br>>>> if (scalar(%commands) || !$clean_run || !$found_end) {<br>>>>    if (scalar(%commands)) {<br>>>>        printf(STDOUT "$host: missed cmd(s): %s\n", join(',',<br>>>> keys(%commands)));<br>>>>        printf(STDERR "$host: missed cmd(s): %s\n", join(',',<br>>>> keys(%commands))) if ($debug);<br>>>>    }<br>>>>    if (!$clean_run || !$found_end) {<br>>>>        print STDOUT "$host: End of run not
 found\n";<br>>>>        print STDERR "$host: End of run not found\n" if ($debug);<br>>>>        system("/usr/bin/tail -1 $host.new");<br>>>>    }<br>>>>    #unlink "$host.new" if (! $debug);<br>>>> }<br>>>><br>>>><br>>><br>>><br>>> --<br>>> Alan McKinnon<br>>> <a href="mailto:alan.mckinnon@gmail.com" ymailto="mailto:alan.mckinnon@gmail.com">alan.mckinnon@gmail.com</a> <mailto:<a href="mailto:alan.mckinnon@gmail.com" ymailto="mailto:alan.mckinnon@gmail.com">alan.mckinnon@gmail.com</a>><br>> <mailto:<a href="mailto:alan.mckinnon@gmail.com" ymailto="mailto:alan.mckinnon@gmail.com">alan.mckinnon@gmail.com</a> <mailto:<a href="mailto:alan.mckinnon@gmail.com" ymailto="mailto:alan.mckinnon@gmail.com">alan.mckinnon@gmail.com</a>>><br>>><br>>>
 _______________________________________________<br>>> Rancid-discuss mailing list<br>>> <a href="mailto:Rancid-discuss@shrubbery.net" ymailto="mailto:Rancid-discuss@shrubbery.net">Rancid-discuss@shrubbery.net</a> <mailto:<a href="mailto:Rancid-discuss@shrubbery.net" ymailto="mailto:Rancid-discuss@shrubbery.net">Rancid-discuss@shrubbery.net</a>><br>> <mailto:<a href="mailto:Rancid-discuss@shrubbery.net" ymailto="mailto:Rancid-discuss@shrubbery.net">Rancid-discuss@shrubbery.net</a> <mailto:<a href="mailto:Rancid-discuss@shrubbery.net" ymailto="mailto:Rancid-discuss@shrubbery.net">Rancid-discuss@shrubbery.net</a>>><br>>> <a href="http://www.shrubbery.net/mailman/listinfo/rancid-discuss" target="_blank">http://www.shrubbery.net/mailman/listinfo/rancid-discuss</a><br>>><br>>><br>> <br>> <br>> -- <br>> Alan McKinnon<br>> <a href="mailto:alan.mckinnon@gmail.com"
 ymailto="mailto:alan.mckinnon@gmail.com">alan.mckinnon@gmail.com</a> <mailto:<a href="mailto:alan.mckinnon@gmail.com" ymailto="mailto:alan.mckinnon@gmail.com">alan.mckinnon@gmail.com</a>><br>> <br>> <br>> <br><br><br>-- <br>Alan McKinnon<br><a href="mailto:alan.mckinnon@gmail.com" ymailto="mailto:alan.mckinnon@gmail.com">alan.mckinnon@gmail.com</a><br><br><br><br></div> </div> </div>  </div></body></html>