It’s time to vent some frustration everybody!!
If you have worked on Cisco devices for any length of time, or even if you have just started work with Cisco routers, you know that the Cisco command line interface can be a frustrating thing. The consistency of the syntax of a given command can vary significantly from platform to platform, device to device and even between different versions of IOS. Don’t get me wrong it is getting better but it can still be a point of frustration
Some History on the Cisco Command Syntax.
In the old days we used to have Catalyst switches and IOS routers. This was mainly due to aquisition of the Catalyst platform. Most of the issues with variances in the command syntax is due to aquisition. Many new network equipment vendors will actually create their appliances with a Cisco like command structure. Not only to leverage the technical support base but to also make any potential future aquisition appealing to Cisco.
But with as many aquisitions as Cisco has had, remembering command line systax becomes almost useles.
Then we had PIX firewalls that used something known as conduits to enable traffic to securely flow through the firewall. This was later changed to ACL’s, which are completely opposite of conduits. Talk about confusing.
Can I get an AMEN for the question mark?
If you pull out any Cisco IOS command reference the main disclosure statement included at the top of everyone is:
“The supported commands can vary depending on the version of software in use.”
This is their way to saying the command SHOULD work like this but when in doubt, punt!
“To display a comprehensive list of commands, enter a question mark (?) at the prompt.”
And now to make things even more interesting we now have the Cisco Nexus platform.
Nexxus is the next generation of switching platforms for Cisco and the syntax is even more precarious.
- IGP protocols are defined at the interface level.
- IP addresses are stored in CIDR notation.
- Displaying HSRP information is completely different.
- Good luck trying to do a “show standby” That command is completely gone!
This is just the tip of the iceburg.
If you have ever setup a network monitoring system, pull backups, query an SNMP MIB, or run a regular expression
against your inventory of Cisco gear if can be MADDENING!!!
Take routing protocols for example. I want to see my neighbors for bgp and for ospf.
For BGP
show ip bgp neighbors
For OSPF
show ip ospf neighbor
<– neighbor? NOT neighbors?!?!
I honestly feel for new network admins and engineers who are studying for a Cisco Certification Exam and trying to memorize these differences in Cisco commands. They are all extremely similar but different enough to be wrong (especially on a test).
So how on earth does Cisco expect us to keep up with all of this.
Granted most people never even realize some fo these nuances. they hit tab to complete the command or simply use the question mark (?) to see the syntax. And then we all just type in the first couple of letters and hit tab again.
What inconsistencies piss you off with the Cisco command line? Feel free to join in the frustration. Leave your comment below?
6 Responses
I want to to thank you for this very good read!! I definitely enjoyed every little bit of it.
I have you bookmarked to look at new stuff you post…
Not to mention the differences in the MQC 'modular' qos cli.
Commands like priority are done in kpbs where the shape command is done in bps. Very nice cisco keeping things the same within the same part of the config
The Nexus platform burns me up everytime I touch one. It's like they took only part of the Cisco IOS and implemented the SAN OS along with it. Thus, changing MTU sizes is no longer simple. It's tied to QOS statements instead of being a simple ip mtu or mtu change on the interface. They don't have an interface range command for some reason. Without it, it's like being back in the 90's on the command line. VTP – what VTP? It works on some Nexus lines, but not the IBM BladeCenter 4001i's. Layer 3 commands are tied to the features you enable. If there were a benefit of disabling a feature (like faster CPU processing or stability) it'd be worth placing these features into a separate set. I've not seen any better performance (it still sucks) with these features disabled. The Nexus 7000 series is more like having a big Nexus 5000 with less features…
Cisco IOS 15. Are you serious? Now you want to ensure I have a license to use the software that came with my router, switch, firewall, etc so that you don't lose a few bucks on someone trying to learn the IOS? Aren't you one of the richest companies around, the most popular Network equipment provider on the planet? You just progressed into a money making machine that I don't want to deal with anymore. Sorry, Cisco, you missed the boat on the Nexus platform and with your greed. I'm actually never buying another one again. I'm moving over to Foundry switches. They're simple. They use Cisco syntax better than a Cisco does, and they're fairly cheap compared to the underpowered Nexus platform. Oh yeah, I can get the Foundry certification at the same level if I've passed your CCNA or CCNP exams. You made it too easy to leave. Goodbye.
Wayne
Hi,
You do get a range option in Nexus, same syntax without the range comand:
NEX01(config)# int eth112/1/40 – 45
NEX01(config-if-range)#
You're right about the CLI of the Nexus, badly thought out and I too share your pain with the QoS policy for jumbo frames.
I agree with your sentiment, especially about IOS 15. One of the reasons cisco has been so successful is the vast majority of Network engineers learned networking on cisco products. If you take away the easy entry and the ability to self teach by placing your IOSs out of reach to the beginner, you start to seriously erode that base.
Consequentially though, Foundry has become Brocade now. And as someone who has made (and is in the process of making) the transition, It has been a mostly smooth one. Although I do still find myself typing "no shu" much to often when I mean to type "enable"…
It gets better – sometimes you might get a router and the IOS version installed doesn't even support the feature or command you're looking for.
You need to be syntactically for the tests but in the real world that question mark is a life saver!