Sunday, March 11, 2018

Southern California Linux Expo Scale 16x

I took a vacation day Friday and made it a three-day trip to SCALE 16x.  I'm glad I did because I got to attend six sessions on Friday, talk about drinking from the fire hose! Unfortunately, I was too tired to go the after party. I didn't even make it to the keynote speeches!

I ran into Noah and Chris from Jupiter Broadcasting Friday night before my last session. At Scale 14x they had a contest called "Noah switched me to Linux" where they teamed up with System76 to switch as many people as possible from Windows to Linux. I didn't buy my System76 Gazelle at Scale 14x but Noah did convince me to switch by that Summer.

Friday, March 9th, 2018


Linux Professional Institute
I didn't notice that the Linux Professional Institute was going to be offering certification exams at scale for half price until last week so I couldn't cram enough for the LPIC exams but I did attend their two cram sessions on Friday.

They were great, one was led by a Linux Academy instructor and it definitely convinced me to sign up for the Linux Academy. After attending both sessions I decided to take the Linux Essentials exam Sunday morning. Since it was a paper exam I won't get the results for thirty days. Unlikely that I passed given just a couple days to prepare but I glad I tried! They were the friendliest group of people I have ever met at an exam center.

Update - March 21, 2018 - it didn't take 30 days for them to let me know I passed! You can verify the certification from this link.

It's Embedded into the plan!
Somehow I got on the embedded Linux Engineer track this year!  It started out with a session on U-Boot - Implementing state of the art U-Boot port. U-boot is a development tool that creates the Device Tree that embedded devices use to boot. I didn't get everything he was talking about but luckily when I got to the hands on class Saturday it all became clear.

It's about time!
Next on the embedded track, I sat in on Frederico Lucifedi's session - Hardware Hacking 101 Time and Randomness. Frederico is a Red Hat employee in the storage group but he does a lot of hardware hacking. In this session he used a USB GPS and the NTP daemon to create a very accurate time server that doesn't rely on an Internet timeserver.

I have one of the GPS devices that he used (Globstat BU 353) and I'm anxious to duplicate the setup.  I purchased it for a cruise to Bonaire and used Foxtrot open source software to map the trip. There is a link to a youtube video on wardriving in the reference section.

Next, he showed us a SparkFun Geiger Counter project that creates true randomness. It doesn't create a lot of entropy so you will have to feed the output to a pseudo-random number generator but it was a great demo.

Badgelife
I had heard about "electronic badges" at Defcon but hadn't paid much attention. The guy behind the "Mr. Robot" Defcon badge opened up the Badgelife session. It is very impressive how much time and effort they put into these things.

This session was more of a social gathering and they provided booze and snacks and a good time. I met a few interesting people including an Oracle DBA. We had a good time exchanging war stories. I guess it is true, DBAs are people too.

Facebook Switching
I didn't get much time at the expo because of all the sessions but I did get to see one of the Facebook white box switches. It uses a Broadcom Tomahawk II to provide 16 ports of 100G Ethernet. I was told that the OS was CentOS 6. I asked how they managed the switching engine and the reply was that in the datacenter the don't do L2, only L3 and CentOS 6 handles it. They also told me that they have a Tomahawk 3 based switch with 32 100G ports in production. Here is a Network Break podcast on the Tomahawk 3

Saturday, March 10th, 2018

Luckily, my Beagleboard PocketBeagle came in on Thursday so I had the hardware for the Buldroot class. A friend of mine came to this session and it was great to have a partner. Neither one of us had ever done any embedded Linux devices and it was a cool experience.

On the first try, I ejected my SD card without dismounting it and corrupted the boot partition. I didn't have serial connectivity to the PocketBeagle so it was hard to figure out what was happening. Luckily the instructor loaned me his "Cape" which had a serial UART and then I could see the "Unable to read" message. A quick reflash, a dismount and my first embedded Linux device was up and running!

The Buildroot tool has a lot of packages that you can build in and I added Dropbear SSH and an HTTP server. Pretty cool for my first project! Now my mind is spinning with ideas of what to do next with my PocketBeagle.

