简体   繁体   中英

Stopping the Ping process in bash script?

I created a bash script to ping my local network to see which hosts is up and I have a problem in stopping the Ping process by using ctrl+C once it is started the only way i found to suspend it but even the kill command doesn't work with the PID of the Ping

submask=100
for i in ${submask -le 110}
do
    ping -n 2 192.168.1.$submask
    ((submask++))
done

I suggest you to limit the amount of packets sent with ping with the option -c .

I also corrected the bash syntax, guessing what you intend to do.

Finally, it is faster to run all the ping processes in parallel with the operand & .

Try:

for submask in ${100..110}
do
    echo ping -c 1 192.168.1.$submask &
done

Ctrl + C exit ping, but another ping starts. So you can use trap.

#!/bin/bash

exit_()
{
        exit
}

submask=100
while [ $submask -le 110 ]
do
    fping -c 2 192.168.77.$submask
   ((submask++))
   trap exit_ int
done

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM