Wednesday, May 30, 2012

Unix Programming Environment

Tuesday, May 29, 2012

Interview OSPF Q&A

1: Which command in OSPF shows the network LSA information?
** The command show ip ospf [process-id area-id] database network displays the network link-state information.

2: What command would you use to create a totally stubby area?
** The command area area-id stub no-summary will create a totally stubby area. This is a subcommand to the router ospf process-id command. It is necessary only on the ABR, but all the other routers in the area must be configured as stub routers.

3: What is a virtual link, and what command would you use to create it?
** A virtual link is a link that creates a tunnel through an area to the backbone (Area 0). This allows an area that cannot connect directly to the backbone to do so virtually. The command to create the link is area area-id virtual-link router-id. Note that the area-id that is supplied is that of the transit area, and the router-id is that of the router at the other end of the link. The command needs to be configured at both ends of the tunnel.

4: Where would you issue the command to summarize IP subnets? State the command that is used.
** Summarization is done at area boundaries. The command to start summarization is the area range command, with the syntax area area-id range address mask. To summarize external routes, use the summary-address command on the ASBRs.

5: How would you summarize external routes before injecting them into the OSPF domain?
** The command summary-address address mask is the command that you would use.

6: When is a virtual link used?
** A virtual link is used when an area is not directly attached to the backbone area (Area 0). This may be due to poor design and a lack of understanding about the operation of OSPF, or it may be due to a link failure. The most common cause of an area separating from the backbone is link failure, which can also cause the backbone to be segmented. The virtual link is used in these instances to join the two backbone areas together. Segmented backbone areas might also be the result of two companies merging.

7: Give the command for defining the cost of a default route propagated into an area.
** The command to define the cost of a default route propagated into another area is area area-id default-cost cost.

8: Give an example of when it would be appropriate to define a default cost.
** It is appropriate to define a default cost for the default route when a stub area has more than one ABR. This command allows the ABR or exit point for the area to be determined by the network administrator. If this link or the ABR fails, the other ABR will become the exit point for the area.

9: On which router is the area default-cost defined?
** The default cost for the default route is defined on the ABR. The ABR will then automatically generate and advertise the route cost along with the default route.

10: Give the command to configure a stub area and state on which router it is configured.
** The command syntax to configure a stub area is area area-id stub. This command is configured on the ABR connecting to the area and on all the routers within the area. Once the configuration is completed, the Hellos are generated with the E bit set to 0. All routers in the area will only form adjacencies with other routers that have the E bit set.

11: What is the purpose of the area range command, and why is it configured on the ABR?
** The area range command is configured on an ABR because it dictates the networks that will be advertised out of the area. It is used to consolidate and summarize the routes at an area boundary.

12: Give the commands to configure a router to place subnets through to in Area 1 and to put all other interfaces into Area 0.
** The commands are as follows:
network area 1
network area 0

13: Give the syntax to summarize the subnets to into another autonomous system.
** The syntax is as follows:

14: Explain briefly the difference between the area range command and the summary-address command.
** The area range command is used to summarize networks between areas and is configured on the ABR. The summary-address command is used to summarize networks between autonomous systems and is configured on the ASBR.

15: Explain the following syntax and what it will achieve: area 1 stub no-summary.
** The command area 1 stub no-summary creates a totally stubby area. The number after the word area indicates the area that is being defined as a totally stubby area. This is necessary because the router might be an ABR with connections to many areas. Once this command is issued, it prevents summarized and external routes from being propagated by the ABR into the area. To reach the networks and hosts outside the area, routers must use the default route advertised by the ABR into the area.

16: Why would you configure the routing process to log adjacency changes as opposed to turning on debug for the same trigger?
** The reason to configure the router process to log adjacency changes to syslog as opposed to running debug is an issue of resources. It takes fewer router and administrator resources to report on a change of state as it happens than to have the debugger running constantly. The debug process has the highest priority and thus everything waits for it.

17: Give some of the common reasons that neighbors fail to form an adjacency.

** Many OSPF problems stem from adjacency problems that propagate throughout the network. Many problems are often traced back to neighbor discrepancies.
If a router configured for OSPF routing is not seeing an OSPF neighbor on an attached network, do the following:
- Make sure that both routers are configured with the same IP mask, MTU, Interface Hello timer, OSPF Hello interval, and OSPF dead interval.
- Make sure that both neighbors are part of the same area and area type.
- Use the debug and show commands to trace the problem.

