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