小言_互联网的博客

linux 初始化环境脚本

432人阅读  评论(0)

初始化环境脚本

前言

做了一个初始化环境的脚本,脚本目前有这几个功能:

  1. 更改自己网卡为eth 0 开头(会重启只能单独选择)
    思路:1,判断 网卡名是否已经更改了。2,判断文件是否已经更改了,如果已经更改,提示是否加载配置。3,如果文件未更改,就执行更改,加载配置,并提示是否重启
  2. 更改ip地址
    思路:1,查看自己所拥有的网卡名。2,询问是输入静态ip地址,还是dhcp 如果是dhcp 则不询问 后续的IP地址。3,按照提示输入ip,网关,dns ,可选的可以不输入。4,通过nmcli 创建5,待解决 未检查网关和dns是否合法
  3. 关闭防火墙
    思路:查看selinux 当前状态,如果开启, 则临时关闭,并修改文件。关闭Firewall。
  4. 配置阿里的yum源
    仅支持 centos 6 7 8
  5. 安装常用软件
    用于最小化安装的系统,来安装常用包
    vim,bash-completion(补全命令)autofs(自动挂载镜像) lrzsz(rz,sz传文件)
  6. 更改环境颜色
    未解决,需要手动注销 或者 手动执行source
  7. 更改别名
    未解决,需要手动注销 或者 手动执行source

   其中碰到了问题,有的已经解决了,有的还没解决,然后脚本的美观,以及功能可能会不完善,后续还会再继续完善。

碰到问题

1,

lhnmcli="${lhnmcli} ipv4.gateway ${wg}" 
lhnmcli= "${lhnmcli} ipv4.gateway ${wg}"  

等号后面有个空格会把后面变成命令
2,
read dnsdz
[ -n $dnsdz ] 这个是判断不出来是否输入没输入的,按道理n代表是否不为空,但是如果read 直接回车,也不属于空,这里用-z 比较好
3,

lhnmcli="nmcli connection add con-name ${wkname}-lh type ethernet ifname ${wkname} ip4 192.168.31.22/24 gw4 192.168.31.1"   

双引号解释变量,用大括号限定变量的名称
4,
cat << eof 在shell里用cat 这样读取的话,结束的eof 前面不能用空格
5,
取网卡的前缀

sed -nr 's/^([[:alpha:]]{1,99})[[:digit:]]{1,99}/\1/p'  

查看拥有的除了lo以外的网卡名

ip a | grep  "^[[:digit:]]\?:" | tr " " ":" | cut -d":" -f3 | grep "[[:alpha:]]\{1,99\}[[:digit:]]"  

查看所有网卡

ip a | grep  "^[[:digit:]]\?:" | tr " " ":" | cut -d":" -f3

