以下のコードを実行して、IPアドレス、受信、送信されたパケット数を表示してみてください。
#!/bin/bash
interface=$1
ip=$2
packet=$3
if [[ $1 == "-h" ]]
then
echo "Perform ping command and get an automated result"
echo "Perform like ./ping_lan.sh Interface IP Packet "
echo "Example: ./ping_lan.sh eno1 192.168.7.4 10"
exit
fi
ping -I $interface -q $ip -c $3 >> ping_summary.txt
transmit=$(grep -o '[0-9]\+ packets transmitted' ping_summary.txt | grep -o '[0-9]\+')
receive=$(grep -o ', [0-9]\+ received' ping_summary.txt | grep -o '[0-9]\+')
packet_loss=$(grep -o ', [0-9]\+% packet loss' ping_summary.txt | grep -o '[0-9]\+')
cat ping_summary.txt >> summary.txt
rm ping_summary.txt
if [[ $transmit -ne $packet ]]
then
echo -n "FAIL: transmit package is: "
echo -n $transmit
echo -n " expected: "
echo $packet
exit 1
fi
if [[ $receive -ne $packet ]]
then
echo -n "FAIL: receive package is: "
echo -n $receive
echo -n " expected: "
echo $packet
exit 1
fi
if [[ $packet_loss -ne 0 ]]
then
echo -n "FAIL: transmit package is: "
echo -n $packet_loss
echo -n "expected: "
echo "0"
exit 1
fi
exit 0
私が得たエラーは「usage ping」を次のように置き換えようargument requires an argument
としました。-c
--c
「使用Ping」とは何を意味し、なぜ表示されますか?
- このエラーはどういう意味ですか?
- このエラーが発生するのはなぜですか?
- このエラーを回避するにはどうすればよいですか?
これを使用した後、bash -x script_name
私が得た結果は次のとおりです。
+ interface=
+ ip=
+ packet=
+ [[ '' == \-\h ]]
+ ping -I -q -c 5
Usage: ping [-aAbBdDfhLnOqrRUvV64] [-c count] [-i interval] [-I interface]
[-m mark] [-M pmtudisc_option] [-l preload] [-p pattern] [-Q tos]
[-s packetsize] [-S sndbuf] [-t ttl] [-T timestamp_option]
[-w deadline] [-W timeout] [hop1 ...] destination
Usage: ping -6 [-aAbBdDfhLnOqrRUvV] [-c count] [-i interval] [-I interface]
[-l preload] [-m mark] [-M pmtudisc_option]
[-N nodeinfo_option] [-p pattern] [-Q tclass] [-s packetsize]
[-S sndbuf] [-t ttl] [-T timestamp_option] [-w deadline]
[-W timeout] destination
++ grep -o '[0-9]\+ packets transmitted' ping_summary.txt
++ grep -o '[0-9]\+'
+ transmit=
++ grep -o ', [0-9]\+ received' ping_summary.txt
++ grep -o '[0-9]\+'
+ receive=
++ grep -o ', [0-9]\+% packet loss' ping_summary.txt
++ grep -o '[0-9]\+'
+ packet_loss=
+ cat ping_summary.txt
do_ping_lan.sh: line 22: summary.txt: Permission denied
+ rm ping_summary.txt
+ [[ '' -ne '' ]]
+ [[ '' -ne '' ]]
+ [[ '' -ne 0 ]]
+ exit 0
スクリプトの呼び出しに使用するコマンドは次のとおりです。
sudo ./script_name interface ip packet
sudo ./do_ping_lan.sh wlan0 192.168.0.1 5
ベストアンサー1
スクリプトが正しく呼び出されません。出力を表示します。
+ ping -I -q -c 5
Usage: ping [-aAbBdDfhLnOqrRUvV64] [-c count] [-i interval] [-I interface]
どのパラメータにも値がないことが明確にわかるため、ping
使用法メッセージが表示されます。
後で、
+ cat ping_summary.txt
do_ping_lan.sh: line 22: summary.txt: Permission denied
summary.txt
現在のディレクトリには書き込めません。一時ファイル(StackExchange関連の回答を参照)またはその他の書き込み可能ファイルに書き込む必要がありますmktemp
。