linux一键安装vncserver脚本
title: linux一键安装vncserver脚本
date: 2016-04-11 14:32:04
tags:
linux多数情况下是作为服务器使用的,管理员一般也喜欢使用命令行来管理服务器,所以服务器往往都没有配备显示器及输入输出设备,但有时候还是会用到Linux桌面,所以发一下这个脚本,希望可以帮助到有用的同学。
#!/bin/bash
#########################################
#Function: install vnc server
#Usage: bash install_vnc_server.sh
#Author: Customer service department
#Company: Alibaba Cloud Computing
#Version: 3.0
#########################################
check_os_release()
{
while true
do
os_release=$(grep "Red Hat Enterprise Linux Server release" /etc/issue 2>/dev/null)
os_release_2=$(grep "Red Hat Enterprise Linux Server release" /etc/redhat-release 2>/dev/null)
if [ "$os_release" ] && [ "$os_release_2" ]
then
if echo "$os_release"|grep "release 5" >/dev/null 2>&1
then
os_release=redhat5
echo "$os_release"
elif echo "$os_release"|grep "release 6" >/dev/null 2>&1
then
os_release=redhat6
echo "$os_release"
else
os_release=""
echo "$os_release"
fi
break
fi
os_release=$(grep "Aliyun Linux release" /etc/issue 2>/dev/null)
os_release_2=$(grep "Aliyun Linux release" /etc/aliyun-release 2>/dev/null)
if [ "$os_release" ] && [ "$os_release_2" ]
then
if echo "$os_release"|grep "release 5" >/dev/null 2>&1
then
os_release=aliyun5
echo "$os_release"
elif echo "$os_release"|grep "release 6" >/dev/null 2>&1
then
os_release=aliyun6
echo "$os_release"
elif echo "$os_release"|grep "release 7" >/dev/null 2>&1
then
os_release=aliyun7
echo "$os_release"
else
os_release=""
echo "$os_release"
fi
break
fi
os_release_2=$(grep "CentOS" /etc/*release 2>/dev/null)
if [ "$os_release_2" ]
then
if echo "$os_release_2"|grep "release 5" >/dev/null 2>&1
then
os_release=centos5
echo "$os_release"
elif echo "$os_release_2"|grep "release 6" >/dev/null 2>&1
then
os_release=centos6
echo "$os_release"
elif echo "$os_release_2"|grep "release 7" >/dev/null 2>&1
then
os_release=centos7
echo "$os_release"
else
os_release=""
echo "$os_release"
fi
break
fi
os_release=$(grep -i "ubuntu" /etc/issue 2>/dev/null)
os_release_2=$(grep -i "ubuntu" /etc/lsb-release 2>/dev/null)
if [ "$os_release" ] && [ "$os_release_2" ]
then
if echo "$os_release"|grep "Ubuntu 10" >/dev/null 2>&1
then
os_release=ubuntu10
echo "$os_release"
elif echo "$os_release"|grep "Ubuntu 12.04" >/dev/null 2>&1
then
os_release=ubuntu1204
echo "$os_release"
elif echo "$os_release"|grep "Ubuntu 12.10" >/dev/null 2>&1
then
os_release=ubuntu1210
echo "$os_release"
elif echo "$os_release"|grep "Ubuntu 14.04" >/dev/null 2>&1
then
os_release=ubuntu1204
echo "$os_release"
else
os_release=""
echo "$os_release"
fi
break
fi
os_release=$(grep -i "debian" /etc/issue 2>/dev/null)
os_release_2=$(grep -i "debian" /proc/version 2>/dev/null)
if [ "$os_release" ] && [ "$os_release_2" ]
then
if echo "$os_release"|grep "Linux 6" >/dev/null 2>&1
then
os_release=debian6
echo "$os_release"
elif echo "$os_release"|grep "Linux 7" >/dev/null 2>&1
then
os_release=debian7
echo "$os_release"
else
os_release=""
echo "$os_release"
fi
break
fi
break
done
}
exit_script()
{
echo -e "\033[1;40;31mInstall $1 error,will exit.\n\033[0m"
rm -f $LOCKfile
exit 1
}
update_source()
{
wget "http://oss.aliyuncs.com/aliyunecs/update_source.tgz?spm=5176.7150518.1996836753.5.67nzlg&file=update_source.tgz" -O update_source.tgz
tar -zxvf update_source.tgz
bash update_source.sh
}
rhel5_vnc_config()
{
cat >$vnc_xstartup_config<<EOF
#!/bin/sh
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r \$HOME/.Xresources ] && xrdb \$HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "\$VNCDESKTOP Desktop" &
#twm &
gnome-session &
EOF
cat >$vnc_sysconfig_vncservers<<EOF
# The VNCSERVERS variable is a list of display:user pairs.
#
# Uncomment the lines below to start a VNC server on display :2
# as my 'myusername' (adjust this to your own). You will also
# need to set a VNC password; run 'man vncpasswd' to see how
# to do that.
#
# DO NOT RUN THIS SERVICE if your local area network is
# untrusted! For a secure way of using VNC, see
# <URL:http://www.uk.research.att.com/archive/vnc/sshvnc.html>.
# Use "-nolisten tcp" to prevent X connections to your VNC server via TCP.
# Use "-nohttpd" to prevent web-based VNC clients connecting.
# Use "-localhost" to prevent remote VNC clients connecting except when
# doing so through a secure tunnel. See the "-via" option in the
# 'man vncviewer' manual page.
# VNCSERVERS="2:myusername"
# VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -nohttpd -localhost"
VNCSERVERS="1:root"
EOF
}
check_selinux_config()
{
if grep "SELINUX=enforcing" $selinux_config >/dev/null 2>&1
then
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' $selinux_config
fi
}
centos5_install_vnc_server()
{
if [ "$1" == "redhat5" ]
then
if rpm -qa|grep redhat-logos >/dev/null 2>&1
then
yum remove $(rpm -qa|grep redhat-logos) -y
fi
fi
if yum grouplist "GNOME Desktop Environment"|grep "Available" >/dev/null 2>&1
then
if ! yum groupinstall "GNOME Desktop Environment" -y
then
exit_script "GNOME Desktop Environment"
fi
fi
if ! rpm -q vnc-server >/dev/null 2>&1
then
if ! yum install vnc-server -y
then
exit_script vnc-server
fi
vncserver <<EOF
$password
$password
EOF
else
vncpasswd <<EOF
$password
$password
EOF
fi
vncserver -kill :1
service vncserver stop
service pcscd stop
chkconfig --del pcscd
yum remove esc -y
rhel5_vnc_config
chmod 755 $vnc_xstartup_config
chkconfig --level 345 vncserver on
service NetworkManager stop
chkconfig --del NetworkManager
check_selinux_config
sleep 20
service vncserver start
}
centos6_install_vnc_server()
{
if yum grouplist "X Window System"|grep "Available" >/dev/null 2>&1
then
if ! yum groupinstall "X Window System" -y
then
exit_script "X Window System"
fi
fi
if yum grouplist "Desktop"|grep "Available" >/dev/null 2>&1
then
if ! yum groupinstall "Desktop" -y
then
exit_script Desktop
fi
fi
if yum grouplist "Chinese Support"|grep "Available" >/dev/null 2>&1
then
if ! yum groupinstall "Chinese Support" -y
then
exit_script "Chinese Support"
fi
fi
if ! rpm -q tigervnc-server >/dev/null 2>&1
then
if ! yum install tigervnc-server -y
then
exit_script tigervnc-server
fi
vncserver <<EOF
$password
$password
EOF
else
vncpasswd <<EOF
$password
$password
EOF
fi
vncserver -kill :1
service vncserver stop
service pcscd stop
chkconfig --del pcscd
yum remove esc -y
sed -i 's/.*!= root.*/#&/' /etc/pam.d/gdm
dbus-uuidgen >/var/lib/dbus/machine-id
rhel5_vnc_config
chmod 755 $vnc_xstartup_config
chkconfig --level 345 vncserver on
service NetworkManager stop
chkconfig --del NetworkManager
sleep 20
service vncserver start
check_selinux_config
}
centos7_install_vnc_server()
{
if ! yum groupinstall "GNOME Desktop" "Graphical Administration Tools" -y
then
exit_script "NOME Desktop Graphical Administration Tools"
fi
if ! yum install tigervnc-server -y
then
exit_script "tigervnc-server"
fi
cp /lib/systemd/system/vncserver@.service /lib/systemd/system/vncserver@\:1.service
sed -i 's/%i/:1/g' /lib/systemd/system/vncserver@\:1.service
sed -i 's/<USER>/root/g' /lib/systemd/system/vncserver@\:1.service
sed -i 's/home\/root/root/g' /lib/systemd/system/vncserver@\:1.service
vncpasswd <<EOF
$password
$password
EOF
systemctl enable vncserver@:1.service
systemctl start vncserver@:1.service
systemctl status vncserver@:1.service
systemctl disable initial-setup-text.service
}
ubuntu_install_vnc_server()
{
if ! dpkg -s lxde >/dev/null 2>&1
then
if ! apt-get install lxde -y --force-yes --fix-missing
then
exit_script lxde
fi
fi
if ! dpkg -s ttf-arphic-uming >/dev/null 2>&1
then
if ! apt-get install ttf-arphic-uming -y --force-yes --fix-missing
then
exit_script ttf-arphic-uming
fi
fi
if ! dpkg -s vnc4server >/dev/null 2>&1
then
if ! apt-get install vnc4server -y --force-yes --fix-missing
then
exit_script vnc4server
fi
vncserver <<EOF
$password
$password
EOF
else
vncpasswd <<EOF
$password
$password
EOF
fi
vncserver -kill :1
sed -i 's/x-window-manager \&/startlxde \&/' $vnc_xstartup_config
sed -i '/vncserver/d' $rc_local
sed -i 's/^exit 0$/su root \-c "\/usr\/bin\/vncserver \-name my-vnc-server \-geometry 1280x800 \:1"\nexit 0/' $rc_local
sleep 5
vncserver
}
####################Start###################
#check lock file ,one time only let the script run one time
LOCKfile=/tmp/.$(basename $0)
if [ -f "$LOCKfile" ]
then
echo -e "\033[1;40;31mThe script is already exist,please next time to run this script.\n\033[0m"
exit
else
echo -e "\033[40;32mStep 1.No lock file,begin to create lock file and continue.\n\033[40;37m"
touch $LOCKfile
fi
#check user
if [ $(id -u) != "0" ]
then
echo -e "\033[1;40;31mError: You must be root to run this script, please use root to install this script.\n\033[0m"
rm -f $LOCKfile
exit 1
fi
vnc_xstartup_config=/root/.vnc/xstartup
vnc_sysconfig_vncservers=/etc/sysconfig/vncservers
selinux_config=/etc/selinux/config
rc_local=/etc/rc.local
password=$(cat /dev/urandom | head -1 | md5sum | head -c 6)
echo -e "\033[40;32mStep 2.Begen to check the OS issue.\n\033[40;37m"
os_release=$(check_os_release)
if [ "X$os_release" == "X" ]
then
echo -e "\033[1;40;31mThe OS does not identify,So this script is not executede.\n\033[0m"
rm -f $LOCKfile
exit 0
else
echo -e "\033[40;32mThis OS is $os_release.\n\033[40;37m"
fi
echo -e "\033[40;32mStep 3.Begen to modify the source configration file and update.\n\033[40;37m"
update_source
echo -e "\033[40;32mStep 4.Begen to check and install vnc server.\n\033[40;37m"
case "$os_release" in
redhat5|centos5|aliyun5)
centos5_install_vnc_server $os_release
;;
redhat6|centos6|aliyun6)
centos6_install_vnc_server
;;
centos7)
centos7_install_vnc_server
;;
ubuntu10|ubuntu1204|ubuntu1210|debian6)
ubuntu_install_vnc_server
;;
esac
echo -e "\033[40;32mInstall success.The vnc password is \"$password\",this script now exit!\n\033[40;37m"
rm -f $LOCKfile
linux一键安装vncserver脚本的更多相关文章
- linux一键安装nginx脚本
#!/bin/sh echo "----------------------------------start install nginx ------------------------- ...
- linux一键安装php脚本
#!/bin/sh echo "----------------------------------start install php --------------------------- ...
- linux一键安装mysql脚本
#!/bin/sh if [ -s /etc/my.cnf ];then rm -rf /etc/my.cnf fi echo "------------------------------ ...
- 禅道Linux一键安装版
禅道Linux一键安装版 Linux一键安装包内置了apache, php, mysql这些应用程序,只需要下载解压缩即可运行禅道.从7.3版本开始,linux一键安装包分为32位和64位两个包,大家 ...
- Rehat一键安装mysql脚本和备份数据库脚本
Rehat一键安装mysql脚本 ##说明:适用,Rehat 5 6 7 1.运行状态,运行成功输出mysql临时密码 2.代码如下 #!/bin/bash #获取系统信息 sudo cat /etc ...
- Linux一键安装宝塔控制面板
Linux一键安装宝塔的命令行 yum install -y wget && wget -O install.sh http://download.bt.cn/install/inst ...
- (转)CentOS一键安装Nginx脚本
原文:https://www.xiaoz.me/archives/10301 https://blog.slogra.com/post-676.html-----centos7一键安装nginx脚本
- Linux一键安装web环境全攻略phpstudy版
此教程主要是应对阿里云Linux云服务器ecs的web环境安装,理论上不限于阿里云服务器,此教程对所有Linux云服务器都具有参考价值. 写这篇文章的目的:网上有很多关于Linux一键安装web环境全 ...
- Linux一键安装LNMP环境
Linux一键安装LNMP环境 官方地址:https://lnmp.org/. 参考安装步骤:https://lnmp.org/install.html. 一键安装可以选择mysql版本.php版本, ...
随机推荐
- VIM打开文件与保存文件
打开文件 VIM /etc/inittab 默认的安装没有设置ctrl_W为退出.也可以设置::map <C-W> :close<CR> 或:map <C-W> : ...
- JavaScript 函数作用域和闭包
函数作用域和闭包 词法作用域 它们在定义它们的作用域里运行,而不是在执行的作用域运行,但是只有在运行时,作用域链中的属性才被 定义(调用对象),此时,可访问任何当前的绑定. 调用对象 ...
- JavaScript 显示弹出窗口
window . showModalDialog ( sURL,vArguments , sFeatures )参数说明: sURL--必选参数,用来指定对话框要显示的文档的URL. //要显示页面的 ...
- 自定义异常throw
简单自定义一个年龄小于等于0,或者大于120会出现的异常 首先继承父类Exception,调用父类的构造器,这样才可以报出自己想要的异常 public class AgeException exten ...
- VS2013 编译 MySql Connector C 6.1.6
1.下载cmake http://cmake.org/ 2.下载最新版MySql Connector C http://www.mysql.com 3.命令行下,转到源代码目录下,"cmak ...
- windows Server 2003修改远程连接限制
调整最大远程连接数: 1.开始->控制面板->添加或删除程序->添加/删除windows组件->选择“终端服务器”进行安装. 2.开始->运行->gpedit.ms ...
- nginx_笔记分享_配置篇
参考http://www.howtocn.org/nginx:directiveindexhttp://blog.s135.com/ nginx 配置文档为 nginx.conf 比如我的配置文档 / ...
- C++Primer charpter1.
一.输入输出流 endl:会刷新buffer.刷新之后你才能看到.不手动用endl的话,就只能依靠系统自动刷.程序崩溃的话,你看到的调试信息可能是错误的. >>: 两个连续的符号 ci ...
- C程序设计语言练习题1-22
练习1-22 编写一个程序,把较长的输入行”折“成短一些的两行或多行,折行的位置在输入行的第n列之前的最后一个非空格之后.要保证程序能够智能地处理输入行很长以及在制定的列前没有空格或制表符时的情况. ...
- 转:基于开源项目OpenCV的人脸识别Demo版整理(不仅可以识别人脸,还可以识别眼睛鼻子嘴等)【模式识别中的翘楚】
文章来自于:http://blog.renren.com/share/246648717/8171467499 基于开源项目OpenCV的人脸识别Demo版整理(不仅可以识别人脸,还可以识别眼睛鼻子嘴 ...