Piping commands is an excellent way to limit or redirect the output of a show command. For me, it was one of the things I always knew about but just never got in the practice of doing. Here are some examples:
Edit: I wasn’t very clear on what ‘piping’ meant. Piping refers to the use of the | symbol. The | is located above the enter key on most keyboards and since it looks like a pipe, we call it ‘piping’.
-Insert your relevant information between <>
-Console prompts are show in green
-Text in blue are variable names I made up, feel free to change them
Notes: We use the exclude command here to remove all of the interfaces that don’t have IP addresses assigned to them. That’s the best (and only) example I can think of for using exclude
Cisco2801# show ip int brief | exclude unassigned
Interface IP-Address OK? Method Status Protocol
FastEthernet0/0.1 10.20.30.1 YES NVRAM up up
FastEthernet0/0.2 10.10.10.1 YES NVRAM up up
FastEthernet0/1 126.96.36.199 YES NVRAM up up
Notes: We use the include command here to limit the output from the ‘show processes cpu’ command. This command normally returns a few screens worth of data. Here we only show the output for lines including the work ‘Chunk’. Note that the include is case sensitive. That is, if I specify ‘Chunk’ I get the Chunk Manager line. But if I specify ‘chunk’ I get the ‘TurboACL chunk’ line. This is shown in the example output below.
Cisco2801# show processes cpu | include Chunk
1 0 46 0 0.00% 0.00% 0.00% 0 Chunk Manager
Cisco2801# show processes cpu | include chunk
69 0 2 0 0.00% 0.00% 0.00% 0 TurboACL chunk
Notes: The begin command can be used to select where you want to ‘begin’ the console output of your show command. For instance, in the example below I want to start the output of the ‘show run’ command at statically defined routes. This is similar to on the ASA appliances where you are able to issues the command ‘show run route’ which will only output the route commands.
Cisco2801# show run | begin ip route
ip route 0.0.0.0 0.0.0.0 188.8.131.52
ip route 192.168.17.0 255.255.255.0 184.108.40.206
Notes: Say we want to redirect the output of a show command to a TFTP server. This can be done by using the redirect command. The example below shows the redirection of the ‘show ip int brief’ command to a file on my TFTP server.
Cisco2801#show ip int brief | redirect tftp://<TFTP Server IP>/MyRedirect
Screenshot of the output in a text editor.
Notes: Same deal as redirect but you can append the output to an existing file. Let’s append the output of the ‘show ip route’ command to the same file so you can see what it looks like. Note that append to an external source isn’t supported on all routers. You may get a ‘% Appending is not supported in this file system’ when you try to append which indicates your router does not support random writes.
Cisco2801# show ip route | append tftp://<TFTP Server IP>/MyRedirect
Notes: Not exactly sure when you NEED to use this but if you want to output the file to a TFTP server as well as see it on the screen you can use the ‘tee’ command. Example below. The exclamation point shows that it was sent to the TFTP server and the actual output is shown below.
Cisco2801# show ip route | tee tftp://10.20.30.52/MyRedirect3
Codes: C – connected, S – static, R – RIP, M – mobile, B – BGP
D – EIGRP, EX – EIGRP external, O – OSPF, IA – OSPF inter area
N1 – OSPF NSSA external type 1, N2 – OSPF NSSA external type 2
E1 – OSPF external type 1, E2 – OSPF external type 2
i – IS-IS, su – IS-IS summary, L1 – IS-IS level-1, L2 – IS-IS level-2
ia – IS-IS inter area, * – candidate default, U – per-user static route
o – ODR, P – periodic downloaded static route
Gateway of last resort is 220.127.116.11 to network 0.0.0.0
18.104.22.168/30 is subnetted, 1 subnets
C 22.214.171.124 is directly connected, FastEthernet0/1
10.0.0.0/24 is subnetted, 2 subnets
C 10.20.30.0 is directly connected, FastEthernet0/0.1
C 10.10.10.0 is directly connected, FastEthernet0/0.2
S 192.168.17.0/24 [1/0] via 126.96.36.199
S* 0.0.0.0/0 [1/0] via 188.8.131.52
All in all, some (if not all) of these commands can come in handy. I find myself doing piping all of the time now!
This is my favorite “| exclude” use.
show processes cpu | exclude 0.00% 0.00% 0.00%
It really cuts down on looking at processes.
Nicely explained and simple to understand.