나는 물었다전에 ping 스크립트에 대한 도움을 찾고 있습니다.ping이 실패하면 일부 호스트에 ping을 수행하고 나에게 이메일을 보내야 합니다. 이것은 훌륭하게 작동합니다.
이제 스크립트가 성공할 경우에만 이메일을 보내도록 스크립트(아래 참조)를 수정하고 싶습니다. 그래서 기본적으로 나는 작동하지 않는 일부 호스트에 ping을 보내는 스크립트를 원하며, 해당 호스트 중 하나라도 ping을 반환하면 스크립트가 나에게 이메일을 보내도록 하고 싶습니다. 이것은 내가 현재 가지고 있는 스크립트입니다:
#!/bin/bash
ping_targets="server1 server2 server3 server4 server5"
failed_hosts=""
for i in $ping_targets
do
ping -c 1 $i > /dev/null
if [ $? -ne 0 ]; then
if [ "$failed_hosts" == "" ]; then
failed_hosts="$i"
else
failed_hosts="$failed_hosts, $i"
fi
fi
done
if [ "$failed_hosts" != "" ]; then
echo $failed_hosts| mailx -s "Failed ping targets" email@domain
fi
답변1
#!/bin/bash
ping_targets="server1 server2 server3 server4 server5"
for i in $ping_targets
do
ping -c 1 $i > /dev/null
if [ $? -eq 0 ]; then
echo "$i ping success!" > test_file
fi
if [ -s test_file ];then
mailx -s "Successful ping targets" -a test_file email@domain
fi
첨부 파일을 추가하지 않으려면 mailx
해당 줄을 다음으로 바꾸십시오.
mailx -s "Successful ping targets" email@domain < test_file
답변2
ping_targets="server1 server2 server3 server4 server5"
up_hosts=""
for i in $ping_targets
do
ping -c 1 $i > /dev/null
if [ $? -eq 0 ]; then
if [ "$up_hosts" == "" ]; then
up_hosts="$i"
else
up_hosts="$up_hosts, $i"
fi
fi
done
if [ "$up_hosts" != "" ]; then
echo $up_hosts| mailx -s "ping targets that are now available" email@domain
fi
답변3
fping을 사용하여 여러 서버의 핑을 확인하세요.
fping server{1,2,3,4,5} |& grep -v 'is alive' | mailx -E -s "Failed ping targets" email@domain