VNC 자동시작 스크립트 설명

DISPLAY_NUM은 사용자의 UID를 수집하여 해당 번호로 VNC를 실행 시키며, VNC 비밀번호를 별도로 설정한적 없다면 기본적으로 “p@ssw0rd”으로 설정되게 됩니다.

해당 스크립트를 제작하여 chmod 755 권한으로 설정한 뒤 사용자들의 corntab에 * * * * * /bin/bash /ServerPath/VNC_Auto_Start.sh 이렇게 등록하면 1분 간격으로 실행중인지 아닌지 확인하여 자동으로 시작하게 만들어 줍니다.

# 사용자의 사용쉘 환경이 bash가 아닐 경우 아래의 예시처럼 SHELL를 지정한 후 그 아래에 스크립트를 지정해주세요.

SHELL=/bin/tcsh
* * * * * /bin/bash /ServerPath/VNC_Auto_Start.sh

 

VNC 자동시작 스크립트(한글버전)

#!/bin/bash


# 디스플레이 번호와 해상도 설정
DISPLAY_NUM=`id -u $USER | tail -c 4 | head -c 3 | awk '{print int($0)}'`
GEOMETRY="3840x1080"


# xstartup 파일의 위치 설정
XSTARTUP_FILE="/ServerConfigFile/xstartup"


# VNC 비밀번호 설정
VNC_PASSWORD="p@ssw0rd"


# VNC 프로세스가 실행 중인지 확인
if pgrep -u $USER -x "Xvnc" > /dev/null; then
  echo "VNC 서버는 이미 사용자 $USER에 대해 실행 중입니다."
else
  # 만약 VNC 프로세스가 실행 중이 아니라면 시작
  echo "VNC 서버 시작 중..."


  # 비밀번호가 설정되어 있는지 확인
  if ! [ -f "$HOME/.vnc/passwd" ]; then
    # 비밀번호가 설정되어 있지 않다면 자동으로 설정
    echo "VNC 비밀번호 설정 중..."
    expect -c "
      set timeout 10
      spawn vncpasswd
      expect \"Password:\"
      send \"$VNC_PASSWORD\n\"
      expect \"Verify:\"
      send \"$VNC_PASSWORD\n\"
      expect \"Would you like to enter a view-only password (y/n)?\"
      send \"n\n\"
      expect eof
    "
  fi


  # VNC 서버 시작
  vncserver :$DISPLAY_NUM -depth 24 -geometry $GEOMETRY -xstartup $XSTARTUP_FILE -nolisten tcp
fi

 

VNC 자동시작 스크립트(영문버전)

#!/bin/bash


# Set the display number and geometry
DISPLAY_NUM=`id -u $USER | tail -c 4 | head -c 3 | awk '{print int($0)}'`
GEOMETRY="3840x1080"


# Set the location of the xstartup file
XSTARTUP_FILE="/ServerConfigFile/xstartup"


# Set the VNC password
VNC_PASSWORD="p@ssw0rd"


# Check if the VNC process is running
if pgrep -u $USER -x "Xvnc" > /dev/null; then
  echo "VNC is already running for user $USER."
else
  # If the VNC process is not running, start it
  echo "Starting VNC server..."


  # Check if a password has been set
  if ! [ -f "$HOME/.vnc/passwd" ]; then
    # If a password has not been set, set one automatically
    echo "Setting VNC password..."
    expect -c "
      set timeout 10
      spawn vncpasswd
      expect \"Password:\"
      send \"$VNC_PASSWORD\n\"
      expect \"Verify:\"
      send \"$VNC_PASSWORD\n\"
      expect \"Would you like to enter a view-only password (y/n)?\"
      send \"n\n\"
      expect eof
    "
  fi


  # Start the VNC server
  vncserver :$DISPLAY_NUM -depth 24 -geometry $GEOMETRY -xstartup $XSTARTUP_FILE -nolisten tcp
fi