ping_hostnames.sh
나는 파일의 IP/호스트 이름 목록을 반복하여 hostnames.txt
핑하는 매우 간단한 스크립트( )를 만들었습니다 .
#!/bin/bash
hostnameCount=`cat hostnames.txt | wc -l`
i=1
while [ $i -le $hostnameCount ]
do
ping -c 3 $(sed -n ${i}p hostnames.txt)
i=$(( i+1 ))
done
그런 다음 이렇게 합니다.
cat file_with_ip_list.txt >> hostnames.txt
이제 hostnames.txt
다음과 같습니다:
192.168.1.0
192.168.1.1
192.168.1.2
192.168.1.3
그런 다음 스크립트( ./ping_hostnames.sh
)를 실행하면 오류가 발생합니다.
: Name or service not known
file_with_ip_list.txt
그러나 텍스트 편집기를 사용하여 데이터를 수동으로 복사/붙여넣으면 hostnames.txt
제대로 작동합니다. 어떤 유형 변환이 진행되고 있습니까 cat
?
답변1
@steeldriver가 댓글에서 이에 대해 답변했습니다. "보이지 않는" CRLF 줄 끝이 문제를 일으켰고, 이제 알고 있으므로 이 문제를 해결하는 데 사용할 수 있는 여러 가지 해결 방법이 있습니다. 또한 내 코드를 개선하는 데 도움을 준 댓글의 다른 사람들에게도 감사드립니다! 비록 BASH의 완전한 초보자는 아니지만, 아직 배워야 할 것이 많습니다!
답변2
이것이 hostname.txt에 작동하는지 확인하세요. 아마도 wc -l
행 수를 1 또는 이와 유사한 것으로 줄이십시오.
for f in $(cat hostnames.txt); do ping -c 3 ${f}; done