Scripting issue


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Scripting issue
# 1  
Old 10-17-2017
Scripting issue

Hi Experts,

I'm stuck with a single liner bash script. Need your help to fix it.

Let me brief you that what is my expectations from this script.

I need the interfaces configured for a list of servers, their respective IP address and FQDN in a output file. The output should be in the same line.

Here is the script which I'm running it from a jump server having ssh access with pasword.

Code:
for i in `cat server-list.txt`;do echo "+++++++++ $i +++++++++";ssh -q $i 'paste <(/sbin/ifconfig -a|egrep -i "eth|bond"|awk '{print $1}') <(/sbin/ifconfig -a|egrep "inet addr"|grep -v "127.0.0.1"|awk '{print $2}'|cut -d ':' -f 2) <(/sbin/ifconfig -a|egrep "inet addr"|grep -v "127.0.0.1"|awk '{print $2}'|cut -d ':' -f 2|xargs -n1 nslookup | grep -v nameserver | cut -f 2 | grep name | cut -f 2 -d "=" | sed 's/ //')';echo "========================="; done > output.txt


Output should look like this -


Code:
+++++++++ name of server1 +++++++++
eth1 <ip-of-eth1> <fqdn>
eth3 <ip-of-eth3> <fqdn>
eth4 <ip-of-eth4> <fqdn>
=========================
+++++++++ name of server2 +++++++++
eth1 <ip-of-eth1> <fqdn>
eth3 <ip-of-eth3> <fqdn>
eth4 <ip-of-eth4> <fqdn>
=========================
+++++++++ name of server3 +++++++++
eth1 <ip-of-eth1> <fqdn>
eth2 <ip-of-eth2> <fqdn>
=========================


When I execute it, it gives "paste: /dev/fd/63" No such file or directory".

It is not mandatory to use paste command, anything will work which can put the interface (eth0, ethx, bondx etc) ip address:wall and fqdn of that ip in the same line with a space or tab between them.

Thanks in Advance.

SmilieSmilieSmilie

Last edited by Scott; 10-17-2017 at 05:29 AM.. Reason: Please use code tags - and it would be nice if you could format your code so it's readable! Thanks.
# 2  
Old 10-17-2017
I don't suppose redirection works inside ssh. Try this:

Code:
ssh -q $i "eth=$(/sbin/ifconfig -a|egrep -i 'eth|bond'|awk '{print $1}'); ip=$(/sbin/ifconfig -a|egrep 'inet addr'|grep -v '127.0.0.1'|awk '{print $2}'|cut -d':' -f2); hst=$(host $ip | awk '{print $NF}'); echo $eth $ip $hst";

# 3  
Old 10-17-2017
Quote:
for i in `cat server-list.txt`;do echo "+++++++++ $i +++++++++";ssh -q $i 'paste <(/sbin/ifconfig -a|egrep -i "eth|bond"|awk '{print $1}') <(/sbin/ifconfig -a|egrep "inet addr"|grep -v "127.0.0.1"|awk '{print $2}'|cut -d ':' -f 2) <(/sbin/ifconfig -a|egrep "inet addr"|grep -v "127.0.0.1"|awk '{print $2}'|cut -d ':' -f 2|xargs -n1 nslookup | grep -v nameserver | cut -f 2 | grep name | cut -f 2 -d "=" | sed 's/ //')';echo "========================="; done > output.txt
If you want somebody to help you, please ...
  1. use CODE-Tags
  2. format your code(structure, intendation, comments) so it is easier to understand
This User Gave Thanks to stomp For This Post:
# 4  
Old 10-17-2017
Welcome arun_adm

I think your so-called one-liner is not. It is multiple commands (one of them over-complex) joined on a single line, making it hard to read.

Here it is written more sensibly (with a few tweaks too):-
Code:
while read target_server
do
   echo "+++++++++ ${target_server} +++++++++"
   ssh -q ${target_server} 'paste \
         <(/sbin/ifconfig -a|egrep -i "eth|bond"|awk '{print $1}') \
         <(/sbin/ifconfig -a|egrep "inet addr"|grep -v "127.0.0.1"|awk '{print $2}'|cut -d ':' -f 2) \
         <(/sbin/ifconfig -a|egrep "inet addr"|grep -v "127.0.0.1"|awk '{print $2}'|cut -d ':' -f 2| \
            xargs -n1 nslookup | grep -v nameserver | cut -f 2 | grep name | cut -f 2 -d "=" | sed 's/ //')'
   echo "========================="
done < server-list.txt > output.txt

