#!/bin/bash
repo="/etc/yum.repos.d/epel-7.repo"
if [ ! -e $repo ]; then # -e 判斷檔案存在;參考:Shell if 條件判斷檔案或目錄
yum install -y wget
cd /etc/yum.repos.d/
mkdir bak
mv * bak
wget http://mirrors.aliyun.com/repo/Centos-7.repo
wget http://mirrors.aliyun.com/repo/epel-7.repo
# 移動兩個檔案到 目錄
#wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
#sed -i 's/$releasever/7/g' /etc/yum.repos.d/CentOS-Base.repo
# yum源沒有對應版本包比對;修改yum為centos7
yum clean all # 清除原有緩存
yum makecache # 生成新的緩存
# make cache [meɪk] [kaʃ] 制作 緩存{ka xi}
yum list # 校驗yum
cd
else
echo "yum已經切換"
fi
############### 安裝 vnc ##############
yum groupinstall -y "GNOME Desktop" # 安裝GNOME Desktop圖形桌面服務
yum install -y tigervnc-server # 安裝vnc
systemctl get-default # 檢視系統運作模式
systemctl set-default graphical.target # 切換到桌面模式運作
init 5 # 啟動桌面模式
ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
# 設定桌面運作模式為預設啟動模式
cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:1.service
# 設定vnc用systemctl來管理(第一個使用者vncserver@:1.service,第二個使用者vncserver@:2.service,其他以此類推)
vncset="/etc/systemd/system/vncserver@:1.service.back"
if [ ! -e $vncset ]; then
echo "正在備份檔案" ; cp /etc/systemd/system/vncserver@:1.service /etc/systemd/system/vncserver@:1.service.back
else
echo "備份檔案存在"
fi
cat /dev/null > /etc/systemd/system/vncserver@:1.service
cat > /etc/systemd/system/vncserver@:1.service << "EOF"
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/sbin/runuser -l root -c "/usr/bin/vncserver %i"
PIDFile=/root/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
[Install]
WantedBy=multi-user.target
EOF
# 修改vnc使用者為root(其他系統使用者也可以這樣改)
systemctl daemon-reload # 重新整理systemctl
echo "設定vnc密碼(第二個使用者修改密碼,vncpasswd user2,其他以此類推)"
vncpasswd
vncset="/etc/sysconfig/vncservers"
if [ ! -e $vncset ]; then
echo "正在備份檔案" ; cp /etc/sysconfig/vncservers /etc/sysconfig/vncservers.back
else
echo "備份檔案存在"
fi
cat /dev/null > /etc/sysconfig/vncservers
cat > /etc/sysconfig/vncservers <<"EOF"
VNCSERVERS="1:root"
VNCSERVERARGS[1]="-geometry 1024x768 -BlacklistTimeout 0"
EOF
# 修改vnc黑名單限制,否則會出現vnc用戶端連接配接不上的情況(/etc/sysconfig/vncservers)
firewall-cmd --zone=public --add-port=5901/tcp --permanent
# 防火牆放行端口(vnc端口第一個使用者5901,建立第二個使用者5902,其他以此類推)
firewall-cmd --add-service vnc-server # 防火牆放行vnc服務
firewall-cmd --reload # 放行好端口和服務,重新開機防火牆才能生效
firewall-cmd --list-port # 檢視端口是否放行成功
systemctl daemon-reload # 重新整理
systemctl start vncserver@:1.service # 啟動vnc
#啟動,關閉,重新開機vnc
#systemctl start vncserver@:1.service #啟動
#systemctl stop vncserver@:1.service #關閉
#systemctl restart vncserver@:1.service #重新開機