#パスワード:
#!/bin/bash
for ip in `seq 100 110`; do
ping -c 1 $0.$ip | grep "64 bytes" | cut -d " " -f 4 | tr -d ":" &
done
#注文する:
./ipsweep.sh 192.168.0
#結果:
ping: ./ipsweep.sh.105: Name or service not known
答え1
$0
スクリプトのパス名です。$1
最初のパラメータです。
生成するコマンドは次のとおりです。
ping -c 1 ./pingsweep.sh.100
答え2
以下は、目的のタスクを実行する簡単なスクリプトです。ニーズに合わせて変更できます。
#!/bin/bash
ping_hosts ()
{
network="192.168.0"
start=$(date +"%d-%m-%Y-%T")
local s=$1
local e=$2
printf '%s\n\n' "Pinging $network"
for ((i=s; i<=e; i++))
do
if ping -s 64 -c 1 -W 1 ${network}.${i} >/dev/null; then
((count1 += 1))
printf '%s\n' "${network}.${i} is UP"
else
((count2 += 1))
printf '%s\n' "${network}.${i} is DOWN"
fi
done
end=$(date +"%d-%m-%Y-%T")
printf '%s\n' "Start:$start"
printf '%s\n\n' "End**:$end"
printf '%s UP and %s DOWN\n' "$count1" "$count2"
}
if (($# < 2)); then
printf '%s\n' "Use start and end range i.e: .${0##*.} 100 110"
exit 1
else
ping_hosts $1 $2
fi
ieでスクリプトを実行可能にすることができます。
chmod u+x ping_hosts
引数なしで実行すると、次のものが生成されます。
$> ./ping_host
Use start and end range i.e: ./ping_host 100 110
次のように実行すると:
$> ./ping_host 100 110
Pinging 192.168.0
192.168.0.100 is UP
192.168.0.101 is DOWN
192.168.0.102 is UP
192.168.0.103 is DOWN
192.168.0.104 is UP
192.168.0.105 is DOWN
192.168.0.106 is DOWN
192.168.0.107 is DOWN
192.168.0.108 is DOWN
192.168.0.109 is DOWN
192.168.0.110 is DOWN
Start:24-08-2021-22:55:59
End**:24-08-2021-22:56:07
3 UP and 8 DOWN