[f-nsp] Script to simplify software upgrade process

Drew Weaver drew.weaver at thenap.com
Mon Mar 31 07:27:36 EDT 2008


its one command if you need to install the flash and two commands if you need to install the flash and the boot loader, how is that confusing?

Thanks,
-Drew

-----Original Message-----
From: foundry-nsp-bounces at puck.nether.net [mailto:foundry-nsp-bounces at puck.nether.net] On Behalf Of Piper, James
Sent: Monday, March 31, 2008 12:43 AM
To: foundry-nsp at puck.nether.net
Subject: Re: [f-nsp] Script to simplify software upgrade process


Formatting got all messed up. Email me directly if you want a copy.

James

-----Original Message-----
From: foundry-nsp-bounces at puck.nether.net
[mailto:foundry-nsp-bounces at puck.nether.net] On Behalf Of Piper, James
Sent: Monday, 31 March 2008 15:31
To: foundry-nsp at puck.nether.net
Subject: [f-nsp] Script to simplify software upgrade process

Hi All,

I'm not sure if I missed something but I haven't found anything in the
documentation that gives a simple list of commands to execute in order
to perform a software upgrade from a TFTP server. In response I wrote
this simple script to parse a software release directory and generate a
file listing the exact commands in order to cut-and-paste onto the
switch. Be good if SNMP could be used instead. Hope it helps someone..

Regards,
James

# Copyright 2008 Rail Corporation of NSW # # This program is free
software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published
by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see
<http://www.gnu.org/licenses/>.

import re
from os import listdir
from sys import argv, exit

if len(argv)==3:
    tftp_server = argv[1]
    files_dir = argv[2]
else:
    tftp_server = '172.21.2.101'
    files_dir = '.'

files = listdir(files_dir)

# regex for matching files
mgt_monitor = re.compile('^xmb\d+.*\.bin') mgt_boot =
re.compile('^xmprm\d+.*\.bin') mgt_ironware =
re.compile('^xmr\d+.*\.bin') mgt_fpga =
re.compile('^mbridge_\d+.*\.xsvf')

int_monitor = re.compile('^xmlb\d+.*\.bin') int_boot =
re.compile('^xmlprm\d+.*\.bin') int_ironware =
re.compile('^xmlp\d+.*\.bin') int_pbif =
re.compile('^pbif(?!oc).*\.bin') int_xpp =
re.compile('^xpp(?!oc).*\.bin') int_xgmac = re.compile('^xgmac')

fabric_fpga = re.compile('^sbridge')

commands = {}

# commands are entered in order
for f in files:
        if mgt_monitor.match(f):
                commands[0] = '! mgt_monitor\ncopy tftp flash %s %s
monitor\n' % (tftp_server, f)

        if mgt_boot.match(f):
                commands[1] =  '! mgt_boot\ncopy tftp flash %s %s
boot\n' % (tftp_server, f)

        if mgt_ironware.match(f):
                commands[2] =  '! mgt_ironware\ncopy tftp flash %s %s
primary\n' % (tftp_server, f)

        if mgt_fpga.match(f):
                commands[3] =  '! mgt_fpga\ncopy tftp mbridge %s %s\n' %
(tftp_server, f)

        if int_monitor.match(f):
                commands[4] =  '! int_monitor\ncopy tftp lp %s %s
monitor all\n' % (tftp_server, f)

        if int_boot.match(f):
                commands[5] =  '! int_boot\ncopy tftp lp %s %s boot
all\n' % (tftp_server, f)

        if int_ironware.match(f):
                commands[6] =  '! int_ironware\ncopy tftp lp %s %s
primary all\n' % (tftp_server, f)

        if int_pbif.match(f):
                commands[7] =  '! int_pbif\ncopy tftp lp %s %s fpga-pbif
all\n' % (tftp_server, f)

        if int_xpp.match(f):
                commands[8] =  '! int_xpp\ncopy tftp lp %s %s fpga-xpp
all\n' % (tftp_server, f)

        if int_xgmac.match(f):
                commands[9] =  '! int_xgmac\ncopy tftp lp %s %s
fpga-xgmac all\n' % (tftp_server, f)

out  = open('upgrade.cfg','w')

# write out commands in order
for i in range(10):
        if commands.has_key(i): out.write( '%s' % (commands[i]) )

if not len(commands)==0:
    out.write('! reboot\nboot system flash primary')





This e-mail and any attachments may contain confidential information
that is intended solely for the use of the intended recipient and may be
subject to copyright. If you receive this e-mail in error, please notify
the sender immediately and delete the e-mail and its attachments from
your system. You must not disclose, copy or use any part of this e-mail
if you are not the intended recipient. Any opinion expressed in this
e-mail and any attachments is not an opinion of RailCorp unless stated
or apparent from its content. RailCorp is not responsible for any
unauthorised alterations to this e-mail or any attachments. RailCorp
will not incur any liability resulting directly or indirectly as a
result of the recipient accessing any of the attached files that may
contain a virus.
_______________________________________________
foundry-nsp mailing list
foundry-nsp at puck.nether.net
http://puck.nether.net/mailman/listinfo/foundry-nsp




This e-mail and any attachments may contain confidential information that is intended solely for the use of the intended recipient and may be subject to copyright. If you receive this e-mail in error, please notify the sender immediately and delete the e-mail and its attachments from your system. You must not disclose, copy or use any part of this e-mail if you are not the intended recipient. Any opinion expressed in this e-mail and any attachments is not an opinion of RailCorp unless stated or apparent from its content. RailCorp is not responsible for any unauthorised alterations to this e-mail or any attachments. RailCorp will not incur any liability resulting directly or indirectly as a result of the recipient accessing any of the attached files that may contain a virus.
_______________________________________________
foundry-nsp mailing list
foundry-nsp at puck.nether.net
http://puck.nether.net/mailman/listinfo/foundry-nsp



More information about the foundry-nsp mailing list