Sponsored Content
Top Forums Shell Programming and Scripting Output breaking when returning multiple values Post 302757735 by Azrael on Friday 18th of January 2013 01:24:23 AM
Old 01-18-2013
Output breaking when returning multiple values

I've been trying to write a command-line function to grab a website's MX records and their ip addresses. The code below works with domains that only have one MX record:

Code:
function kmx { mx=`host -t MX $1 | awk '{ print $7 }'`; 
ip=`host $mx | sed '/IPv6/d;/handled/d' | awk '{ print $4 }'`; 
kdialog --title "KMX" --msgbox "# host -t MX $1
$mx     $ip";}; kmx clone-ozone.com

However, changing the function parameter at the end to google.com or a domain with multiple MX Records breaks the output of the ip addresses.

Tried messing with some arrays and different things to try to get around this but kept getting syntax errors:

Code:
function kmx { mx+=`host -t MX $1 | awk '{ print $7 }'`; 
ip=for i in "${mx[@]}"; do host ${mx[$i]} | sed '/IPv6/d;/handled/d' | awk '{ print $4 }'; done; 
kdialog --title "KMX" --msgbox "# host -t MX $1
bash: syntax error near unexpected token `do'

Perhaps I'm just too tired, but any suggestions would be appreciated.

*Side note, kdialog is KDE only but removing that part should make it runnable from the cli.

Last edited by Azrael; 01-20-2013 at 09:22 AM..
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Returning Values (shell Script)

I have an application on Informix 4GL, and I am invoking the shell script from the program, but I need to know if the shell script work fine or not, in order to continue the process. I know that we can use $? to get the final status but this is on unix command. How can I return a value from the... (3 Replies)
Discussion started by: jennifer01
3 Replies

2. UNIX for Dummies Questions & Answers

Breaking output for specific pattern

Respected Sirs, I have a text file which is unfortunately unformatted. I have something like 191728/02/06226278 191828/02/06226279 191928/02/06226280 192028/02/06226281 192128/02/06226282 Can some one suggest me the way so that I can store 1917 28/02/06 226278 in different... (2 Replies)
Discussion started by: shoeb_syed
2 Replies

3. Shell Programming and Scripting

awk/nawk returning decimal values?

Hi Running a specific nawk statement over a 17m lines files returns the following: /bin/nawk: not enough args in ..... input record number 1,25955e+06, file test.1 source line number 1 I'd like to report the line number (in bold above) in decimal not floating so that i can spot it out. ... (1 Reply)
Discussion started by: moutaye
1 Replies

4. Programming

returning multiple values from a function in C

hi how can I return multiple values from a C function. I tried the following: #include <stdio.h> void foo(int id, char *first_name, char *last_name) { /* this is just an example to illustrate my problem... real code makes use of the "id" parameter. */ first_name = (char... (8 Replies)
Discussion started by: Andrewkl
8 Replies

5. Shell Programming and Scripting

Breaking a column's value into multiple rows

Hello Friends, I am trying to implement the following using UNIX. I am getting a sequential file as input which would have two columns, "Name" and "Countries Visited". The "Countries Visisted" field will be multi-valued, each value separated by a space and also the number of values are not... (2 Replies)
Discussion started by: mehimadri
2 Replies

6. UNIX for Dummies Questions & Answers

For loop returning more values

Hi All, Thanks all of you for the help you provide to me. Well, I have one more problem, where I am trying to pull file system information in the loop and display the filesystem percentege. I am using following code to achive this, nut it's giving the weired output. My file system is ... (1 Reply)
Discussion started by: alok.behria
1 Replies

7. Shell Programming and Scripting

Returning and capturing multiple return values from a function

Hi I am pretty confused in returning and capturing multiple values i have defined a function which should return values "total, difference" i have used as #!/usr/bin/ksh calc() { total=$1+$2 echo "$total" diff=$2-$1 echo "$diff" } I have invoked this function as calc 5 8 Now i... (2 Replies)
Discussion started by: Priya Amaresh
2 Replies

8. Shell Programming and Scripting

Returning multiple values in Shell

Hi I have a code as the following #!/usr/bin/ksh set -x row() { a=$1 b=$2 c=$(($a + $b)) d=$(($a * $b)) echo $a $b } e=`row 2 3` set $e echo "The value of c is $c" echo "The value of d is $d" My requirement is I need to pass two arguments to a function and return two values... (5 Replies)
Discussion started by: Priya Amaresh
5 Replies

9. Shell Programming and Scripting

Extract multiple values from a tnsping output

Hi all, Can anyone help with the following request? I need to extract HOST value, SERVICE_NAME and msec value from a tnsping output and append to a file. The tnsping output is typically as follows: Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS =... (4 Replies)
Discussion started by: jonnyd
4 Replies

10. UNIX for Dummies Questions & Answers

Read in Multiple log files and output selected variables and values to cvs file

I have several problems with my problems: I hope you can help me. 1) the If else statement I am getting an error message. My syntax must be incorrect because the entire statement is throwing an error. For example in filew.log if these items don't exist Memsize, SASFoundation and also if... (0 Replies)
Discussion started by: dellanicholson
0 Replies
tcpclient(1)						      General Commands Manual						      tcpclient(1)

NAME
tcpclient - create an outgoing TCP connection SYNOPSIS
tcpclient [ -46hHrRdDqQv ] [ -ilocalip ] [ -plocalport ] [ -Ttimeoutconn ] [ -llocalname ] [ -ttimeoutinfo ] [ -Iinterface ] host port pro- gram [ arg ... ] DESCRIPTION
tcpclient attempts to connect to a TCP server. If it is successful, it runs program with the given arguments, with descriptor 6 reading from the network and descriptor 7 writing to the network. The server's address is given by host and port. host may be 0, referring to the local machine, or a dotted-decimal IP address, or a host name; if a host has several IP addresses, tcpclient tries each in turn. port may be a numeric port number or a port name. tcpclient sets up several environment variables, as described in tcp-environ(5). OPTIONS
-ilocalip Use localip as the IP address for the local side of the connection; quit if localip is not available. -plocalport Use localport as the port number for the local side of the connection; quit if localport is not available. -Iinterface Use interface as the local network interface. This is only defined for IPv6 sockets and needed if you use link-local IPv6 addresses. -Ttimeoutconn Give up on the connection attempt after timeoutconn seconds. Default: 60. This timeout applies to each IP address tried. -d (Default.) Delay sending data for a fraction of a second whenever the remote host is responding slowly, to make better use of the network. -D Never delay sending data; enable TCP_NODELAY. This is appropriate for interactive connections. -q Quiet. Do not print any messages. -Q (Default.) Print error messages. -v Verbose. Print all available messages. DATA-GATHERING OPTIONS -h (Default.) Look up the remote host name for TCPREMOTEHOST. -H Do not look up the remote host name; unset TCPREMOTEHOST. -llocalname Do not look up the local host name; use localname for TCPLOCALHOST. -r (Default.) Attempt to obtain TCPREMOTEINFO from the remote host. -R Do not attempt to obtain TCPREMOTEINFO from the remote host. -ttimeoutinfo Give up on the TCPREMOTEINFO connection attempt after timeoutinfo seconds. Default: 26. -4 Fall back to IPv4 sockets. This is necessary for terminally broken systems like OpenBSD which will not let IPv6 sockets connect to V4-mapped IPv6 addresses. Please note that this also applies to DNS lookups, so you will have to use an DNS resolver with an IPv6 address to connect to IPv6 systems. Use DNSCACHEIP to set the DNS resolver IP dynamically. -6 Force IPv6 mode in UCSPI environment variables, even for IPv4 connections. This will set $PROTO to TCP6 and put IPv4-mapped IPv6 addresses in TCPLOCALIP and TCPREMOTEIP. SEE ALSO
date@(1), finger@(1), http@(1), mconnect(1), tcpcat(1), tcpserver(1), who@(1), tcp-environ(5) tcpclient(1)
All times are GMT -4. The time now is 04:44 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy