시스템에서 사용되는 방화벽 서비스에 맞춰 포트를 Open 해주는 스크립트입니다.
아래에서 [포트]만 실제 희망 포트로 변경하여 사용하면 됩니다.
#!/bin/bash
while true; do
# 포트 번호 입력 요청
echo -n "포트 번호를 입력하세요 (0-65535): "
read PORT
# 포트 번호 유효성 검증
if [[ "$PORT" =~ ^[0-9]+$ ]] && [ "$PORT" -ge 0 ] && [ "$PORT" -le 65535 ]; then
echo "유효한 포트 번호: $PORT"
break
else
echo "유효하지 않은 입력입니다. 0-65535 범위의 숫자를 입력하세요."
fi
done
if command -v firewall-cmd >/dev/null 2>&1 && systemctl is-active --quiet firewalld >/dev/null 2>&1; then
firewall-cmd --zone=public --permanent --add-port=$PORT/tcp
if [ $? -ne 0 ]; then
echo "firewalld rule add fail"
exit 1
else
firewall-cmd --reload
echo "added firewalld rule"
fi
elif command -v iptables >/dev/null 2>&1 && service iptables status >/dev/null 2>&1; then
IPTABLES_PATH="/etc/sysconfig/iptables"
IPTABLES_FIND="-A INPUT -i lo -j ACCEPT"
IPTABLES_RULE="-A INPUT -p tcp --dport $PORT -j ACCEPT"
if ! grep -qF -- "$IPTABLES_RULE" "$IPTABLES_PATH"; then
sed -i "/$IPTABLES_FIND/a $IPTABLES_RULE" "$IPTABLES_PATH"
if [ $? -ne 0 ]; then
echo "iptables rule add failed"
exit 1
else
service iptables reload
echo "added iptables rule"
fi
fi
elif command -v ufw >/dev/null 2>&1 && systemctl is-active --quiet ufw >/dev/null 2>&1; then
ufw allow $PORT/tcp
if [ $? -ne 0 ]; then
echo "ufw rule add failed"
exit 1
else
echo "added ufw rule"
fi
else
echo "no firewall"
fi