Deepin15 Professional系統(tǒng)初始化Shell腳本

2018年7月18日14:26:39 發(fā)表評(píng)論 3,606 ℃
#!/bin/bash
#Name:init.sh
#Author:amd5.cn
#Version:Deepin 15 Professional
#Datetime: 2017-09-13 
#Usage: sudo bash init.sh (weixin|qq)
#定義顏色
SCREEN=`stty -F /dev/console size 2>/dev/null`
COLUMNS=${SCREEN#* }
[ -z $COLUMNS ]&& COLUMNS=240
SPA_COL=$[$COLUMNS-230]
RED='\033[35m'
BLUE='\033[36m'
REDS='\033[1;31m'
GREEN='\033[37m'
BLUES='\033[34m'
END='\033[0m'
success(){
  string=$1
  RT_SPA=$[$SPA_COL-${#string}]
  echo -en $string
  for i in `seq 1 $RT_SPA`;do
    echo -n " "
  done
    echo -e "[${BLUES}${2}${END}]"
}
ok(){
  string=$1
  RT_SPA=$[$SPA_COL-${#string}]
  echo -en $string
  for i in `seq 1 $RT_SPA`;do
    echo -n " "
  done
    echo -e "[${GREEN}${2}${END}]"
}
failde(){
  string=$1
  RT_SPA=$[$SPA_COL-${#string}]
  echo -en $string
  for i in `seq 1 $RT_SPA`;do
    echo -n " "
  done
    echo -e "[${RED}${2}${END}]"
}
#通用安裝deb軟件包函數(shù):$1=安裝包的名稱(必選),$2=deb包所在目錄(必選)。
install_deb(){
    if [[ $1 == '' ]] || [[ $2 == '' ]];then
        failde 缺少必要的安裝文件 安裝失敗
        return 1
    fi
    if [[ $3 == 'force' ]];then
        if [[ -d "$2" ]];then
echo "軟件:"${BLUE}${1}${END}",開始安裝......"
echo "正在安裝................................................"
            dpkg -i $2/*.deb >/dev/null 2>&1
            if [[ $? -eq 0 ]];then
version=`dpkg -l | grep $1 | awk -F' ' 'NR==1{print $3}'`
success 軟件:${BLUE}${1}${END},版本:${RED}${version}${END} 安裝成功
            else
failde  軟件:${BLUE}${1}${END} 安裝失敗
                return 2
            fi
        else
            failde 安裝包所在的目錄${RED}${2}${END}不存在 安裝失敗
            return 3
        fi
    else
        dpkg --list | grep $1 >/dev/null 2>&1
        if [[ $? -eq 0 ]];then
version=`dpkg -l | grep $1 | awk -F' ' 'NR==1{print $3}'`
ok 軟件:${BLUE}${1}${END},版本:${RED}${version}${END} 已經(jīng)安裝
return 4
        else
            if [[ -d "$2" ]];then
echo -e "軟件:"${BLUE}${1}${END}",開始安裝......"
echo "正在安裝................................................"
                dpkg -i $2/*.deb >/dev/null 2>&1
                if [[ $? -eq 0 ]];then
version=`dpkg -l | grep $1 | awk -F' ' 'NR==1{print $3}'`
success 軟件:${BLUE}${1}${END},版本:${RED}${version}${END} 安裝成功
                else
failde  軟件:${BLUE}${1}${END} 安裝失敗
                    return 2
                fi
            else
failde 安裝包所在的目錄${RED}${2}${END}不存在 安裝失敗
                return 3
            fi
        fi
    fi
    return 0
}
renew_deb(){
    if [[ $1 == '' ]] || [[ $2 == '' ]];then
failde 缺少必要的安裝文件 安裝失敗
        return 1
    elif [[ $3 == 'over' ]];then
        install_deb $1 $2 force
    else
        dpkg --list | grep $1 >/dev/null 2>&1
        if [[ $? -eq 0 ]];then
            echo -e "軟件:"${BLUE}${1}${END}" 已經(jīng)安裝,即將升級(jí)到最新版本。"
echo "正在卸載................................................"
            dpkg -P $1 >/dev/null 2>&1
            if [[ $? -eq 0 ]];then
success 軟件:${BLUE}${1}${END} 卸載成功
            else
failde 軟件:${BLUE}${1}${END} 卸載失敗
            fi
            install_deb $1 $2
        else
            install_deb $1 $2
        fi
    fi
    return 0
}
#拷貝配置文件函數(shù):$1=配置文件所在目錄(必選),$2=配置文件的目標(biāo)位置(必選),$5=需要重新加載的服務(wù)(可選).
config_file(){
    if [[ $1 == '' ]] || [[ $2 == '' ]];then
        failde 缺少必要的安裝文件 安裝失敗
        return 1
    else
        if [[ -d "$1" ]] && [[ -d "$2" ]];then
            cp -rf $1/* $2 >/dev/null 2>&1
            if [[ $? -eq 0 ]];then
success 拷貝文件${BLUE}${1}${END}到${RED}${2}${END} 復(fù)制成功
            else
failde 拷貝文件${BLUE}${1}${END}到${RED}${2}${END} 復(fù)制失敗
                return 2
            fi
        else
failde 源目錄${RED}${1}${END}或目標(biāo)目錄${RED}${2}${END}不存在 安裝失敗
            return 3
        fi
    fi
    if [[ $3 != '' ]];then
        eval "$3"
        if [[ $? -eq 0 ]];then
success 命令:"${BLUE}${3}${END}" 執(zhí)行成功
        else
            failde 命令:"${BLUE}${3}${END}" 執(zhí)行失敗
            return 4
        fi
    fi
    return 0
}
#掛載共享目錄
mount_share() {
    [[ -d /home/$1 ]] || mkdir /home/$1
    cat /etc/fstab | grep "//10.10.255.226/"$1 >/dev/null 2>&1
    if [[ $? -ne 0 ]];then
        echo "//10.10.255.226/"$1"    /home/"$1"  cifs username=share,password=share,auto,ro  0 0" >> /etc/fstab
mount -a > /dev/null 2>&1 && success 共享目錄掛載 掛載成功 || failde 共享目錄掛載 掛載失敗
    else
success 共享目錄掛載 已經(jīng)掛載
mount -a > /dev/null 2>&1 && success 共享目錄掛載測(cè)試 測(cè)試成功 || failde 共享目錄掛載測(cè)試 測(cè)試失敗
fi
[[ $1 == "zx_wx" ]] && svn="wx" || svn="wz"
if [[ -h "/home/myuser/桌面/share-$svn" ]];then
ok 共享目錄鏈接 已經(jīng)創(chuàng)建
elif [[ -h "/home/myuser/Desktop/share-$svn" ]];then
ok 共享目錄鏈接 已經(jīng)創(chuàng)建
else
[[ -h "/home/myuser/桌面/share-$svn" ]] || ln -s /home/$1 /home/myuser/桌面/share-$svn
[[ $? -eq 0 ]] && success 共享目錄鏈接 創(chuàng)建成功 || failde 共享目錄鏈接 創(chuàng)建失敗
return 0
fi
}
#判斷是否是root,不是則直接退出.
[[  "$UID" -ne 0 ]] && echo "ERROR: 需要以root運(yùn)行,退出?。?!" && exit 1; 
#設(shè)置電腦使用utc時(shí)區(qū)
#sed -i 's/^UTC=no$/UTC=yes/g' /etc/default/rcS
#sed -i 's/^UTC=no$/UTC=yes/g' /etc/default/rcSe
#sed -n '/^UTC/p' /etc/default/rcS
#source /etc/default/rcS
#source /etc/default/rcSe
echo "
5
9
1
1
" | tzselect >/dev/null 2>&1
[[ $? -eq 0 ]] && success 電腦UTC時(shí)區(qū):TZ=Asia/Shanghai 設(shè)置成功 || failde 電腦UTC時(shí)區(qū):TZ=Asia/Shanghai 設(shè)置失敗
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime >/dev/null 2>&1
echo "Asia/Shanghai" > /etc/timezone
[ -f /etc/profile.d/tz.sh ] || cp -f ./tz.sh /etc/profile.d/
#新建賬戶并初始化
id -u myuser >/dev/null 2>&1
if [[ $? -ne 0 ]];then
failde 員工賬號(hào):${BLUE}myuser${END} 不存在
    useradd myuser -s /bin/bash -m
success 員工賬號(hào):${BLUE}myuser${END} 創(chuàng)建成功
else
#rm -rf /home/myuser/* >/dev/null
ok 員工賬號(hào):${BLUE}myuser${END} 已經(jīng)存在
fi
echo "myuser:myuser" | chpasswd  >/dev/null 2>&1
if [[ $? -eq 0 ]];then
success 員工賬號(hào):${BLUE}myuser${END}密碼 更新成功
else
failde 員工賬號(hào):${BLUE}myuser${END}密碼 更新失敗
exit 1
fi
#強(qiáng)制myuser為myuser組用戶(刪除sudo權(quán)限)
usermod -g myuser myuser >/dev/null 2>&1
#新建備用賬戶并初始化
id -u myadmin >/dev/null 2>&1
if [[ $? -ne 0 ]];then
failde 管理員賬號(hào):${BLUE}myadmin${END} 不存在
    useradd myadmin -s /bin/bash -m
success 管理員賬號(hào):${BLUE}myadmin${END} 創(chuàng)建成功
else
ok 管理員賬號(hào):${BLUE}myadmin${END} 已經(jīng)存在
fi
echo "myadmin:abcACY!" | chpasswd >/dev/null 2>&1
if [[ $? -eq 0 ]];then
success 管理員賬號(hào):${BLUE}myadmin${END}密碼 更新成功
else
failde 管理員賬號(hào):${BLUE}myadmin${END}密碼 更新失敗
exit 1
fi
#強(qiáng)制myadmin為sudo組用戶(增加sudo權(quán)限)
usermod -a -G sudo myadmin>/dev/null 2>&1
#賬戶root配置zsh
install_deb zsh zsh
install_deb oh-my-zsh  oh-my-zsh
cp -f ./zsh/.zshrc /root/
cp -f ./zsh/mortalscumbag.zsh-theme /usr/share/oh-my-zsh/themes/
echo "/bin/zsh" | chsh >/dev/null 2>&1
#配置root賬號(hào)密碼
echo "root:abcACY!@#" | chpasswd >/dev/null 2>&1
#鎖定除myuser外普通賬戶
cat /etc/passwd |awk -F : '{if ($3 >= 1000) if ($1 !~ "myuser|nobody|myadmin") print $1 }' | 
while read us;do passwd -l $us && echo "User: "$us" is locked" || echo "User: "$us"locked error."; done
#將修改密碼和查看ip腳本復(fù)制到桌面
[[ ! -d "/home/myuser/桌面/admin" ]] && mkdir -p /home/myuser/桌面/admin && config_file script /home/myuser/桌面/admin
chown -R myuser:myuser /home/myuser
chmod a+x /home/myuser/桌面/admin/*
#修改主機(jī)名稱
sed -i '/min-pc/d' /etc/hosts
hostname | grep -E 'KS[0-9]{4}' >/dev/null
if [[ $? -eq 0 ]];then
ok 主機(jī)名稱:${RED}`hostname`${END} 已經(jīng)設(shè)置
else
read -p "請(qǐng)輸入主機(jī)名稱:" name
name=`echo $name | tr 'a-z' 'A-Z'`
echo "$name" >/etc/hostname && hostname $name && success 主機(jī)名稱:${RED}`hostname`${END} 設(shè)置成功
fi
#賬戶安全策略
install_deb libpam-cracklib libpam
pamconfig=pampassword
if [[ $? -eq 0 ]];then
if [[ -d "$pamconfig" ]];then
    if [[ -e "$pamconfig/login.defs" ]];then
    cp -f "$pamconfig/login.defs" /etc/ 
    cat "/etc/login.defs" |sed -n "s/^####\([^\#]*\)$/\1/p"
        else
failde 賬戶安全策略,缺少配置文件login.defs 設(shè)置失敗
    fi
    if [[ -e "$pamconfig/common-password" ]];then
            cp -f "$pamconfig/common-password" /etc/pam.d/
            cat "/etc/pam.d/common-password" |sed -n "s/^####\([^\#]*\)$/\1/p"
success 賬戶安全策略 設(shè)置成功
    else
failde 賬戶安全策略,缺少配置文件common-password 設(shè)置失敗
    fi
else
failde 賬戶安全策略,沒(méi)有找到配置文件夾 設(shè)置失敗
fi
fi
#配置iptables
config_file iptables /etc "iptables-restore /etc/iptables.rules"
#刪除個(gè)人qq
if [[ $1 == "weixin" ]];then
    dpkg --list |grep apps.com.qq.im >/dev/null 2>&1
    if [[ $? -eq 0 ]];then
dpkg --purge apps.com.qq.im >/dev/null 2>&1
    [[ $? == 0 ]] && success 軟件:${BLUE}騰訊個(gè)人QQ${END} 刪除成功 || failde 軟件:${BLUE}騰訊個(gè)人QQ${END} 刪除失敗
    else
ok 軟件:${BLUE}騰訊個(gè)人QQ${END} 未安裝
    fi
else
    echo "不用刪除個(gè)人qq。"
fi
#安裝個(gè)人qq
if [[ $1 == "qq" ]];then
   install_deb deepinwine-qq deepin-qq
fi
#更新crossover
version=`dpkg -l | grep crossover | awk -F' ' 'NR==1{print $3}'`
if [[ $version == "16.0.6-1" ]];then
ok 軟件:${BLUE}crossover${END},版本:${RED}${version}${END} 已經(jīng)安裝
else
crossover=`dpkg -l | grep crossover | awk 'NR==1{print $2}' | awk  -F':' '{print $1}'`
dpkg -P  apps.com.qq.b.eim deepinwine-hrtx apps.com.qq.b.crm  deepin-crossover-helper $crossover > /dev/null 2>&1
install_deb crossover crossover16
fi
#安裝企業(yè)qq
install_deb apps.com.qq.b.eim qyqq 
#安裝chrome
version=`dpkg -l | grep google-chrome-stable | awk -F' ' '{print $3}'`
if [[ $version == "60.0.3112.78-1" ]];then
ok 軟件:${BLUE}google-chrome${END},版本:${RED}${version}${END} 已經(jīng)安裝
else
renew_deb google-chrome-stable chrome
fi
#配置ssh
install_deb openssh-server ssh
#if [[ $? == 0 ]];then
if [[ -d "ssh" ]];then
cp -f ssh/sshd_config /etc/ssh/sshd_config
service ssh restart
[[ $? -eq 0 ]] && success SSH遠(yuǎn)程密鑰連接 配置成功 || failde SSH遠(yuǎn)程密鑰連接 配置失敗
[[ -d "/root/.ssh" ]] || mkdir /root/.ssh
cp -f ssh/authorized_keys /root/.ssh/authorized_keys
else
echo "確少ssh 配置文件"
fi
#fi
#配置salt
install_deb salt-minion salt-minion 
cp -rf minion /etc/salt/
rm -rf /etc/salt/minion_id
rm -rf /etc/salt/pki
/etc/init.d/salt-minion restart >/dev/null 2>&1
systemctl enable salt-minion > /dev/null 2>&1
[[ $? -eq 0 ]] && success Salt-Minion客戶端服務(wù)開機(jī)啟動(dòng) 配置成功 || failde Salt-Minion客戶端服務(wù)開機(jī)啟動(dòng) 配置失敗
#配置開機(jī)啟動(dòng)
cp -f rc.local /etc/rc.local
#配置vim
cp -pf vimrc.local /etc/vim/
#配置usb禁用
chown root:myadmin /media
chmod 750 /media
chmod 750 /bin/mount
#配置觸摸板軟件
install_deb gpointing-device touchpad
#安裝 RapidSVN
install_deb rapidsvn svn
#安裝 gimp
install_deb gimp gimp
#配置共享
if [[ $1 == "wx" ]];then
    mount_share zx_wx
elif [[ $1 == "wz" ]];then
    mount_share zx_wz
elif [[ $1 == "all" ]];then
    mount_share zx_wx
    mount_share zx_wz
fi
#安裝colorprint
#colorprint"依賴太多,系統(tǒng)自帶的截圖工具可以解決大部分圖形處理等功能

【騰訊云】云服務(wù)器、云數(shù)據(jù)庫(kù)、COS、CDN、短信等云產(chǎn)品特惠熱賣中

發(fā)表評(píng)論

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: