서버가 4개 있는데 서로 핑을 보내고 싶습니다.
예상 실행 ping
:
ping from 1 to 2, 3, and 4
ping from 2 to 1, 3, and 4
ping from 3 to 1, 2, and 4
ping from 4 to 1, 2, and 3
스크립트를 통해 어떻게 bash
이를 달성 할 수 있나요?
4개 서버 모두에 대한 사용자 로그인은 비밀번호가 없도록 구성되었습니다.
답변1
그렇게 적은 수의 시스템을 모니터링하려면옌핑스크립트로 바퀴를 재발명하는 대신.
이는 더 많은 시각적 피드백, 시간 경과에 따른 평균 기록 데이터, 심지어는 다른 서비스와 잘 수행된 작업을 다른 사람들에게 보여주는 전문적인 모양과 느낌까지 제공할 것입니다. 사람들과 PHB는 시각적 피드백을 통해 사물을 모니터링하는 것을 좋아합니다.
실제로 저는 과거에 위성 인터넷 연결이 안정적이지 않았을 때 인프라의 주요 지점을 모니터링하는 데 이를 사용했습니다.
구성은 작은 텍스트 파일로 이루어지며 새 IP 주소를 쉽게 추가할 수 있으며 멋진 웹 인터페이스도 있습니다. 이를 위해서는 경량 웹 서버를 설치하기만 하면 됩니다.
ICMP/ping을 통해 모니터링할 수 없는 거의 모든 것을 모니터링할 수 있으며, 이 4개의 서버 외에도 다른 주요 장치도 모니터링할 수 있습니다.
인터페이스 작동 방식을 이해하려면 다음을 참조하세요.대학 밖의 세계로 연결되는 흡연 인터페이스
샘플 이미지도 참조하세요.
웹 서버와 Smokeping을 설치한 후 실제 구성 파일은 다음과 같이 간단할 수 있습니다.
*** Targets ***
probe = FPing
menu = Top
title = Network Latency Grapher
remark = Welcome to this SmokePing website.
+ mysite1
menu = Site 1
title = Hosts in Site 1
++ myhost1
host = myhost1.mysite1.example
++ myhost2
host = myhost2.mysite1.example
+ mysite2
menu = Site 2
title = Hosts in Site 2
++ myhost3
host = myhost3.mysite2.example
++ myhost4
host = myhost4.mysite2.example
답변2
이름을 배열에 저장하고 반복한 다음 ssh
ping을 사용하여 각 호스트에 연결합니다.
ips=("server1" "server2" "server3" "server4");
for((i=0;i<${#ips[@]};i++)); do
for((k=0;k<${#ips[@]};k++)); do
[[ $i -ne $k ]] && ssh "${ips[$i]}" ping -c1 "${ips[$k]}";
done
done
답변3
fping
설치 하셨나요 ? 이렇게 하면 다음과 같은 작업이 더 쉬워질 수 있습니다.
$ hosts="www smtp"
$ for host in $hosts ; do
echo "$host:";
ssh iv@$host "fping $hosts";
done
www:
www is alive
smtp is alive
smtp:
www is alive
smtp is alive
(나는 이것이 게으른 해결책이라는 것을 안다.)
답변4
귀하의 요구 사항에 완벽하게 맞습니다.
server1에 로그인하고 server2와 server3만 ping하며 그 반대의 경우도 마찬가지입니다.
#!/bin/bash
while read line
do
ssh root@$line "sed "/$line/d" /root/p_final.txt |sed '/^$/d' | sed -r "s/\s+//g"|awk '{print $1}' | sed 's/^/ping -c2 /g'| sh" </dev/null
done </root/p_final.txt
p_final.txt 파일에는 일대일 IP 목록이 포함되어 있습니다. 질문이 있으시면 알려주세요.