One thing I noticed was that a lot of the other people in the class were on Macbooks running Ubuntu as a VM. It was taking them 30-45 minutes to build the image. On my system76 Gazelle run Ubuntu on hardware it was around 10 minutes.  And it was fun watching them whine about how long it was taking. The Macbooks are nice and I love mine but they are definitely not state of the art performance.

DNS Security
The session on DNSSEC,  DNS DANE and DNScrypt was great. I didn't realize that OpenDNS supports the DNScrypt protocol and that the DNScrypt project has been re-born as DNSCrypt-Proxy with a lot more capability. It's hard to believe that in 2018 most of us are still using DNS without encryption and authentication. But then again, it's hard to believe we are still using a username/password for authentication.

Git R done!
The Git like a Pro session was standing room only the entire session!  I learned a lot about git in a short time. I am anxious to take the Linux Academy course on Git. A friend of my put the bug in my ear last month about using Git for version control of network device configuration. I already have most customers set up with nightly backups to a share on the network. It would only take installing Git locally and some Python scripting to automate a commit and that would be pretty cool.

Sunday, March 11th, 2018

The Daylight savings time change came at the worst time for me!  Losing an hour of sleep the morning I was going to take a cert exam at 09:00 didn't help. I exam was well thought out and well run but I will be very surprised if I passed. I can't wait to find out.

Another Badgelife session
This one focused on the process of getting a badge designed, manufactured and delivered in time and at a cost low enough to sell. It was very interesting. The guy giving the talk is the owner of canbushack.com and had a lot of great knowledge of automotive Ethernet and the new protocols.

If you don't have a code reader or have never done any ODBC stuff you should check it out. You can find some really good code reader videos on Youtube.com and the cost for a decent reader is well under $100 now.

I had a check engine light on my Ducati a while back and didn't want to take it to the dealer. A quick search on the Ducati.ms site and I found an ODBC interface for around $35.00 and an open source program to read the ECU!

I bought some new remotes for my Tundra recently and the dealer wanted a ton of money to program them. I bought a USB to ODBCII cable on ebay for $15 and found the software I needed on Amazon. A few minutes later and Bob was my uncle.

Crypto: It's just math
This session was exactly what the description said it would be. I was hoping it would be more practical application of PKI but it was still very good. At least I now understand why you do Elliptic curve crypto in a finite field. There are links to the presentation and other crypto documentation in the references.


References:
Scale 16x Schedule
WIGLE Like You Mean It Maximizing Your Wardriving
Crypto: Math slides
A primer on elliptic curve cryptography
Linux Professional Institute
Hacking the CAN Bus: Basic Manipulation of a Modern Automobile Through CAN Bus
Seeed Can Bus Shield for Arduino
HACK YOUR VEHICLE CAN-BUS WITH ARDUINO AND SEEED CAN-BUS SHIELD



Saturday, February 17, 2018

Don't charge your Airconsole (or mobile phone) on your switch's USB port!

I use an Airconsole to connect to switch console ports most of the time so that I can go sit at my portable table instead of standing on a ladder. It's a lot safer and more comfortable, especially when the switch is in a cabinet 10 or 12 feet up.

The Airconsole is charged using a USB micro port so I carry a short USB-A to USB-micro cable and plug it into the switch's USB port if it has one. I have been doing this a long time and never had an issue.

Last night I was working on a Cisco 4500-x switch and connected my Airconsole to the USB port. I was connected for a couple hours working on the initial configuration and testing without any issues. Then I did a "write mem" and removed the power cords so that they could be routed and dressed into the rack.

When the switch was powered back up it wouldn't boot and rapidly displayed this error message on the Airconsole over and over without ever continuing to boot:

Feb 16 18:50:47 %IOSXE-3-PLATFORM: process kernel: [ 77.606565] hub 1-0:1.0: over-current change on port 1
Feb 16 18:50:47 %IOSXE-3-PLATFORM: process kernel: [ 77.710565] hub 1-0:1.0: over-current change on port 1
Feb 16 18:50:47 %IOSXE-3-PLATFORM: process kernel: [ 77.814564] hub 1-0:1.0: over-current change on port 1
Feb 16 18:50:47 %IOSXE-3-PLATFORM: process kernel: [ 77.918564] hub 1-0:1.0: over-current change on port 1
Feb 16 18:50:47 %IOSXE-3-PLATFORM: process kernel: [ 78.022564] hub 1-0:1.0: over-current change on port 1
Feb 16 18:50:47 %IOSXE-3-PLATFORM: process kernel: [ 78.126564] hub 1-0:1.0: over-current change on port 1

