Speed up the loop in shell script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Speed up the loop in shell script
# 1  
Old 02-01-2016
RedHat Speed up the loop in shell script

Hi

I have written a shell script which will test 300 to 500 IPs to find which are pinging and which are not pinging.

the script which give output as

Code:
10.x.x.x is pining
 10.x.x.x. is not pining
 -
 -
 -
 10.x.x.x is pining

like above.

But, this script is taking more time to display the output, as it is checking ONe by One IP.

My script is as below
Code:
 !/bin/bash
 while read line 
 do
 ping -c 1 $line &> /dev/null
 if [ $? -eq 0 ]; then
     echo "$line is pinging"
 else
     echo "$line is not pining"
 done < IP_list

can any one please guide me to speed up my script to provide speed output. as the loop above should run on 300 to 500 Ips.

the script is taking more than 30 mins to complete the execution.

Last edited by rbatte1; 11-22-2016 at 11:34 AM.. Reason: Added CODE tags
# 2  
Old 02-01-2016
Hello kumar85shiv,

Could you please try following and let me know if this helps, though I haven't tested it with 500 or 300 IPs, I only tested with 5 IPs and I am getting results within a second, please try and let me know on same, also not sure how your script worked without closing if condition properly as I saw fi is missing in the post shown.
Code:
while read line 
do
if [[ -n  $(ping -c1 $line 2>/dev/null) ]] 
then
    echo "$line is pinging"
else
    echo "$line is not pinging"
fi
done < "Input_file"

EDIT: Also adding one more way to make script shorter and you could try with this if this script is helpful to you and taking less time.
Code:
while read ip; do
    ping -c1 "$ip" &>/dev/null && echo $ip success || echo $ip fail
done < "Input_file"

Thanks,
R. Singh

Last edited by RavinderSingh13; 02-01-2016 at 07:18 AM.. Reason: Added one more solution now on same.
# 3  
Old 02-01-2016
Try
Code:
( for i in 10.1.1.{1..254} ; do ( ping -n -c 1 -w 1 $i &>/dev/null && printf "%-16s %s\n" $i responded ) & done ; wait )
10.1.1.1         responded
10.1.1.xx        responded
10.1.1.xx        responded


Last edited by RudiC; 02-01-2016 at 06:40 AM..
# 4  
Old 02-01-2016
hi, you can launch n ping in parallel, example with 10 ping in // :
Code:
#!/bin/bash
cnt=0;
while read line 
do
  [ $((cnt++)) -eq 10 ] && cnt=0 && wait
  {
  ping -c 1 $line &> /dev/null
  if [ $? -eq 0 ]; then  
     echo "$line is pinging"  
  else
      echo "$line is not pining"
  fi
  } &
done < IP_list
wait

regards.

Last edited by disedorgue; 02-01-2016 at 06:52 AM.. Reason: I forget "fi"
# 5  
Old 02-01-2016
Hi Disedorgue,

i tried your code, but giving the below error
Code:
 ./ping_fast.sh: line 12: syntax error near unexpected token `}'
./ping_fast.sh: line 12: `   }& '


Last edited by rbatte1; 11-22-2016 at 11:34 AM.. Reason: Add
# 6  
Old 02-01-2016
Install fping!
Code:
fping < IP_list

# 7  
Old 02-01-2016
Quote:
Originally Posted by kumar85shiv
Hi Disedorgue,

i tried your code, but giving the below error
./ping_fast.sh: line 12: syntax error near unexpected token `}'
./ping_fast.sh: line 12: ` }& '
I corrected post: I just forget to close if condition with token "fi" Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Need to Speed up shell script

Hello, I am basic level shell script developer. I have developed the following script. The shell script basically tracking various files containing certain strings. I am finding options to make the script run more faster. Any help/suggestion would be appreciated :) #! /bin/bash # Greps for... (6 Replies)
Discussion started by: Bhanuprasad
6 Replies

2. Shell Programming and Scripting

Speed up bash loop?

I am running the below bash loop on all the files of a specific type (highlighted in bold) in a directory. There are 4 awk commands that use the input files to search another and look for a match. The input files range from 27 - 259 and are a list of names. The file that is searched is... (11 Replies)
Discussion started by: cmccabe
11 Replies

3. Shell Programming and Scripting

Loop in shell script

Hi Friends, I have a file. the content is as below: file1: /A/B/C/abc.txt 2013-07-28 13:50:00,2013-07-31 01:00:00,5,710 /A/B/C/xyz.txt 2011-09-21 18:30:00,2013-07-30 06:15:00,15,65135 2009-11-09 18:00:00,2011-09-02 09:00:00,5,12345 2013-07-28 13:50:00,2013-07-31 01:00:00,5,710 ... (2 Replies)
Discussion started by: vsachan
2 Replies

4. Shell Programming and Scripting

Help with the For loop shell script

Hi, I have multiple files in a directory. Each file will have a header.I have to check if any of the files has 0 rows other than the header then I have to delete the files. Here “ Empty file” in my case means a file has header information but no data. I have to delete such files. If the file... (2 Replies)
Discussion started by: ganesnar
2 Replies

5. Shell Programming and Scripting

Avoiding For Loop in Shell Script

I am looking to a solution to the following problem. I have a very large file that looks something like this: Each group of three numbers on each line are three probabilities that sum to one. I want to output the maximum for each group of three. So desired output would be: or... (6 Replies)
Discussion started by: hydrabane
6 Replies

6. Shell Programming and Scripting

Shell script using loop

Hi everyone, I have n number of data in my file "temp" in following order.In each line table_name and column_name are different.input data is in same format each query in three lines. ALTER TABLE table_name ADD ( column_name1 VARCHAR2(10), column_name2 VARCHAR2(70) ); ... (23 Replies)
Discussion started by: alisha
23 Replies

7. Shell Programming and Scripting

Loop in shell script

Dear experts, i am quite new to shell script please any one can help me in this regard i would like write a script which takes input in the form >./Test.sh a,10,b,20,c,30... in this way i can give input in any number which is not constant in the end through loop i want to... (3 Replies)
Discussion started by: vin_pll
3 Replies

8. Filesystems, Disks and Memory

data from blktrace: read speed V.S. write speed

I analysed disk performance with blktrace and get some data: read: 8,3 4 2141 2.882115217 3342 Q R 195732187 + 32 8,3 4 2142 2.882116411 3342 G R 195732187 + 32 8,3 4 2144 2.882117647 3342 I R 195732187 + 32 8,3 4 2145 ... (1 Reply)
Discussion started by: W.C.C
1 Replies

9. Shell Programming and Scripting

Help with loop in a shell script

I just want to write a little script, that reads the lines from a file, echos somthing in a new tmp.file and then do some commands whith the tmp.files. while read -r line do echo "TEST=" > tmp.$$ echo "$line" >> tmp.$$ any_command < tmp.$$ done < $INPUTFILE But I think I have to... (2 Replies)
Discussion started by: elifchen
2 Replies

10. Shell Programming and Scripting

If then else loop in Shell script

Hi Following is the code . When I give input as Bangalore,its dospalying Welcome to Hitech City. But say , if I select Delhi or US, its not displaying the corresponding message. Its still says Welcome to Hitech City. Seems that it not entering in the elif part. Please suggest. #!... (4 Replies)
Discussion started by: pankajkrmishra
4 Replies
Login or Register to Ask a Question