18: When configuring a virtual link, which routers are configured?
** The configuration is between the ABRs, where one of the ABRs resides in Area 0 and the other in the area that is disconnected from the backbone. Both of the ABRs are also members of the transit area. Having created the virtual link, both ABRs are now members of Area 0, the disconnected area, and the transit area.

19: What does the command area 1 default-cost 15 achieve?
** The command area 1 default-cost 15 will assign a cost of 15 to the default route that is to be propagated into the stub area. This command is configured on the ABR attached to the stub area.

20: Explain what is placed in the parameters area-id and router-id for the command area area-id virtual-link router-id.
** The parameter area-id is the area ID of the transit area. So if the ABR in Area 0 is creating a virtual link with the ABR in Area 3 through Area 2, the area ID stated in the command is Area 2. The router ID is the router ID of the router with whom the link is to be formed and a neighbor relationship and adjacency established.

Bonus :
ospf consider all loopbacks as stub
forwarding address is used to reach the external route. When forwarding address is 0, advertising router address is used. it is created by lsa5
if cost is same for two paths, load balancing is done.
If the same lsa is received - breakpoint is seqnum --checksum-- max age

Monday, May 28, 2012

Tar Command Tutorial

On Unix platform, tar command is the primary archiving utility. Understanding various tar command options will help you master the archive file manipulation.

In this article, let us review various tar examples including how to create tar archives (with gzip and bzip compression), extract a single file or directory, view tar archive contents, validate the integrity of tar archives, finding out the difference between tar archive and file system, estimate the size of the tar archives before creating it etc.,

1. Creating an archive using tar command
Creating an uncompressed tar archive using option cvf
This is the basic command to create a tar archive.

$ tar cvf archive_name.tar dirname/
In the above command:
c – create a new archive
v – verbosely list files which are processed.
f – following is the archive file name
Creating a tar gzipped archive using option cvzf
The above tar cvf option, does not provide any compression. To use a gzip compression on the tar archive, use the z option as shown below.

$ tar cvzf archive_name.tar.gz dirname/
z – filter the archive through gzip
Note: .tgz is same as .tar.gz

Note: I like to keep the ‘cvf’ (or tvf, or xvf) option unchanged for all archive creation (or view, or extract) and add an additional option at the end, which is easier to remember. i.e cvf for archive creation, cvfz for compressed gzip archive creation, cvfj for compressed bzip2 archive creation etc., For this method to work properly, don’t give – in front of the options.

Creating a bzipped tar archive using option cvjf
Create a bzip2 tar archive as shown below:

$ tar cvfj archive_name.tar.bz2 dirname/
j – filter the archive through bzip2
gzip vs bzip2: bzip2 takes more time to compress and decompress than gzip. bzip2 archival size is less than gzip.

Note: .tbz and .tb2 is same as .tar.bz2

2. Extracting (untar) an archive using tar command
Extract a *.tar file using option xvf
Extract a tar file using option x as shown below:
$ tar xvf archive_name.tar
x – extract files from archive
Extract a gzipped tar archive ( *.tar.gz ) using option xvzf
Use the option z for uncompressing a gzip tar archive.

$ tar xvfz archive_name.tar.gz
Extracting a bzipped tar archive ( *.tar.bz2 ) using option xvjf
Use the option j for uncompressing a bzip2 tar archive.

$ tar xvfj archive_name.tar.bz2
Note: In all the above commands v is optional, which lists the file being processed.

3. Listing an archive using tar command
View the tar archive file content without extracting using option tvf
You can view the *.tar file content before extracting as shown below.

$ tar tvf archive_name.tar
View the *.tar.gz file content without extracting using option tvzf
You can view the *.tar.gz file content before extracting as shown below.

$ tar tvfz archive_name.tar.gz
View the *.tar.bz2 file content without extracting using option tvjf
You can view the *.tar.bz2 file content before extracting as shown below.

$ tar tvfj archive_name.tar.bz2

4. Listing out the tar file content with less command
When the number of files in an archive is more, you may pipe the output of tar to less. But, you can also use less command directly to view the tar archive output, as explained in one of our previous article Open & View 10 Different File Types with Linux Less Command — The Ultimate Power of Less.

5. Extract a single file from tar, tar.gz, tar.bz2 file
To extract a specific file from a tar archive, specify the file name at the end of the tar xvf command as shown below. The following command extracts only a specific file from a large tar file.

