1#!/usr/bin/wish
2
3# This file provides valuable host and IP manipulation procedures such as
4# get_host_name_ip, etc.
5
6my_source [list cmd.tcl]
7
8
9proc get_host_name_ip {host {quiet 1}} {
10
11  # Get the host name, short host name and the IP address and return them as
12  # a list.
13  # If this procedure is unable to get the requested information, it will
14  # print an error message to stderr and return blank values.
15
16  # Example call:
17  # lassign [get_host_name_ip $host] host_name short_host_name ip_address
18
19  # Description of argument(s):
20  # host                            The host name or IP address to be obtained.
21  # quiet                           Indicates whether status information
22  #                                 should be printed.
23
24  if { ${quiet} } { set print_output 0 } else { set print_output 1 }
25  lassign [cmd_fnc "host $host" "${quiet}" "" "${print_output}"] rc out_buf
26  if { $rc != 0 } { return [list "" "" ""]}
27
28  if { [regexp "has address" $out_buf] } {
29    # Host is host name.
30    # Format of output:
31    # hostname.bla.com has address n.n.n.n.
32    lassign [split $out_buf " "] host_name fill1 fill2 ip_address
33  } elseif { [regexp "domain name pointer" $out_buf] } {
34    # Host is IP address.
35    # Format of output:
36    # n.n.n.n.in-addr.arpa domain name pointer hostname.bla.com.
37    set ip_address ${host}
38    lassign [split $out_buf " "] fill0 fill1 fill2 fill3 host_name
39    set host_name [string trimright $host_name {.}]
40  }
41  # Create the short name from the host name.
42  lassign [split $host_name "."] short_host_name
43
44  return [list ${host_name} ${short_host_name} ${ip_address}]
45
46}
47
48