diff --git a/connect-vpn/action.yml b/connect-vpn/action.yml index bddf7fa..88139cf 100644 --- a/connect-vpn/action.yml +++ b/connect-vpn/action.yml @@ -164,17 +164,26 @@ runs: echo "VPN 연결 시도: ${VPN_HOST} (user=${VPN_USER}, otp-mode=${OTP_MODE})" # 참고: f5fpc 플래그는 클라이언트 버전마다 다를 수 있음 (`f5fpc --help`로 확인). - # 비대화식 실행을 위해 --nogui/--nocheck 사용. - $SUDO f5fpc --start \ + # 이 클라이언트의 비동기 실행 옵션은 --nonblock이며, --nogui는 지원되지 않는 버전이 있음. + if ! $SUDO f5fpc --start \ --host "$VPN_HOST" \ --user "$VPN_USER" \ --password "$PASSFIELD" \ - --nocheck --nogui || true + --nocheck --nonblock; then + echo "VPN 시작 명령 실패. f5fpc --help 출력과 입력값을 확인하세요." + $SUDO f5fpc --info 2>/dev/null || true + exit 1 + fi # 연결은 백그라운드 데몬에서 비동기로 진행 → --info를 폴링해 완료 대기 echo "연결 완료 대기 중 (최대 ${TIMEOUT}초)..." + DISCONNECTED_PATTERN="not connected|Client not connected|Please login|Unable to open message queue|disconnected|로그인" for i in $(seq 1 "$TIMEOUT"); do INFO=$($SUDO f5fpc --info 2>/dev/null || true) + if echo "$INFO" | grep -Eqi "$DISCONNECTED_PATTERN"; then + sleep 1 + continue + fi if echo "$INFO" | grep -Eqi "$CONNECTED_PATTERN"; then echo "VPN 연결 완료" echo "$INFO"