#!/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)自帶的截圖工具可以解決大部分圖形處理等功能
贊
0
賞