![여러 주소를 통해 반복: ping을 수행하고 데이터를 파일에 넣습니다.](https://linux55.com/image/33220/%EC%97%AC%EB%9F%AC%20%EC%A3%BC%EC%86%8C%EB%A5%BC%20%ED%86%B5%ED%95%B4%20%EB%B0%98%EB%B3%B5%3A%20ping%EC%9D%84%20%EC%88%98%ED%96%89%ED%95%98%EA%B3%A0%20%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC%20%ED%8C%8C%EC%9D%BC%EC%97%90%20%EB%84%A3%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
나는 스크립트를 갖고 싶습니다 :
- IP 주소 목록 보기
- 핑 주소 중 하나
- 데이터를 가져와서 파일에 넣기
- 다음 IP로 이동
지금까지 나는 다음을 가지고 있습니다 :
cd /Path/to/addressees || exit 1
for targethost in a b c; do
{ping {targethost}
echo $'\n'"finished:
} >"$log_file" 2>&1
done
이것을 실행하면 오류가 발생합니다.
./ping_address: line 3: cd: /path/to/ip_adress: No such file or directory
./ping_address: line 7: unexpected EOF while looking for matching `"'
./ping_address: line 8: syntax error: unexpected end of file
저는 아직 Unix 스크립팅에 익숙하지 않기 때문에 어떤 도움이라도 큰 도움이 될 것입니다!
답변1
몇 가지:
- 파일에 CD를 넣을 수 없습니다(테스트를 사용하여
-f
파일이 존재하는지 확인할 수 있습니다. 아래 참조). - "ab c"를 사용했는지 잘 모르겠습니다. 이 변수에는 주소가 포함되어야 합니까? 귀하의 주소가 스크립트에 포함되어 있는지, 아니면 파일에 저장되어 있는지는 확실하지 않습니다.
- 일반적으로 변수를 참조하려면 $가 필요하며(즉,
${targethost}
$가 아님targethost
)$
할당할 때 생략됩니다.
그렇지 않은 이유는 무엇입니까(ip_addresses라는 파일이 있고 한 줄에 하나의 주소가 있거나 공백으로 구분된 주소가 있다고 가정).
#!/bin/bash
IP_FILE="/tmp/ip_address_file" # The file with the IP addresses
LOGFILE="/tmp/log_results" # Where the results will be stored
if [[ ! -f ${IP_FILE} ]]; then
echo "No File!"
exit 1
fi
for IP_ADDRESS in $(cat $IP_FILE); do
echo "TEST FOR ${IP_ADDRESS}" >> $LOGFILE
# The -c 1 means send one packet, and the -t 1 means a 1 second timeout
ping -c 1 -t 1 ${IP_ADDRESS} >> $LOGFILE 2>&1
done
또는 각 IP에 대한 파일을 생성하려면 다음을 사용할 수 있습니다.
#!/bin/bash
IP_FILE="/tmp/ip_address_file" # The file with the IP addresses
if [[ ! -f ${IP_FILE} ]]; then
echo "No File!"
exit 1
fi
for IP_ADDRESS in $(cat $IP_FILE); do
echo "TEST FOR ${IP_ADDRESS}"
# The -c 1 means send one packet, and the -t 1 means a 1 second timeout
ping -c 1 -t 1 ${IP_ADDRESS} >> ${IP_ADDRESS}.log 2>&1
done
스크립트에 IP를 포함시키려면 다음을 수행하십시오.
#!/bin/bash
IPS='1.1.1.1 2.2.2.2 3.3.3.3 4.4.4.4 5.5.5.5'
if [[ ! -f ${IP_FILE} ]]; then
echo "No File!"
exit 1
fi
for IP_ADDRESS in ${IPS}; do
echo "TEST FOR ${IP_ADDRESS}"
# The -c 1 means send one packet, and the -t 1 means a 1 second timeout
ping -c 1 -t 1 ${IP_ADDRESS} >> ${IP_ADDRESS}.log 2>&1
done
답변2
이보다 더 분명한 것은 없습니다:
/path/to/ip_adress
이 디렉터리는 스크립트를 실행하기 전에 생성되어야 합니다."finished:
끝에 "가 없습니다.- 세 번째 오류는 단순히 두 번째 오류의 결과입니다.