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 }
本文来自博客园,作者:{理想三旬},转载请注明原文链接:{https://www.cnblogs.com/zyp0519/}