$ tar xvf archive_file.tar /path/to/file
Use the relevant option z or j according to the compression method gzip or bzip2 respectively as shown below.
$ tar xvfz archive_file.tar.gz /path/to/file
$ tar xvfj archive_file.tar.bz2 /path/to/file

6. Extract a single directory from tar, tar.gz, tar.bz2 file
To extract a single directory (along with it’s subdirectory and files) from a tar archive, specify the directory name at the end of the tar xvf command as shown below. The following extracts only a specific directory from a large tar file.

$ tar xvf archive_file.tar /path/to/dir/
To extract multiple directories from a tar archive, specify those individual directory names at the end of the tar xvf command as shown below.

$ tar xvf archive_file.tar /path/to/dir1/ /path/to/dir2/
Use the relevant option z or j according to the compression method gzip or bzip2 respectively as shown below.
$ tar xvfz archive_file.tar.gz /path/to/dir/
$ tar xvfj archive_file.tar.bz2 /path/to/dir/

7. Extract group of files from tar, tar.gz, tar.bz2 archives using regular expression
You can specify a regex, to extract files matching a specified pattern. For example, following tar command extracts all the files with pl extension.
$ tar xvf archive_file.tar --wildcards '*.pl'
Options explanation:
–wildcards *.pl – files with pl extension

8. Adding a file or directory to an existing archive using option -r
You can add additional files to an existing tar archive as shown below. For example, to append a file to *.tar file do the following:
$ tar rvf archive_name.tar newfile
This newfile will be added to the existing archive_name.tar. Adding a directory to the tar is also similar,
$ tar rvf archive_name.tar newdir/
Note: You cannot add file or directory to a compressed archive. If you try to do so, you will get “tar: Cannot update compressed archives” error as shown below.
$ tar rvfz archive_name.tgz newfile
tar: Cannot update compressed archives
Try `tar --help' or `tar --usage' for more information.

9. Verify files available in tar using option -W
As part of creating a tar file, you can verify the archive file that got created using the option W as shown below.
$ tar cvfW file_name.tar dir/
If you are planning to remove a directory/file from an archive file or from the file system, you might want to verify the archive file before doing it as shown below.
$ tar tvfW file_name.tar
Verify 1/file1
1/file1: Mod time differs
1/file1: Size differs
Verify 1/file2
Verify 1/file3
If an output line starts with Verify, and there is no differing line then the file/directory is Ok. If not, you should investigate the issue.
Note: for a compressed archive file ( *.tar.gz, *.tar.bz2 ) you cannot do the verification.
Finding the difference between an archive and the file system can be done even for a compressed archive. It also shows the same output as above excluding the lines with Verify.

Finding the difference between gzip archive file and file system

$ tar dfz file_name.tgz
Finding the difference between bzip2 archive file and file system

$ tar dfj file_name.tar.bz2

10. Estimate the tar archive size

The following command estimates the tar file size ( in KB ) before you create the tar file.

$ tar -cf - /directory/to/archive/ | wc -c
The following command, estimates the compressed tar file size ( in KB ) before you create the tar.gz, tar.bz2 files.

$ tar -czf - /directory/to/archive/ | wc -c

$ tar -cjf - /directory/to/archive/ | wc -c

Saturday, May 26, 2012

IOS Tips and Tricks

There are some helpful things we can do with Cisco’s IOS to make our lives easier. This paper will present
some useful commands, followed (in parentheses) by their most concise shortcuts (at the time of this writing).
But we begin, please note that nothing requires you to use the briefest shortcuts. For example, many people
shortcut the command configure terminal as conf term, config t, or config term. You can find the
shortcuts you like and use them. Remember that when shortcutting commands, you can only shortcut the keywords, not the variables (such as names or IP addresses). Finally, don’t forget that you can use the “Tab” key to complete keywords (but not variables, of course).
Also note that although this paper is illustrating these commands on a router, they also work on the IOS based
switches. With these basics in mind, let’s move on to some ways to streamline our work environment.

