서버에서 대용량 Bash 스크립트를 실행하기 전에 해당 서버가 인터넷에 정상적으로 연결되어 있는지 먼저 확인해야 하는 경우가 종종 있습니다. 특히 cron을 통해 주기적으로 스크립트를 자동 실행할 때는 네트워크 상태 점검이 더욱 중요합니다. 아래는 이러한 목적에 딱 맞는 아주 간단한 Bash 스크립트입니다.
#!/bin/bash WGET="/usr/bin/wget" $WGET -q --tries=10 --timeout=5 https://www.google.com -O /tmp/index.google &> /dev/null if [ ! -s /tmp/index.google ];then echo "no" else echo "yes" fi
스크립트 동작 원리
동작 방식은 매우 단순합니다. wget으로 구글(Google) 메인 페이지를 다운로드해 본 뒤, 다운로드된 파일이 비어 있지 않으면 "yes"를 출력하고, 인터넷 연결이 불가능하면 "no"를 출력합니다. 또한 5초 이내에 페이지를 가져오지 못하더라도 역시 "no"를 반환합니다.
여기서 사용된 옵션을 살펴보면 다음과 같습니다.
-q: 조용히(quiet) 모드로 실행하여 불필요한 출력을 줄입니다.--tries=10: 실패 시 최대 10번까지 재시도합니다.--timeout=5: 각 시도마다 5초의 타임아웃을 설정합니다.-O /tmp/index.google: 다운로드 결과를 지정한 임시 파일에 저장합니다.
필요에 따라 확인 대상 URL을 사내 네트워크 주소나 자주 사용하는 서비스 주소로 변경해서 활용할 수도 있습니다. 이 스크립트를 응용하면 cron 작업 실행 전 네트워크 상태를 자동으로 검사하고, 연결이 없을 때 작업을 건너뛰는 식의 안정적인 자동화 환경을 만들 수 있습니다.
추가하고 싶은 내용이나 개선 아이디어가 있다면 언제든지 공유해 주세요! 🙂