6,
PS1=’[\e[32m]    [\u@\h \W]$   [\e[0m]’ 绿色
   颜色开始           颜色结束
PS1=’\e[33m   [\u@\h \W]$  \e[0m’
两个效果相等,一个是使用了中括号,一个是没有使用
7,
往里面追加的时候, 由于sed由于变量里面有空格所以不行
变量用单引号套起来,外面用双引号,可以
cat .bashrc | sed ‘/# Source/ihallo’
cat .bashrc | sed ‘/# Source/a’’’$col’’’’
cat .bashrc | sed “/# Source/a’$col’”(外面双引号,里面单引号是可以的,上面两种不行)

脚本效果

[root@localhost ~]$sh wangka.sh 
你的版本是7
请选择你要更改的项目:
1.更改自己网卡为eth 0 开头(会重启只能单独选择)
2.更改ip地址
3.关闭防火墙
4.配置阿里的yum源
5.安装常用软件
6.更改环境颜色
7.更改别名
你的选择是:

脚本源码如下

#!/bin/bash
#
#********************************************************************
#Author:		youyoul
#QQ: 			1921160095
#Date: 			2019-10-11
#FileName:		wangka.sh
#Description:		The test script
#Copyright (C): 	2019 All rights reserved
#********************************************************************
function sayhello()
{
  echo "Hello,World"
}

function wangka()
{
    ip a | grep "eth0"  > /dev/null
    [ $? -eq 0 ] && { echo 网卡名已经更改 ; exit ; }      # 判断网卡名是否已经是eth
    if [ $banben -ge 7 ]; then
	cat /etc/default/grub  | grep ifnames=0 > /dev/null
	if [ $? -eq 0  ]; then
		echo 配置文件已存在;
		read -p "是否重新加载配置:yes or no ?" yorn
		if [[ $yorn =~ [yY]([Ee][Ss])?  ]] ; then
		grub2-mkconfig -o /etc/grub2.cfg 
	        reboot
	        fi
	else
		sed -ri '/CMDLINE/s#^(.*)"#\1 net.ifnames=0 "#' /etc/default/grub
		grub2-mkconfig -o /etc/grub2.cfg 
		read -p "是否重启:yes or no ?" yorn
		if [[ $yorn =~ [yY]([Ee][Ss])?  ]] ; then
			reboot
		fi
	fi
     fi
     unset yorn 
}
function ipdizhi()
{
	usewk=`ip a | grep  "^[[:digit:]]\?:" | tr " " ":" | cut -d":" -f3 | tr "\n" " "`
	echo "你拥有的网卡:$usewk"
	read -p "请输入要配置的网卡名:" wkname
	read -p "请输入一个合法ip地址或输入(dhcp)自动获取:" ipdz
	ippd="(\<([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>\.){3}\<([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>"
	if [[ $ipdz =~ $ippd ]]; then
		read -p "请输入掩码(1-32):" yanma
		lhnmcli="nmcli connection add con-name ${wkname}-lh type ethernet ifname ${wkname} ip4 $ipdz/$yanma "
		read -p "(可选)请输入网关:" wg
		[ -z $wg  ] && echo wgkong || { lhnmcli="${lhnmcli} ipv4.gateway ${wg}"; echo $lhnmcli; }
		read -p "(可选)请输入dns:" dnsdz                                                      
		[ -z $dnsdz ] && echo dnsk || { lhnmcli="${lhnmcli} ipv4.dns ${dnsdz}"; echo $lhnmcli; }
		nmcli connection  | grep ${wkname}-lh
	        [ $? -eq 0 ] && nmcli connection del ${wkname}-lh > /dev/null
		$lhnmcli
		echo $lhnmcli
		nmcli connection up ${wkname}-lh
	elif [ $ipdz=dhcp ]; then
		nmcli connection  | grep ${wkname}-lh
	        [ $? -eq 0 ] && nmcli connection del ${wkname}-lh > /dev/null
		nmcli connection add con-name ${wkname}-lh type ethernet ifname $wkname ipv4.method auto
		nmcli connection up ${wkname}-lh
	else
		echo renzhen
		exit
	fi
}
function gbfw()
{
	seli=`getenforce`
	[ $seli="Enforcing" ] && setenforce 0
	cat /etc/selinux/config  | grep SELINUX=disabled
	if [ $? -eq 0  ]; then
	echo 已更改
	else
	sed -ri '/^SELINUX=/s#enforcing#disabled#p' /etc/selinux/config 
	fi
	systemctl stop firewalld.service 
	systemctl disable firewalld.service 
}
function pzyum()
{
if [ $banben -eq 7 -o $banben -eq 6 ]; then  
rm /etc/yum.repos.d/* > /dev/nul
cat << ceshi > /etc/yum.repos.d/youyou.repo
[base]
name=CentOS-\$releasever - Base
baseurl=http://mirrors.aliyun.com/centos/\$releasever/os/\$basearch/
enable=1
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/\$releasever/os/\$basearch/RPM-GPG-KEY-CentOS-7
ceshi
elif [ $banben -eq 8 ];then
rm /etc/yum.repos.d/* > /dev/nul
cat << ceshi > /etc/yum.repos.d/youyou.repo
[base]
name=CentOS-\$releasever - Base
baseurl=http://mirrors.aliyun.com/centos/\$releasever/BaseOS/\$basearch/os/
[App]
name=CentOS-\$releasever - App
baseurl=http://mirrors.aliyun.com/centos/\$releasever/AppStream/\$basearch/os/
enable=1
ceshi
else
echo 此脚本仅支持6,7,8三个版本
fi
yum repolist
}
function azrj()
{
	yum install -y vim bash-completion autofs lrzsz
	systemctl enable autofs
	systemctl start autofs
}
function ggcolor()
{
	echo -e "$col1 1.请选择你的颜色$colend"
	echo -e "$col2 2.请选择你的颜色$colend"
	echo -e "$col3 3.请选择你的颜色$colend"
	echo -e "$col4 4.请选择你的颜色$colend"
	echo -e "$col5 5.请选择你的颜色$colend"
	echo -e "$col6 6.请选择你的颜色$colend"
	echo -e "$col7 7.请选择你的颜色$colend"
	read -p "输入你的选择:" colq
	if [[ $colq =~ [1-7] ]]; then
		PS1="\e[3${colq}m[\u@\h \W]\\\$${colend}"
	else
		echo 输入有误
	fi
	echo PS1=\'$PS1\' > /etc/profile.d/env.sh
	chmod +x /etc/profile.d/env.sh
	echo "请自己执行:source /etc/profile.d/env.sh"
#	source /etc/profile.d/env.sh
#	sed -i "/# Source/asource /etc/profile.d/env.sh" /root/.bashrc
}
function ggalias()
{
	
	sed -i "/# Source/ialias vi='vim'\nalias yy='yum install -y'" /root/.bashrc
	echo "请自己执行:source /root/.bashrc"
#	source /root/.bashrc
}
banben=`sed -nr 's/^.* ([0-9]+)\..*/\1/p' /etc/redhat-release`
col1='\e[31m'
col2='\e[32m'
col3='\e[33m'
col4='\e[34m'
col5='\e[35m'
col6='\e[36m'
col7='\e[37m'
colend='\e[0m'
#筛选版本
cat<< eof
你的版本是$banben
请选择你要更改的项目:
1.更改自己网卡为eth 0 开头(会重启只能单独选择)
2.更改ip地址
3.关闭防火墙
4.配置阿里的yum源
5.安装常用软件
6.更改环境颜色
7.更改别名
eof
read -p "你的选择是:" ans
case $ans in 
1)
	wangka
	;;
2)
	ipdizhi
	;;
3)
	gbfw
	;;
4)
	pzyum
	;;
5)
	azrj
	;;
6)
	ggcolor
	;;
7)
	ggalias
	;;
*)
	sayhello
esac


转载:https://blog.csdn.net/liuhaoy/article/details/102523899
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场