I had added a third party DAC cable to switchport 1 right before I powered down and thought it was referring to switchport 1 so removed the DAC cable but it didn't make any difference. Then I noticed that the Airconsole charge LED was flashing at the same rate as the error messages. I removed the USB cable from the switch and it booted normally!

Recently I purchased a Micro USB 4 Active POE "Splitter Power Over Ethernet 48V to 5V 2.4A Raspberry Pi" on ebay (Amazon sells the same device for about the same cost).

I use it on switches with PoE instead of the USB cable but the 4500-x is fiber only. But, I carry some longer patch cables with me so I could have charged off a 2960-x PoE+ port and still been able to reach the 4500-x.

This splitter has a micro USB connector on it and an RJ45 male so you can put it inline if there aren't any open ports available.

I also bought one with a barrel connector to power my Odroid XU4 Kali box. Make sure you purchase the one with the micro-USB connector.

Sunday, January 28, 2018

Cisco Switches -- What ports should you use for Port Channels based on port ASIC Assignments

Cisco uses chips called Application Specific Integrated Chips (ASIC) in its switch ports. An ASIC is the "Secret Sauce" that allows the switch to operate at line speed.

The number of switch ports controlled by one ASIC varies depending on the platform. The 6880-x uses one ASIC for every 8 ten Gigabit ports. 

A 1 Gigabit switch like a 2960x-48 uses two ASICs for all 50 ports. Ports g1/0/1-24 and port t1/0/1 are on ASIC 0 and Ports g1/0/25-48 and t1/0/2 are on ASIC 1.

On the 6880-x switch you can use the following command to see what ASICs a port uses:

sh int t1/5/1 capabilities | i ASIC
  Ports-in-ASIC (Sub-port ASIC) : 1-2,5-6 (1-8)
sh int t1/5/3 capabilities | i ASIC

  Ports-in-ASIC (Sub-port ASIC) : 3-4,7-8 (1-8)
sh int t1/5/11 capabilities | i ASIC
  Ports-in-ASIC (Sub-port ASIC) : 11-12,15-16 (9-16) 

In this example, port 1/5/1 is part of the ASIC in group 1. See Cisco ASIC Redundancy for a complete explanation of how the ASICs are grouped in a 6880-x switch.

The above output represents the channel mapping and the port to ASIC mapping of the interfaces. For example, Te1/5/1 shares the fabric with ports 2,5,6 (1-2,5-6) and the port-asic with ports 2-8 (1-8).

You can use "sh hw-module slot 5 port-group-mapping" to view the ASIC mappings.

sh hw-module slot 5 port-group-mapping

port-group ports
1 1, 2, 3, 4, 5, 6, 7, 8,
2 9, 10, 11, 12, 13, 14, 15, 16,



Why does this matter?

In a switch, it is possible for one ASIC to fail while the other ASICs continues to work. If you have created an Etherchannel for redundancy but used ports on the same ASIC you will have an outage if the ASIC fails. 

A better design is to use Ethercannel ports on different ASICs. It can be a pain to keep track of the ports for each Etherchannel when doing this. To reduce the pain I have a spreadsheet on Github that will create the port configuration and the interface configuration. All you have to do is enter the ports. You can download the spreadsheet from my github at Documents

If you are using a different platform you will have to lookup the ASIC groupings for that specific platform. For example, a Nexus 7K uses 4 port ASIC groupings.

On the 3750/2960 series switches, you use the "show platform pm if-numbers" command to display platform-dependent port-manager information.

In this example from a 2960x-48, the first number in the ports column is the ASIC that it falls on. There are only two ASICs across all 52 ports.

sh platform pm if-numbers 

