Sponsored Content
Full Discussion: I need help with...<various>
Top Forums Shell Programming and Scripting I need help with...<various> Post 302228301 by era on Saturday 23rd of August 2008 08:47:04 PM
Old 08-23-2008
You can have as many commands as you like between the "do" and "done", and of course, they can be new loops with "do" and "done" in them. Not sure where you'd need that, though. You can simply modify the sed script to shuffle things around in a different order if that's how you like them.

Code:
sed "s/.*/IP for $host is & at $nameserver"

The "s/from/to/" command in sed will substitute the stuff in "from" with the stuff in "to" on each line. In this case we are replacing the IP address printed by dig with the longer string. & retrieves the "from" string into the "to" string. Dot star is the regular expression for "everything on this line" (dot means any character, star means any number of times).

Just to show an alternate way of doing it, here's a loop which prints the message piecemeal.

Code:
#!/bin/sh
host=$1
dig +short ns $host |
while read nameserver; do
  echo -n "IP for $host is "
  dig +short @$nameserver $host | tr '\n' ' '  # replace final newline with space
  echo "at $nameserver"
done

Or you can interpolate with backticks

Code:
  echo IP for $host is `dig +short @$nameserver $host` at $nameserver

Backticks AKA grave accents (ASCII 96) capture the output of one command so you can use it in the command line of another command. Notice that those are not regular single quotes. Copy/paste them if you can't find them on your keyboard.

Last edited by era; 08-23-2008 at 09:57 PM.. Reason: Show alternate way of coding it with echos to print the desired message
 
RESOLVER(5)							File Formats Manual						       RESOLVER(5)

NAME
resolver - resolver configuration file SYNOPSIS
/etc/resolv.conf DESCRIPTION
The resolver configuration file contains information that is read by the resolver routines the first time they are invoked by a process. The file is designed to be human readable and contains a list of name-value pairs that provide various types of resolver information. On a normally configured system this file should not be necessary. The only name server to be queried will be on the local machine and the domain name is retrieved from the system. The different configuration options are: nameserver followed by the Internet address (in dot notation) of a name server that the resolver should query. At least one name server should be listed. Up to MAXNS (currently 3) name servers may be listed, in that case the resolver library queries tries them in the order listed. If no nameserver entries are present, the default is to use the name server on the local machine. (The algorithm used is to try a name server, and if the query times out, try the next, until out of name servers, then repeat trying all the name servers until a maximum number of retries are made). domain followed by a domain name, that is the default domain to append to names that do not have a dot in them. If no domain entries are present, the domain returned by gethostname(2) is used (everything after the first `.'). Finally, if the host name does not contain a domain part, the root domain is assumed. The name value pair must appear on a single line, and the keyword (e.g. nameserver) must start the line. The value follows the keyword, separated by white space. FILES
/etc/resolv.conf SEE ALSO
gethostbyname(3N), resolver(3), named(8) Name Server Operations Guide for BIND 4th Berkeley Distribution September 14, 1987 RESOLVER(5)
All times are GMT -4. The time now is 10:18 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy