Automation

last person joined: 4 days ago 

Ask questions and share experiences about Apstra, Paragon, and all things network automation.
  • 1.  How to get serial numbers of EX VC chassis members?

    Posted 05-26-2014 08:58

    Hi,

     

    I'm trying to collect the serial numbers of EX VC member switches using interactive Python:

     

    >>> from jnpr.junos import Device

    >>> dev=Device('10.181.15.4',user='user',password=’passwd’)

    >>> dev.open()

    Device(10.10.10.10)

    >>>

    >>> invfpc = dev.rpc.get_chassis_inventory()

    >>> print(invfpc)

    <Element chassis-inventory at 0x8d9525c>

    >>>

    >>> print invfpc.findtext('chassis/serial-number')

    FP0212449XXX

    >>> print invfpc.findtext('chassis-module/serial-number')

    None

    >>> print invfpc.findtext('chassis/chassis-module/serial-number')

    FP0212449XXX

    >>> 

    >>> print invfpc.find('chassis/chassis-module/serial-number').text

    FP0212449XXX

    >>> print invfpc.findall('chassis/chassis-module/serial-number')

    [<Element serial-number at 0x8d8475c>, <Element serial-number at 0x8d91bbc>, <Element serial-number at 0x8d91dec>, <Element serial-number at 0x8d952fc>]

    >>>

     

    As far as I understood, invfpc = dev.rpc.get_chassis_inventory() returns lxml. How can I get the actual serial numbers from [<Element serial-number at 0x8d8475c>?

     

    Thanks,

    Stefan



  • 2.  RE: How to get serial numbers of EX VC chassis members?

     
    Posted 05-26-2014 09:50

    You may try invfpc.findall('chassis/chassis-module/serial-number')[0] as below.

     

    >>> invfpc.findall('chassis/chassis-module/serial-number')[0]
    <Element serial-number at 0x101545878>
    >>> invfpc.findall('chassis/chassis-module/serial-number')[0].text
    'BP0208137931'
    >>> x = invfpc.findall('chassis/chassis-module/serial-number')[0].text
    >>> print x
    BP0208137931
    >>> 

     

    Thanks,

    /Charlie

     



  • 3.  RE: How to get serial numbers of EX VC chassis members?

    Posted 05-27-2014 05:00

    Hi Charlie,

     

    indeed, this did the trick for me. 🙂

     

    With

    >>> test=invfpc.findall('chassis/chassis-module/serial-number')

    >>> len(test)

    4

    >>> print test[0].text

    FP0212449750

    >>> print test[1].text

    FP0212449791

    >>> print test[2].text

    FP0212449750

    >>> print test[3].text

    FP0212449791

    I'm able to get the required information. Unfortunately the serial numbers for master and backup RE appear twice - which is clear when looking at the following output:

     

    root@switch> show chassis hardware models | display xml
    <rpc-reply xmlns:junos="http://xml.juniper.net/junos/12.3R3/junos">
        <chassis-inventory xmlns="http://xml.juniper.net/junos/12.3R3/junos-chassis">
            <chassis junos:style="model-inventory">
                <chassis-module>
                    <name>Routing Engine 0</name>
                    <version>REV 21</version>
                    <part-number>750-034195</part-number>
                    <serial-number>FP0212449750</serial-number> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                    <description>EX4200-48PX,48 POE+</description>
                    <clei-code>COMLJ10BRC</clei-code>
                    <model-number>EX4200-48PX</model-number>
                </chassis-module>
                <chassis-module>
                    <name>Routing Engine 1</name>
                    <version>REV 21</version>
                    <part-number>750-034195</part-number>
                    <serial-number>FP0212449791</serial-number> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                    <description>EX4200-48PX,48 POE+</description>
                    <clei-code>COMLJ10BRC</clei-code>
                    <model-number>EX4200-48PX</model-number>
                </chassis-module>
                <chassis-module>
                    <name>FPC 0</name>
                    <version>REV 21</version>
                    <part-number>750-034195</part-number>
                    <serial-number>FP0212449750</serial-number><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                    <description>EX4200-48PX,48 POE+</description>
                    <clei-code>COMLJ10BRC</clei-code>
                    <model-number>EX4200-48PX</model-number>
                    <chassis-sub-module>
                        <name>PIC 0</name>
                        <part-number>BUILTIN</part-number>
                        <serial-number>BUILTIN</serial-number>
                        <description>48x 10/100/1000 Base-T</description>
                        <clei-code>COMLJ10BRC</clei-code>
                        <model-number>EX4200-48PX</model-number>
                    </chassis-sub-module>
                    <chassis-sub-module>
                        <name>PIC 1</name>
                        <version>REV 07</version>
                        <part-number>711-026017</part-number>
                        <serial-number>CH0212438690</serial-number>
                        <description>2x 10GE SFP+</description>
                        <clei-code>COUIAWXBAA</clei-code>
                        <model-number>EX-UM-2X4SFP</model-number>
                    </chassis-sub-module>
                    <chassis-sub-module>
                        <name>Power Supply 0</name>
                        <version>REV 01</version>
                        <part-number>740-046492</part-number>
                        <serial-number>GH2912479376</serial-number>
                        <description>PS 930W AC</description>
                        <clei-code>CMUPABNBAA</clei-code>
                        <model-number>EX-PWR3-930-AC</model-number>
                    </chassis-sub-module>
                    <chassis-sub-module>
                        <name>Power Supply 1</name>
                        <version>REV 01</version>
                        <part-number>740-046492</part-number>
                        <serial-number>GH2912391363</serial-number>
                        <description>PS 930W AC</description>
                        <clei-code>CMUPABNBAA</clei-code>
                        <model-number>EX-PWR3-930-AC</model-number>
                    </chassis-sub-module>
                </chassis-module>
                <chassis-module>
                    <name>FPC 1</name>
                    <version>REV 21</version>
                    <part-number>750-034195</part-number>
                    <serial-number>FP0212449791</serial-number><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                    <description>EX4200-48PX,48 POE+</description>
                    <clei-code>COMLJ10BRC</clei-code>
                    <model-number>EX4200-48PX</model-number>
                    <chassis-sub-module>
                        <name>PIC 0</name>
                        <part-number>BUILTIN</part-number>
                        <serial-number>BUILTIN</serial-number>
                        <description>48x 10/100/1000 Base-T</description>
                        <clei-code>COMLJ10BRC</clei-code>
                        <model-number>EX4200-48PX</model-number>
                    </chassis-sub-module>
                    <chassis-sub-module>
                        <name>PIC 1</name>
                        <version>REV 07</version>
                        <part-number>711-021270</part-number>
                        <serial-number>AR0213191364</serial-number>
                        <description>4x GE SFP</description>
                        <clei-code>COUIAREBTA</clei-code>
                        <model-number>EX-UM-4SFP</model-number>
                    </chassis-sub-module>
                    <chassis-sub-module>
                        <name>Power Supply 0</name>
                        <version>REV 01</version>
                        <part-number>740-046492</part-number>
                        <serial-number>GH2912391364</serial-number>
                        <description>PS 930W AC</description>
                        <clei-code>CMUPABNBAA</clei-code>
                        <model-number>EX-PWR3-930-AC</model-number>
                    </chassis-sub-module>
                    <chassis-sub-module>
                        <name>Power Supply 1</name>
                        <version>REV 01</version>
                        <part-number>740-046492</part-number>
                        <serial-number>GH2912456933</serial-number>
                        <description>PS 930W AC</description>
                        <clei-code>CMUPABNBAA</clei-code>
                        <model-number>EX-PWR3-930-AC</model-number>
                    </chassis-sub-module>
                </chassis-module>
            </chassis>
        </chassis-inventory>
        <cli>
            <banner>{master:0}</banner>
        </cli>
    </rpc-reply>

     

    Is there a more elegant way than doing post-processing on

    >>> test=invfpc.findall('chassis/chassis-module/serial-number')

    ?

     

    Thanks in advance,

    Stefan



  • 4.  RE: How to get serial numbers of EX VC chassis members?

     
    Posted 05-27-2014 05:40

    Try this.

    >>> x= invfpc.xpath('.//chassis-module[starts-with(name,"Routing Engine")]/serial-number')
    >>> x[0].text
    'BP0208137931'
    >>> 

     Thanks,

    /Charlie



  • 5.  RE: How to get serial numbers of EX VC chassis members?
    Best Answer

     
    Posted 05-27-2014 05:42

    It might be this ...

     

    >>> x= invfpc.xpath('.//chassis-module[starts-with(name,"FPC")]/serial-number')
    

     Thanks,

    /Charlie



  • 6.  RE: How to get serial numbers of EX VC chassis members?

    Posted 05-27-2014 05:56

    That's exactly what I was looking for... awesome. Thanks a lot.



  • 7.  RE: How to get serial numbers of EX VC chassis members?

    Posted 05-27-2014 08:33

    If you'd like to use the Junos PyEZ "Tables/Views" mechanism and avoid coding XML/XPath, please take a look at this example:

     

    https://github.com/Juniper/py-junos-eznc/blob/master/lib/jnpr/junos/op/xcvr.yml

     

    And a short video abou tthis here:

    http://vimeo.com/album/2664261/video/82843211

     

    Hope this helps!