interface gid  gpn  lpn  port slot unit slun port-type lpn-idb gpn-idb
----------------------------------------------------------------------
Gi1/0/1   1    1    1    0/2  1    1    1    local     Yes     Yes
Gi1/0/2   2    2    2    0/1  1    2    2    local     Yes     Yes
Gi1/0/3   3    3    3    0/4  1    3    3    local     Yes     Yes
Gi1/0/4   4    4    4    0/3  1    4    4    local     Yes     Yes
Gi1/0/5   5    5    5    0/6  1    5    5    local     Yes     Yes
Gi1/0/6   6    6    6    0/5  1    6    6    local     Yes     Yes
Gi1/0/7   7    7    7    0/8  1    7    7    local     Yes     Yes
Gi1/0/8   8    8    8    0/7  1    8    8    local     Yes     Yes
Gi1/0/9   9    9    9    0/10 1    9    9    local     Yes     Yes
Gi1/0/10  10   10   10   0/9  1    10   10   local     Yes     Yes
Gi1/0/11  11   11   11   0/12 1    11   11   local     Yes     Yes
Gi1/0/12  12   12   12   0/11 1    12   12   local     Yes     Yes
Gi1/0/13  13   13   13   0/16 1    13   13   local     Yes     Yes
Gi1/0/14  14   14   14   0/15 1    14   14   local     Yes     Yes
Gi1/0/15  15   15   15   0/18 1    15   15   local     Yes     Yes
Gi1/0/16  16   16   16   0/17 1    16   16   local     Yes     Yes
Gi1/0/17  17   17   17   0/20 1    17   17   local     Yes     Yes
Gi1/0/18  18   18   18   0/19 1    18   18   local     Yes     Yes
Gi1/0/19  19   19   19   0/22 1    19   19   local     Yes     Yes
Gi1/0/20  20   20   20   0/21 1    20   20   local     Yes     Yes
Gi1/0/21  21   21   21   0/24 1    21   21   local     Yes     Yes
Gi1/0/22  22   22   22   0/23 1    22   22   local     Yes     Yes
Gi1/0/23  23   23   23   0/26 1    23   23   local     Yes     Yes
Gi1/0/24  24   24   24   0/25 1    24   24   local     Yes     Yes
Gi1/0/25  25   25   25   1/2  1    25   25   local     Yes     Yes
Gi1/0/26  26   26   26   1/1  1    26   26   local     Yes     Yes
Gi1/0/27  27   27   27   1/4  1    27   27   local     Yes     Yes
Gi1/0/28  28   28   28   1/3  1    28   28   local     Yes     Yes
Gi1/0/29  29   29   29   1/6  1    29   29   local     Yes     Yes
Gi1/0/30  30   30   30   1/5  1    30   30   local     Yes     Yes
Gi1/0/31  31   31   31   1/8  1    31   31   local     Yes     Yes
Gi1/0/32  32   32   32   1/7  1    32   32   local     Yes     Yes
Gi1/0/33  33   33   33   1/10 1    33   33   local     Yes     Yes
Gi1/0/34  34   34   34   1/9  1    34   34   local     Yes     Yes
Gi1/0/35  35   35   35   1/12 1    35   35   local     Yes     Yes
Gi1/0/36  36   36   36   1/11 1    36   36   local     Yes     Yes
Gi1/0/37  37   37   37   1/16 1    37   37   local     Yes     Yes
Gi1/0/38  38   38   38   1/15 1    38   38   local     Yes     Yes
Gi1/0/39  39   39   39   1/18 1    39   39   local     Yes     Yes
Gi1/0/40  40   40   40   1/17 1    40   40   local     Yes     Yes
Gi1/0/41  41   41   41   1/20 1    41   41   local     Yes     Yes
Gi1/0/42  42   42   42   1/19 1    42   42   local     Yes     Yes
Gi1/0/43  43   43   43   1/22 1    43   43   local     Yes     Yes
Gi1/0/44  44   44   44   1/21 1    44   44   local     Yes     Yes
Gi1/0/45  45   45   45   1/24 1    45   45   local     Yes     Yes
Gi1/0/46  46   46   46   1/23 1    46   46   local     Yes     Yes
Gi1/0/47  47   47   47   1/26 1    47   47   local     Yes     Yes
Gi1/0/48  48   48   48   1/25 1    48   48   local     Yes     Yes
Gi1/0/49  49   49   49   0/13 1    49   49   local     Yes     Yes
Gi1/0/50  50   50   50   1/13 1    50   50   local     Yes     Yes
Te1/0/1   51   51   51   0/0  1    1    51   local     Yes     Yes
Te1/0/2   52   52   52   1/0  1    2    52   local     Yes     Yes






