初始化脚本:
添加账号,密码修改 永久关闭防火墙和selinux 修改dns 安装基本服务
修改yum源 进行时间对时
使用时间自动对时,调整服务器的初始化时间 使用 ntpdate -s
ntpdate -s pool.ntp.org
Shell的使用场景:
- 自动化批量系统初始化程序 (update,软件安装,时区设置,安全策略…)#初始化脚本
- 自动化批量软件部署程序 (LAMP,LNMP,Tomcat,LVS,Nginx)#一键安装la\nmp环境,通过脚本自动上线代码
- 应用管理程序 (KVM)#通过脚本批量创建虚拟机
- 日志分析处理程序(PV, UV, 200, !200,grep/awk)
- 自动化备份恢复程序(MySQL完全备份/增量 + Crond)
- 自动化信息采集及监控程序(收集系统/应用状态信息,CPU,Mem,Disk,Net,TCP Status,Apache,MySQL)
- 配合Zabbix信息采集(收集系统/应用状态信息,CPU,Mem,Disk,Net,Apache,MySQL)
- 9*9乘法表、俄罗斯方块,打印三角形,打印圣诞树,打印五角星,运行小火车,坦克大战,排序实现
- Shell可以做任何运维的事情(一切取决于业务需求)
Shell要像填空题一样写,sh执行脚本的命令
第一个(查看能不能ping通的)
#!/usr/bin/bash
#this is test ip
#by rocy 2021/5/12
ip=8.140.10.160
if ping $ip -c1 &>/dev/null ;then
echo "$ip is up"
else
echo "$ip is down"
fi
第二个,位置参数
#!/bin/usr/bin/bash
#
#by zh
#!/bin/bash
echo 我的第一个参数是:$1
echo 我的第一个参数是:$2
echo 我的第一个参数是:$3
echo 我的第一个参数是:$4
echo 一共有几个参数呢:$#
第三个 预定义变量
#字符串要加上``去定义
[root@aliyun tmp]# time=`date +%F-%T`
#定义time为当前时间
#!/usr/bin/bash
#
#by zh
time=`date +%F-%T`
wc=`ls | wc -l`
echo "当前的系统时间是:" $time
echo "当前的用户是:" $USER
echo "当前的uid是:" $UID
echo "当前机器的主机名是:" $HOSTNAME
echo "当前的目录下一共有多少文件或目录" $wc
第四个(脚本交互)
read 人和脚本之间的交互
两个参数常用
-t #是时间 -t 5 5秒后自动执行
-p
#!/usr/bin/bash
#
#by zh
read -t 5 -p "请输入姓名:" name
read -p "请输入性别:" sex
read -p "请输入年龄:" age
echo "$name 的性别是$sex , $name 今年$age了。"
第五个 备份
#!/usr/bin/bash
#
#by
#$?是返回值前后都要加空格,eq是等于比较的意思,
read -p "please input your dir which you want to backup : " back_dir1
mkdir $back_dir1 &>/dev/null
if [ $? -eq 0 ] ;then
echo "$back_dir create successful"
else
echo "sorry,this $back_dir1 is already created,please create other"
fi
第六个 索引切片 变量的索引,变量的切片
每一个都是一个索引位,切片就是一个长度。
[root@aliyun tmp]# a=12345678
[root@aliyun tmp]# echo $a
12345678
[root@aliyun tmp]# echo ${a:5} #从左往右数第五个开始只留后面的
678
[root@aliyun tmp]# baidu=www.baidu.com.cn
[root@aliyun tmp]# echo ${baidu:4}
baidu.com.cn
[root@aliyun tmp]# echo ${baidu:4:5} #从第四个开始,留下之后的五位。
baidu
课堂练习:
写一个脚本定义一个变量,sina=www.sina.com.cn
1.echo出www
2.echo出sina
3.echo出cn
#!/usr/bin/bash
#
#by
sina=www.sina.com.cn
echo "你的网站前缀是:${sina:0:3}"
echo "你的网站域名是:${sina:4:4}"
echo "你的网站后缀是:${sina:13}"
获取变量的长度加上#
[root@aliyun tmp]# usrr=3jajfieowgnfewflkaoiaweif
[root@aliyun tmp]# echo ${#usrr}
25
从前往后最短匹配#*是固定的
[root@aliyun tmp]# sina=www.sina.com.cn #定义变量
[root@aliyun tmp]# echo ${sina#*.} #去掉第一个.之前的,包括.只留.后面的sina.com.cn
最长匹配##*是固定的
[root@aliyun tmp]# sina=www.sina.com.cn
[root@aliyun tmp]# echo ${sina##*.}
cn
从后往前最短最长匹配,
[root@aliyun tmp]# echo ${sina%.*} #从后往前最短匹配,从后往前去掉最近的一个.后面的东西
www.sina.com
[root@aliyun tmp]# echo ${sina%c*}
www.sina.com.
[root@aliyun tmp]# echo ${sina%%c*} #从后往前,去掉最后一个c后面的东西
www.sina.
脚本中定义字符串
free -m | grep Mem | awk ‘{print $1}’ #awk竖切 $1第一行
作业
1.执行后显示机器内存的使用率和磁盘的使用率。
2.系统工具箱 (ip 地址 uid 主机名 用户个数 内存使用率 磁盘使用率)。
系统工具箱 (内存使用率磁盘使用率)
#!/usr/bin/bash
#systemctl tools ip uid hostname usernu mem disk
#by dy
ip=`ifconfig | grep broadcast | awk '{print $2}'`
usernu=`cat /etc/passwd | wc -l`
mem_used=`free -m | grep Mem | awk '{print $3}'`
mem_total=`free -m | grep Mem | awk '{print $2}'`
mem_percent=$(($mem_used*100/$mem_total))
disk_blocks=`df -T |grep -v 文| awk '{sum+=$3};END{print sum}'`
disk_used=`df -T |grep -v 文| awk '{sum+=$4};END{print sum}'`
disk_percent=$(($disk_used*100/$disk_blocks))
echo "您机器的IP地址为:$ip"
echo "您机器的UID为:$UID"
echo "您机器的主机名为:$HOSTNAME"
echo "您机器的用户个数为:$usernu"
echo "您机器的内存使用率为:$mem_percent %"
echo "您机器的磁盘使用率为:$disk_percent %"