on 11-01-2011 02:42 PM
Posted By: | jclarke |
Posted Date: | Oct 10, 2010 |
Category: | Network Management |
Version: | 1.2 |
License: | Cisco-Style BSD |
Summary: | Tclsh script to do DNS lookups on IOS. |
Script Modified Date: | Oct 10, 2010 |
Cisco IOS Version tested: | 12.4(24)T 15.0(1)M |
Cisco Products Tested: | 7206 2821 |
Environment Variables used: | |
Rating Count: | 0 |
Average Rating: | 0 |
File Size: | 4 KB |
Script Info URL: |
This tclsh script implements the UNIX host command on IOS. The host.tcl script is currently limited to IPv4 A, IPv6 AAAA, and PTR lookups only. It can also dynamically determine the DNS server by looking at the running config. However, if you want to specify a DNS server to use, that is also possible. To use the script, do the following: tclsh host.tcl HOST [DNS SERVER] Where HOST is the hostname or IP address to lookup, and DNS SERVER is an optional DNS server name or IP address. Add a "-6" option to do an IPv6 AAAA lookup.
Hi , thanks for the script
i hav implimented that but getting below error please help
TEST#tclsh flash:host.tcl 195.235.125.74
ERROR: No such name
TEST#tclsh flash:host.tcl 195.235.125.74.in-addr.arpa
ERROR: No error
TEST#tclsh flash:host.tcl 195.235.125.74.in-addr.arpa kix01s01-in-f3.1e100.net ?
LINE <cr>
TEST#tclsh flash:host.tcl 195.235.125.74.in-addr.arpa kix01s01-in-f3.1e100.net
Translating "kix01s01-in-f3.1e100.net"...domain server (8.8.8.8) [OK]
ERROR: couldn't open socket: connection timed out
TEST#dir
Directory of flash:/
1 -rw- 900 May 16 2013 13:37:06 +08:00 vlan.dat
8 -rw- 12266 May 16 2013 21:37:36 +08:00 host.tcl
2 -rw- 3559 Jan 15 2010 10:27:22 +08:00 cpconfig-180x.cfg
3 -rw- 2324992 Jan 15 2010 10:27:36 +08:00 cpexpress.tar
4 -rw- 1038 Jan 15 2010 10:27:46 +08:00 home.shtml
5 -rw- 115712 Jan 15 2010 10:27:54 +08:00 home.tar
6 -rw- 2099 Apr 5 2013 08:27:40 +08:00 5MarchRunningconfig
7 -rw- 30626516 Apr 5 2013 08:35:40 +08:00 c180x-adventerprisek9-mz.151-4.M6.bin
64020480 bytes total (30912512 bytes free)
Are you using VRFs and would the DNS queries have to go out a specific VRF?
I uploaded this newer version of your utility, per your suggestion. Unfortunately I'm experiencing the same results - both network devices return empty lines upon execution.
If I run the utility from a linux host, it works like a charm.
ex>
=====[ linux ]=====
bauhaus ~/Cisco-provided-scripts $ tclsh host.tcl www.google.com 8.8.8.8
www.google.com has address 74.125.225.113
www.google.com has address 74.125.225.112
www.google.com has address 74.125.225.114
...
=====
ex>
(yes, I know these are old, but it should still work...)
=====[ 2621 ]=====
ithny-home01-2621#tclsh host.tcl www.google.com 8.8.8.8
ithny-home01-2621#
--
ithny-home01-2621#sho ver
Cisco IOS Software, C2600 Software (C2600-ADVENTERPRISEK9-M), Version 12.4(10a), RELEASE SOFTWARE (fc2)
...
Cisco 2621XM (MPC860P) processor (revision 3.0) with 126673K/4399K bytes of memory.
--
ithny-home01-2621(tcl)#info patchlevel
8.3.4
ithny-home01-2621(tcl)#
=====
=====[ 2811 ]=====
ithny-home01-2811r1#tclsh host.tcl www.google.com 8.8.8.8
ERROR:
ithny-home01-2811r1#
--
ithny-home01-2811r1#sho ver
Cisco IOS Software, 2800 Software (C2800NM-ADVENTERPRISEK9-M), Version 12.4(3h), RELEASE SOFTWARE (fc2)
...
Cisco 2811 (revision 53.51) with 512000K/12288K bytes of memory.
--
ithny-home01-2811r1(tcl)#info patchlevel
8.3.4
=====
Neither device is doing any sort of AAA, just static passwords since they're testing/dev systems. Also, no fancy routing or vrfs or anything. Just straightforward 'ol default gateways...so the 8.8.8.8 nameserver is totally reachable. I've even tried against DNS servers on the same subnet, I've tried letting the script read the running-config to pull the nameserver, but all result in no difference. All 3 of these systems are an the same subnet/vlan.
I'm new to TCL on IOS, so am not quite sure yet how to track down why these behavior inconsistencies happen.
Any thoughts?
Cheers,
-Chris
Actually, the script requires a 12.4T image or higher. There were some bugs that prevented IPv4 sockets from working correctly on earlier versions of code.
Hi All/Joseph,
I'm wondering how I go about calling this script. I understand that this is probably inefficient, but it would be a huge help.
let say I have something along these lines,
foreach line [split [exec "show ip arp | i [0-9]\."] \n]
append output [host.tcl [lindex $line 0]],[lindex $line 0]],[lindex $line 2],[lindex $line 3]\n
}
and I'm going for
hostname,ip address,mac address,Vlan
hostname,ip address,mac address,Vlan
hostname,ip address,mac address,Vlan
etc....
If you add:
exec "tclsh host.tcl ..."
Then that should give you what you want. But you could simply edit the script so that the main resolving function is called within the loop. That would save you quite a bit of overhead.
I was going for your second solution, but the script is well over my head. I was looking for arg0 or something like that so I can make an edit & reuse the logic, but it doesn't look like it will be that easy.
Look at the bottom of the script. You'll see where the "host" function is called on $argv. If you change that code to do the iteration you want, you should see the desired results.
Thanks Joseph!!!
Seriously, you've been a huge help for me. I appreciate all of your guidance.
Hi Joseph,
I'm getting Transaction ID mismatch, almost every time. Do you know what's causing this? If I put that line in with an address, multiple times, it seems to about 25% of the time.
Also, $rc seems to always be 0, but it looks like $rc should be the results of the host.tcl output. Do you know how I can capture the output into a variable?
Thanks,
Cory
I haven't looked at this code in a long time. But if the transaction ID doesn't match then the DNS reply is not ours. Are you using UDP or TCP? TCP should definitely be more reliable.
For rc, try doing this:
return -code $result
Instead of "return -code $rc $result".
Awesome. I have tried it, it works perfect. Thanks.
Hello, can You please explain how this script can be loaded on a Cisco Switch ?
Thank You
Wini
Please explain how this script is transffered into a Cisco switch.
Where must I placeand unpack this ?
Please come back with info.
Thank You in advance
Wini
Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community: