2.写一个Centos7下一键配置系统及jdk、mysql的脚本

主程序

共含有七个内容

  1.修改系统名字并映射IP

  2.修改静态IP,并配置IP,网关等

  3.关闭防火墙

  4.将yum源更改为国内的阿里源

  5.安装并配置jdk

  6.安装并初始化mysql

  7.以上全部配置

主程序的参数依次为:按装选择、系统名字、想设置的静态IP地址

 1 main_option(){
 2   case $1 in
 3           "1")
 4                 modify_sysname $2 $3
 5                 ;;
 6           "2")
 7                 modify_staticIP $3
 8                 ;;
 9           "3")
10                 close_firewalld
11                 ;;
12           "4")
13                 modify_yumsource
14                 ;;
15           "5")
16                 setup_jdk
17                 ;;
18           "6")
19                 setup_mysql
20                 ;;
21           "7")
22                 modify_sysname $2 $3
23                 modify_staticIP $3
24                 close_firewalld
25                 modify_yumsource
26                 setup_jdk
27                 setup_mysql
28                 ;;
29             "*")
30                 echo "choose 1 to 7!!!"
31     esac
32 }
33 #      $1 --> 用户安装软件选择
34 #    $2 --> 用户传入的系统名字
35 #    $3 --> 用户传入的IP地址
36 main_option $1 $2 $3

 

1.修改系统名字,并配置与IP的映射

注:主程序的第二个和第三个参数作为形参传递到此,对应本方法内部接受的第一、第二个参数。

 1 modify_sysname(){
 2     #首先修改系统名字
 3     hostnamectl set-hostname $1
 4     #再根据/etc/hosts文件中修改对应的内容,判断是否需要修改
 5     cfg=`cat /etc/hosts | grep -w $2 | grep -wF $1`
 6     if [ "$cfg" == "" ];then
 7         echo "尚未配置过地址映射"
 8         #根据IP修改hosts文件
 9         echo "$2 $1" >> /etc/hosts
10         echo "地址映射完成"
11     else
12         echo "已配置过地址映射"
13     fi
14 }

grep过滤参数:

-e: 使用正则搜索
-i: 不区分大小写
-v: 查找不包含指定内容的行
-w: 按单词搜索
-c: 统计匹配到的次数
-n: 显示行号
-r: 逐层遍历目录查找
-A: 显示匹配行及前面多少行, 如: -A3, 则表示显示匹配行及前3行
-B: 显示匹配行及后面多少行, 如: -B3, 则表示显示匹配行及后3行
-C: 显示匹配行前后多少行, 如: -C3, 则表示显示批量行前后3行

-F: 关闭正则匹配模式

 

2.修改静态IP、网关等

modify_staticIP(){
    #先检查文件是否被修改过
    chk=`cat /etc/sysconfig/network-scripts/ifcfg-ens33 | grep static`
    if [ "$chk" == "" ];then
    echo "开始修改静态地址"
    #修改/etc/sysconfig/network-scripts/ifcfg-ens33文件中的dchp
    sed -i 's/dhcp/static/' /etc/sysconfig/network-scripts/ifcfg-ens33
    echo "IPADDR=$1" >> /etc/sysconfig/network-scripts/ifcfg-ens33
    echo "NETMASK=255.255.255.0" >>/etc/sysconfig/network-scripts/ifcfg-ens33
    echo "GATEWAY=${1%.*}.2" >> /etc/sysconfig/network-scripts/ifcfg-ens33
    echo "DNS1=114.114.114.114" >> /etc/sysconfig/network-scripts/ifcfg-ens33
    echo "DNS2=8.8.8.8" >> /etc/sysconfig/network-scripts/ifcfg-ens33
    echo "静态地址修改完成"
    else
    echo "已修改过静态地址"
    fi
    systemctl restart network
}

 

3.关闭防火墙

close_firewalld(){
    systemctl stop firewalld
    systemctl disable firewalld
    echo "防火墙已永久关闭"
}

 

4.修改yum源为阿里源

modify_yumsource(){
    #检查是否已有备份文件 有则说明已经做过了
    if [ -e /etc/yum.repos.d/CentOS-Base.repo_bak ];then
        echo "已安装过yum国内源"
    else
        #首先安装wget
        yum install -y wget
        #修改yum源
        cd /etc/yum.repos.d/
        mv CentOS-Base.repo CentOS-Base.repo_bak
        wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
        yum clean all
        yum makecache
        echo "yum阿里源加载完成"
    fi
}

 

5.安装并配置jdk

#检查文件的文件夹是否存在 不在就创建
check_soft_folder(){
    if [ -d /opt/soft/$1 ];then
        echo "/opt/soft/$1 文件夹已存在"
        return 0
    else
        mkdir -p /opt/soft/$1
        return 1
    fi
}


#安装jdk 注意:软件目录必须在/opt目录下
setup_jdk(){
    #调用check_soft_folder函数 判断是否安装过
    check_soft_folder jdk180
    if [ "$?" == 1 ];then
        #不存在--> 在opt文件夹下搜索jdk的tar.gz文件进行解压缩
        jdkName=`ls /opt/ | grep jdk*`
        #将文件解压到对应的soft文件夹下
        tar -zxf /opt/$jdkName -C /opt/soft/jdk180 --strip-components 1
        #配置/etc/profile文件
        echo "" >> /etc/profile
        echo "#java environment" >> /etc/profile
        echo "export JAVA_HOME=/opt/soft/jdk180" >> /etc/profile
        echo "export CLASSPATH=.:\${JAVA_HOME}/jre/lib/rt.jar:\${JAVA_HOME}/lib/dt.jar:\${JAVA_HOME}/lib/tools.jar" >> /etc/profile
        echo "export PATH=\$PATH:\${JAVA_HOME}/bin" >> /etc/profile
        source /etc/profile
        echo "jdk安装完成"
    fi
}

在shell命令中 if 语句判断文件或者文件夹是否存在:

-e filename 如果 filename存在,则为真
-d filename 如果 filename为目录,则为真
-f filename 如果 filename为常规文件,则为真
-L filename 如果 filename为符号链接,则为真
-r filename 如果 filename可读,则为真
-w filename 如果 filename可写,则为真
-x filename 如果 filename可执行,则为真
-s filename 如果文件长度不为0,则为真
-h filename 如果文件是软链接,则为真

 

6.安装并初始化mysql

setup_mysql(){
    #检查是否安装过mysql
    mdb=`rpm -qa | grep Maribda`
    if [ "$mdb" == "" ];then
        rpm -e --nodeps $mdb
        cd /opt/
        wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
        yum -y install mysql57-community-release-el7-10.noarch.rpm
        yum -y install mysql-community-server
        #修改/etc/my.cnf文件 解决中文乱码问题
        sed -i '/socket/a character-set-server=utf8' /etc/my.cnf
        echo "[client]" >> /etc/my.cnf
        echo "default-character-set=utf8" >> /etc/my.cnf
        echo "[mysql]" >> /etc/my.cnf
        echo "default-character-set=utf8" >> /etc/my.cnf
        systemctl start  mysqld.service
        #获取临时密码
        pwdinfo=`grep "password" /var/log/mysqld.log | grep -w password`
        passwd=${pwdinfo#*localhost:}
        #执行修改密码语句
        mysql -uroot -p$passwd -e "set global validate_password_policy=0"
        mysql -uroot -p$passwd -e "set global validate_password_length=1"
        mysql -uroot -p$passwd -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'okok'"
        #修改远程登录
        mysql -uroot -pokok -e "GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY 'okok'"
        mysql -uroot -pokok -e "flush privileges"
        #重启mysql服务
        systemctl restart mysqld.service
    fi
}

 

posted on 2021-09-07 22:53  理想三旬_z  阅读(79)  评论(0编辑  收藏  举报

导航