Core iTOps Tube

Wednesday, 16 May 2012

reading in a file through

I'm trying to use the below script to perform a certain task.

task is: i have a file that has data that is similar to what is pasted below.

we'll call this file host.conf


define host {


      alias mail-server


      use generic-host


What I just pasted above is what i refer to as a chunk. Now, there are several of these chunks in the host.conf file.

now, i have a separate file that contains a list of host names. we'll call this separate file host.list.

the list of hostnames in host.list is one server per line.



i want to take each host that is in host.list, and run it against the host.conf file. what i'm looking to do is to get the IP of the host from the host.conf file.

in other words, every host that I have in host.list has a configuration set up in host.conf. the configuration set up for each host is the chunk i pasted above.

below is the code im attempting to use to help me pull out what i want.


awk 'BEGIN {

  while((getline < "host.list")>0)


  FS="\n"; RS="}\n"


/define host/ && /}/ {

  for(X in D) delete D[X];

  for(N=2; N<=NF; N++)


      split($N, A, " ");

      D[A[1]] = A[2]

      i = 3;

      while (i in A)

          D[A[1]] = D[A[1]] "=" A[i++];


  if (D["host_name"] in S)

      printf("%20s -- %50s\n", D["host_name"], D["address"])

}' $1

the output of this script should be:


hostname ---- ip

ex:  ------

my os is: redhat and sunos

shell: bash

No comments:

Post a Comment