저는 Bash를 처음 접했고 다음을 수행하는 간단한 스크립트를 작성하는 방법을 이해하지 못합니다.
스크립트는 내가 가지고 있는 공용 IP를 확인해야 하며 IP가 변경되면(ISP1이 다운되거나 ISP1이 이전에 발생한 다른 고정 IP를 제공하는 경우) 스크립트는 OpenVPN 서버를 중지하고 원격 서버에 대한 OpenVPN 클라이언트를 시작해야 합니다. .
이제 내가 이해하고 쓸 수 있는 것은 다음과 같습니다.
#!/bin/bash
myip="XXX.XXX.XXX.XXX"
checkip="$(dig +short myip.opendns.com @resolver1.opendns.com)"
if [ "$checkip" = "$myip" ]; then
/etc/init.d/openvpn.server start
/etc/init.d/openvpn.client stop
else
/etc/init.d/openvpn server stop
/etc/init.d/openvpn.client start
fi
이 스크립트를 반복하여 10초마다 IP를 확인하고 이를 젠투에 추가하여 서비스로 실행하는 방법을 이해하지 못합니다.
답변1
무한 while 루프를 사용하여 계속 확인하는 방법은 다음과 같습니다.
#!/bin/bash
myip="XXX.XXX.XXX.XXX"
while; do
checkip="$(dig +short myip.opendns.com @resolver1.opendns.com)"
if [ "$checkip" = "$myip" ]; then
/etc/init.d/openvpn.server start
/etc/init.d/openvpn.client stop
else
/etc/init.d/openvpn server stop
/etc/init.d/openvpn.client start
fi
sleep 10
done
sleep 10
루프가 끝나면 루프를 다시 시작하기 전에 10초 동안 일시 중지됩니다.
이것이 달성하려는 작업을 처리하는 가장 좋은 방법인지 확신할 수 없으므로 다른 방법을 고려해 보는 것이 좋습니다.