References

Cisco ASIC-Redundancy
Question On 3750 Asics
Catalyst 3750 Switch Show Platform Commands
Viewing ASIC Mappings - 6509E & 3750E
ASIC to port mapping

Saturday, December 23, 2017

Upgrade Cisco 2960 firmware using SCP instead of TFTP

I recently needed to upgrade a couple dozen Cisco 2960-x switches located at several different sites. Obviously, I didn't want to drive to each site and insert flash drives to do the upgrade but I also didn't want to use TFTP and risk a failed transfer causing a reboot issue.

The solution was to use Secure Copy or SCP. Unlike TFTP, SCP is TCP based so you get the advantages of a TCP - Reliability, Flow Control, error checking and error recovery. SCP adds encryption. While encryption isn't so important for a firmware transfer it is important when transferring configurations so that the passwords aren't sent in plain text.

The drawback to SCP is that you need to set up an SCP server and create a username/password combination. For Windows, the Solarwinds SFTP/SCP server is free and works well. It supports secure FTP and secure copy protocols. You can download the server here. While free, it does require that you enter a valid email address. Once you have it installed, click on configure and create a new user/password.

On Ubuntu, you can use the OpenSSH server from the Ubuntu repository. For a How To on configuring the server click here.

Once you have the SCP server installed, download the tar file from Cisco and save it to the SCP servers root directory. For the Solarwinds server, the default is c:\sftp-root. For Ubuntu, you will specify the path after the IP address.

I recommend you check the hash of the firmware file after you download it from Cisco. To do that, simply click on the file name on the Cisco download page. You will see the MD5 hash on the popup, right click, copy and paste it into an editor.

On windows
From a cmd window run "certutil -hashfile <filename> -MD5.

Linux
From a terminal windows run md5sum <filename>.

Compare the result to the hash saved in the text file. If the hashes match, proceed to the next step.

On the switch

You will need to set up SCP first. See my blog Using Secure Copy (SCP) to Transfer Files for a tutorial on setting up SCP. 

Once that is complete, log in and go to enable mode.

Enter the following (substitute the appropriate IP address, filename, and credentials). The switch puts the password: prompt on the screen but the password will be passed automatically. Since I used the /reload switch no further intervention is required - the firmware will be upgraded and the switch will reload. You can kick off several switches in parallel as the load on the SCP server isn't too heavy. Using an Ubuntu desktop VM with the defaults set in ESXi I have upgraded 10 switches at once with no problems.

archive download-sw /overwrite /reload scp://mhubbard:hU9*b2Sis@192.168.10.221/c2960x-universalk9-tar.152-2.E7.tar
Password:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Password:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
examining image...
extracting info (109 bytes)
extracting c2960x-universalk9-mz.152-2.E7/info (786 bytes)
extracting info (109 bytes)

Stacking Version Number: 1.56

System Type:             0x00000000
  Ios Image File Size:   0x0144DA00
  Total Image File Size: 0x019ACA00
  Minimum Dram required: 0x08000000
  Image Suffix:          universalk9-152-2.E7
  Image Directory:       c2960x-universalk9-mz.152-2.E7
  Image Name:            c2960x-universalk9-mz.152-2.E7.bin
  Image Feature:         IP|LAYER_2|SSH|3DES|MIN_DRAM_MEG=128
  FRU Module Version:    No FRU Version Specified

References

Using Secure Copy (SCP) to Transfer Files
2960-X Switch System Management Command Reference, Cisco IOS Release 15.0(2)EX
Configuring Secure Shell (SSH)
Security Configuration Guide
10 SCP Commands to Transfer Files/Folders in Linux
Example syntax for Secure Copy (scp)