I have used a meaningful variable name rather than just i and read the file into a while loop. It is clearer to read and the input does not risk get eaten up by the commands within the loop.

The line ending \ can have nothing after it. It means that the new-line is ignored, so on execution it is joined up but means it is somewhat easier to read.

I would suggest you are trying to do too much in one step with pipes from the output to grep, then awk, then cut, then xargs, then cut, then cut, then grep, then cut and finally sed Smilie

A tool like awk can do all of this (although it might need to call out to nslookup) which will neaten your code too.


Can you explain what you are actually trying to achieve? I think I've got it, but if I have misinterpreted, I don't want to write it out and have you think that I've got it.



Thanks, in advance,
Robin

Last edited by rbatte1; 10-17-2017 at 08:14 AM.. Reason: Added welcome
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Scripting Issue

Hi All, I am facing a problem when i am trying to run shell script more than 5 times. I have shell script(.sh file) which ran perfectly fine in the early attempts(1,2,3,4 runs). But if i try to run the script more number of times, i am facing the below error message. Too many ('s I do... (3 Replies)
Discussion started by: am24
3 Replies

2. Shell Programming and Scripting

Scripting issue

I am having a problem. which I have described below>> I have to run a script with the format : <File_name><Start_date><End_date> abcd.sh 19-JAN-2015 01-May-2014 problem is I need to compare these two dates and throw an error as start date must be less than or equal to end date. But... (13 Replies)
Discussion started by: Chandan_Bose
13 Replies

3. Shell Programming and Scripting

Scripting Issue

needing this script to shut down 1 IceS and start up another, close the 2nd one after 12 seconds and then reboot. here is what i have so far #!/bin/bash ShutDown() { echo "Shutdown in progress." wall <<ENDOFWALL CI Shutdown has been intiated!!!! Shutdown will occur in 30 seconds...... (1 Reply)
Discussion started by: Zaine
1 Replies

4. Shell Programming and Scripting

Scripting Issue

I am having an issue with a script that I created today, my first attempt at this, and was wondering if anyone can give me insight to what changes need to be made. Below is a copy of the script that I have written. WEe are trying to monitor whether or not a services is running. I do have a cron... (1 Reply)
Discussion started by: lsudubee
1 Replies

5. Shell Programming and Scripting

Scripting issue

Hello, I have an ASCII file (many files of the same format, but different dates and numbers) in the format like below: 2008.01.02,08:00,1.46520,1.46520,1.46410,1.46440,70 2008.01.02,08:05,1.46450,1.46560,1.46440,1.46540,79 2008.01.02,08:10,1.46530,1.46540,1.46490,1.46500,46... (8 Replies)
Discussion started by: chief2000
8 Replies

6. Shell Programming and Scripting

scripting issue

Hello, Guys I am having a sql script file which contains some sql statements including inserting values, One column is of the data type date. Now i am having a KSH script for inserting values via this script into the database. The problem I am facing that when I am inserting value in the... (1 Reply)
Discussion started by: mraghunandanan
1 Replies

7. Shell Programming and Scripting

IP-Scripting Issue

Hi Guys, I am quite new to Shell Scripting... I need ur help.. This is very urgent. The thing is like, I need to match a IP address (ex 192.168.200.56) i.e, xxx.xxx.xxx.xx inside a KSH script,but if we enter in different format other than the specified format (ex jjj.ksj., 1.0...), it should... (3 Replies)
Discussion started by: mraghunandanan
3 Replies

8. Shell Programming and Scripting

Scripting issue..

Hi guys... I am newbie to Shell Scripting... I am querying the Oracle database.I want a Shell script for fetching some data from datasets in Oracle database and displaying in an excel sheet.This is my requirement.. Can u plz help me guys.. Regards, Mahesh... (4 Replies)
Discussion started by: mraghunandanan
4 Replies

9. Shell Programming and Scripting

Scripting issue..

Hi guys... I am a newbie to scripting... I have a small requirement... I dont whether u r clear with my requirement... But plz try to help me... Like, tell me some kind of scripts that can help me in retreiving the data from the datasets. Regards, Mahesh... (1 Reply)
Discussion started by: mraghunandanan
1 Replies

10. Shell Programming and Scripting

scripting issue

folks; i'm trying to write a shell script to do the following: 1. i have a file with 39 fields, i'm trying to add 10 more fields with (!) as a field separator. with the following requirement: if field number 20 has a value, then field number 40 will show as (!M!), and if the field number 20 does... (2 Replies)
Discussion started by: moe2266
2 Replies
Login or Register to Ask a Question