이전 포스팅에서는 리눅스 환경에서 APNS(애플 푸시 알림 서비스) 서버의 IP를 확인하고, /etc/hosts 파일 내에 APNS 서버의 도메인에 해당 아이피 주소를 작성하였습니다. 그리고 리눅스의 쉘 스크립트를 통해 현재 설정된 APNS 도메인의 IP를 가져와 화면에 출력하는 예제를 알아보았습니다. 또한 실시간으로 이 /etc/hosts 파일의 APNS 서버 아이피 주소가 변경될 경우 실시간 반영되어 쉘스크립트에서도 해당 아이피를 다르게 출력하였습니다. 만약 리눅스 환경에서 /etc/hosts 에 작성된 도메인의 아이피 주소를 가져오는 방법이 궁금하시다면 아래 링크를 참고해주세요.
다음으로 이전 포스팅에서는 리눅스 우분투 환경에서 chown 명령어를 사용하여 파일의 소유자를 변경하는 예제를 다루고 있습니다. 파일 또는 디렉토리의 소유자를 변경하는 방법과, chown 명령어의 옵션에 대해 자세하게 설명하고 있습니다. 만약 리눅스 환경에서 실행 파일 혹은 텍스트 파일과 같이 파일의 소유권을 변경하는 방법이 궁금하시다면 아래 포스팅을 참고하여 학습해주세요.
2020.07.11 - [Linux/OS] - 리눅스 우분투 파일 소유자 변경(ubuntu, chown, user)
마지막으로 이전 포스팅에서는 리눅스 우분투 환경에서 Tomcat 7를 설치하는 방법에 대한 예제를 다루고 있습니다. Tomcat 7 설치 과정과 설정 방법을 상세히 설명하고 있으며, Java 웹 애플리케이션 서버를 우분투에 설치하는 방법이 포함되어있습니다. 보통은 최신 버전의 톰캣 서버를 설치하지만, 이전 버전도 설치 해야할 때가 있습니다. 만약 리눅스 환경에 톰캣 7 버전 설치가 필요하시다면 아래의 포스팅을 참고하여 학습해주세요.
2020.07.13 - [Linux/Tomcat] - 리눅스 우분투 tomcat 7 설치(Ubuntu, Tomcat, Install)
아래는 쉘스크립트에서 telnet을 이용하여 /etc/hosts 파일에 설정된 APNS 도메인의 IP와의 통신을 테스트하는 예제입니다. 쉘 스크립트를 작성하여 네트워크 통신을 테스트할 수 있습니다. 만약 telnet으로 해당 APNS 서버와 통신이 불가능하다면 Connected 라는 문자열이 출력되지 않습니다.
#!/bin/bash
DOMAIN="api.push.apple.com"
PORT=443
function get_ip_from_hosts() {
local domain=$1
local ip_address=$(awk -v d="$domain" '$2 == d { print $1; exit }' /etc/hosts)
echo "$ip_address"
}
HOSTS_FILE="/etc/hosts"
while true; do
TARGET_HOST=$(get_ip_from_hosts "$DOMAIN")
telnet_result=$(timeout 2 telnet "$TARGET_HOST" "$PORT" 2>&1)
echo "$telnet_result"
sleep 2
done
아래는 리눅스 우분투 환경에서 APNS 아이피 주소를 가진 서버와 telnet 통신 실패 시 메시지를 출력하는 예제입니다. 만약 네트워크 연결이 실패할 경우 사용자에게 메시지를 출력합니다. 이처럼 쉘스크립트에서 특정 아이피를 가진 서버와 통신이 불가능한 경우를 확인할 수 있습니다.
#!/bin/bash
DOMAIN="api.push.apple.com"
PORT=443
function get_ip_from_hosts() {
local domain=$1
local ip_address=$(awk -v d="$domain" '$2 == d { print $1; exit }' /etc/hosts)
echo "$ip_address"
}
HOSTS_FILE="/etc/hosts"
while true; do
TARGET_HOST=$(get_ip_from_hosts "$DOMAIN")
telnet_result=$(timeout 2 telnet "$TARGET_HOST" "$PORT" 2>&1)
if ! echo "$telnet_result" | grep -q "connected"; then
echo "Failed to connect to $TARGET_HOST:$PORT. Trying other IPs in the subnet..."
else
echo "Connection to $TARGET_HOST:$PORT successful."
fi
sleep 2
done