User versus Privileged Mode
As you may know, when interacting with IOS from the command line interface (CLI), there are two main 
EXEC modes, user and privileged (the latter is also referred to as enabled mode). In user mode, you can do
limited examination of the device (via show commands), and the prompt appears as the device’s hostname
(Router in this example) followed by the greater-than (>) symbol:
• Router>
In contrast with user mode, in privileged mode, you can see everything the device is capable of displaying
(via show commands), access the various configuration modes, and execute the copy and debug commands,
among others. To access privileged mode, use the command enable:
• Router>enable (“en”)
• Router#
As you can see, when in privileged mode, the hostname is followed by the pound sign (#). If necessary, you can move from privileged mode back to user mode with the disable command:
• Router#disable (“disa”)
• Router>

You can enter global configuration mode from privileged mode:
• Router#configure terminal (“conf t”)
• Router(config)#
Hostname Lookup
By default, if you mistype a command, the router will attempt to resolve it as a hostname via DNS. This will ultimately fail if there is no DNS server available, but it will take time (behind the scenes it makes twelve attempts). To speed things up, you can tell the device not to bother, like this:
• Router(config)#no ip domain-lookup (“no ip domain-lo”)
Speaking of name-to-address resolution, you can manually build a host table that allows you to use the IP utilities (ping, trace, telnet, etc) by hostname:
• Router(config)#ip host Big_Switch
• Router(config)#ip host SmallSwitch
• Router(config)#ip host TFTP-Server
Once you’ve created it, you can display the host table:
• Router#show host (“s ho”)

Console Messages & Terminal Commands
When various events occur, the device will display informational messages on the console. If you’re annoyed by these console messages, you can shut them off:
• Router(config)#no logging console (“no logg con”)
Unfortunately, if you disable console logging, you won’t receive any more of those very informative console
messages! Nor will you see any debug output, even if debugs are running. I suggest that a better way is to leave the console logging enabled (logg con), and synchronize the console output with your typing, like this:
• Router(config-line)#logging synchronous (“logg s”)
Now if a console message appears while you are typing, it will display the message, and then re-display your
input right where you left off so that you can keep typing. It’s the best of both worlds.
In a lab environment, it’s sometimes handy to disable the inactivity timeout for the console line (the default setting is ten minutes):
• Router(config)#line console 0 (“lin c 0”)
• Router(config-line)#exec-timeout 0 (“exec-t 0”)

It also works for the aux and vty lines. You can also use no exec-timeout, but be careful not to shortcut it to
no exec, which shuts off the EXEC process, preventing future logins via the line. I made this mistake once, so I
don’t recommend it.
Aside from saving a router or switch configuration to NVRAM, it’s always a good idea to have a backup copy of your current configuration in a separate location in case the device bursts into flame and needs to be replaced.
You can do this with copy run tftp (or similar), but this requires a file server.
Another way is to do a show run, and capture the output to a file. The problem is that as the config is displayed, it will give the “more” prompt every 24 lines (by default). You can disable the “more” function like this:
• Router#terminal length 0 (“ter l 0”)
Now you can do the show run (or whatever) and obtain a continuous output stream. When you’re done with
the capture, don’t forget to reset the terminal length to enable the “more” function:
• Router#terminal length 24 (“ter l 24”)
And speaking of termina commands, remember that to see console messages and debug output in a vty session (telnet or SSH) or the aux port, you have to specifically request it from within the session:
• Router#terminal monitor (“ter mon”)

While we’re on the subject of debugs, you can display a list of all of the debugs that are currently running:
• Router#show debugging (“s deb”)
And you can disable all of the running debugs with:
• Router#no debug all (“no deb all”)
To save a few keystrokes, you can also do it like this:
• Router#undebug all (“u all”)
Config Commands
To see the startup config (stored in NVRAM):
• New#show startup-config (“s start”)
• Old#show config (“s conf”)

Note that show config does not display the running config, it displays the startup config. To erase the startup
• New#erase startup-config (“erase start”)
• Old#write erase (“wr er”)
To display the running config (also referred to as the active or current config):
• New#show running-config (“s run”)
• Old#write terminal (“wr t”)
To save the running config to NVRAM:
• New#copy running-config startup-config (“copy run start”)
• Old#write memory (“wr”, you don’t need the “mem”)
Although Cisco no longer officially endorses the old commands (due to confusion over what “show config”
does), you might see “old-timers” using them, especially “wr”. Why type fourteen or so keystrokes (“copy run
start”) when two (“wr”) will do?
Speaking of configurations, to display only the lines of the running config that contain a specific alphanumeric
string (such as “rip”), “pipe” it into “include”:
• Router#show run | include rip (“s run | in rip”)
The pipe (redirect) symbol (which looks like a vertical bar) is often found as a shifted backslash, above the
Enter key. To display the section of the running config that begins with a specific alphanumeric string (for
example, “ospf”), pipe it into begin:
• Router#show run | begin ospf (“s run | beg ospf”)
Among other options, you can also do an exclude (show all lines that do not include the string). Use the question
mark to see the other options:
• Router#s run | ?
• Router#s start | ?
Note that the include, begin and exclude options are case-sensitive. To display the section of the running
config for a specific interface or subinterface, you could pipe it into begin, but you have to identify the interface
exactly as it appears in the config:
• Router#s run | beg FastEthernet0/0
The problem with this is that you can’t shortcut the interface type (for example, “fa”), and the search string is
case-sensitive. A slicker way to display the interface-specific config info is:
• Router#s run int fa0/0

When you use this option, it’s not case-sensitive, and you don’t have to bother with the pipe. Although you can
shortcut it, you do have to be precise when specifying the interface identifier. For example, if you want to display
the Serial 1/2.345 subinterface config, this will work:
• Router#s run int s1/2.345
But this will not:
• Router#s run int s1/2.3
As always, no shortcutting of variables! These options also work when viewing the startup config. And
speaking of show start, you can also display the startup config with line numbers, which can sometimes be
handy when reviewing or discussing it:
• Router#s start linenum (“s star li”)
As with show run, you can use the question mark with show start to see any other available options:
• Router#s run ?
• Router#s star ?

Some IOS features require PKI certificate data, which appears in the running config as a large block of nonsense
text. To bypass the PKI certificate data when displaying the running config, use the brief option:
• Router#s run brief
Remember, when the output of any show command displays –More– at the bottom, you have several options:
• To see the next line, hit the Enter key
• To see the next screen, hit the spacebar
• To return to the CLI prompt, hit any other alphanumeric key

Keyword “Do” Commands
With recent versions of IOS you can execute privileged mode commands from the various config modes by
prefacing the command with the keyword do. Here are some examples:
• Router(config)#do show running-config (displays the running config)
• Router(config-if)#do sh start (displays the startup config)
• Router(config-line)#do copy run start (saves the running config to NVRAM)
• Router(config-ext-nacl)#do wr (also saves the running config to NVRAM)
• Router(config-subif)#do ping
• Router(config-router)#do trace

Unfortunately, once you’ve gotten into the habit of typing do to the point where you can’t type a command
without it, you’ll find that if you try to use it from user or privileged mode, it doesn’t work:
• Router>do show interface (this doesn’t work)
• Router#do sh run (neither does this)
• Router#do wr (nor this)
Changing Interfaces
On a related topic, you can move from a subordinate config mode, such as config-if or config-router, to
global config mode (GCM) with the exit command:
• Router(config-if)#exit
• Router(config)#
In other words, exit took us one level up. You can also move from a subordinate mode to GCM by executing
any GCM command. Note how this moves us to GCM, executes the command, and leaves us in GCM:
• RouterA(config-router)#hostname RouterB
• RouterB(config)#
You can also jump from one subordinate config mode to another:
• Router(config-if)#router rip
• Router(config-router)#
Note that if you jump from one interface to another, the prompt doesn’t change, but you’re wherever you last
told the router to be:
• Router(config)#int fa0/0 (places us into interface config mode for fa0/0)
• Router(config-if)#shutdown (shuts down fa0/0)
• Router(config-if)#int s1/1 (moves us to serial 1/1)
• Router(config-if)#shut (shuts down serial 1/1)
Since the prompt does not indicate which interface you’re configuring, if at any time you’re not sure where you are, execute the commands necessary to put yourself back where you need to be. This applies to routing protocols,
as well, for which the prompts all appear as config-router:
• Router(config)#router rip (places us into router config mode for RIP)
• Router(config-router)#version 2 (selects RIP v2)
• Router(config-router)#router ospf 1 (moves to OSPF process 1)
• Router(config-router)#router-id (configures router ID for OSPF 1)

Tab Key Completion
Online help and tab-key completion for a command are only available at the native prompt for that command.
For example, this will display the available IP routing protocols:
• Router(config)#router ?
But this will not:
• Router(config-if)#router ?
Likewise, this will display the interface types:
• Router(config)#int ?
But you can’t display the interface types from within interface config mode:
• Router(config-if)#int ?
The tab key will work here, displaying interface as the complete keyword:
• Router(config)#int
But not here:
• Router(config-router)#int

Reloads & Restarts
To get a router to begin using the new IOS after an upgrade, you either have to power-cycle it or execute the
privileged mode reload (software restart) command:
• Router#reload
Let’s imagine that we’ve established a Telnet (or SSH) session to a router for some remote-control configuration.
What if we make a mistake that not only terminates our session, but also prevents us from reconnecting, such
as a misconfigured access list? The result could be a CLE (Career-Limiting Event).
To prevent this, we connect to the router, instruct it to perform a reload in five or ten minutes, then make the
changes to the config. Assuming that all goes well, we save the config, and cancel the reload. If, on the other
hand, all does not go well (and we cut ourselves off), the scheduled reload will occur. After the router reboots, it will come up with the old config, allowing us to reconnect and try again.
You can schedule reloads for the future by using the in option. For example, to reload five minutes from now:
• Router#reload in 5

You can also reload at a certain time and date with the at option. For example, to reload on August 31 at 1:00 am:
• Router#reload at 1:00 31 august
To display a reload scheduled via the in or at options:
• Router>show reload (“s rel”)
When there is one minute remaining before the scheduled shutdown, the system will display messages to all active
lines (console, aux, and vty). The system will also display a message just prior to the reload, but at that point
it’s too late to stop the reload from occurring.
To cancel a scheduled reload:
• Router#reload cancel (“rel can”)
You should see a message confirming that the shutdown was aborted. Make sure that you see this message,
because if you mistyped the “cancel” command, the reload clock is still running. Note that you can view a
scheduled reload from user mode, but you must be in privileged mode to schedule or cancel a reload.

Every programmer thinks that his or her way of doing things is the best way, but I often wish that they would
make a little more effort to be consistent. A case in point is the Traceroute command, which exploits the TTL
field in the IP header to determine the routers traversed on the way to a specified destination. Like UNIX, the
Cisco IOS implementation of Traceroute uses UDP with high port numbers, whereas Microsoft’s implementation uses ICMP Echo Requests (“Pings”). The result of this is that a trace from a Cisco machine may make it through firewalls and router access lists, while a trace from a Microsoft machine may not, or vice-versa.
Another difference is that Cisco’s command is traceroute (which can be shortcut as trace or even tr) and Microsoft’s command is tracert, which can’t be shortcut at all. What makes this really annoying is that Cisco’s traceroute (or trace or tr) and the like don’t work on a Microsoft machine, and Microsoft’s tracert doesn’t work on Cisco. This means that if you work in a mixed Cisco/Microsoft environment (as lots of us do), you have to think about which machine you’re on every time you do a trace.
Cisco has given us a way around this, though … the alias. What we can do is set up an alias on the Cisco, so
that typing the Microsoft tracert command on a Cisco machine will invoke the Cisco traceroute. First, create the alias:
• Router(config)#alias exec tracert traceroute
Now, whenever the router (or switch) sees the string tracert from an Exec prompt (that is, user or privileged
mode), it substitutes the string traceroute in its place. You can now execute the tracert from user or privileged
• Router>tracert

privileged mode you can also invoke the extended tracert, which like extended ping, will prompt you for
additional information. Granted, we’ve just “dumbed-down” Cisco IOS to the Microsoft level with regard to
trace, but at least now tracert will work on both platforms. The other option, as mentioned before, is to just use
tra on a Cisco and tracert with Windows.
By the way, if you work in a Microsoft environment, don’t forget about the Windows pathping command
which is similar to Cisco’s extended trace, but using ICMP echoes, of course. Try this on a Windows machine:
• C:\WinXP>pathping /?
The alias feature of IOS can be used for other things. For example, if you make frequent use of the show ip
ospf neighbor detail command, you might have discovered that you can shortcut it, like this:
• Router#s ip o n de
Or, you could set up an alias, such as siond, from global config mode:
• Router(config)#alias exec siond show ip ospf neighbor detail
Now you can use siond (or whatever you set up) in place of the full-blown command, including any options,
such as:
• Router#siond fa0/0
To display what a particular alias represents:
• Router#siond? (with no space between the alias and the question mark)
To display all existing aliases:
• Router#s alias
And, of course, to delete an alias, precede it with “no” in global config mode:
• Router(config)#no alias exec siond show ip ospf neighbor detail
These are just a few ways that IOS commands can help streamline your work, and give you more insight to your
system. Note that the shortcuts shown here are not necessarily the most concise possible. Use the question
mark option to find shortcuts that you like, and use them.