第二阶段学习笔记:第一天shell

初始化脚本:

添加账号,密码修改 永久关闭防火墙和selinux 修改dns 安装基本服务
修改yum源 进行时间对时 
使用时间自动对时,调整服务器的初始化时间 使用  ntpdate -s
ntpdate -s pool.ntp.org

Shell的使用场景:

  1. 自动化批量系统初始化程序 (update,软件安装,时区设置,安全策略…)#初始化脚本
  2. 自动化批量软件部署程序 (LAMP,LNMP,Tomcat,LVS,Nginx)#一键安装la\nmp环境,通过脚本自动上线代码
  3. 应用管理程序 (KVM)#通过脚本批量创建虚拟机
  4. 日志分析处理程序(PV, UV, 200, !200,grep/awk)
  5. 自动化备份恢复程序(MySQL完全备份/增量 + Crond)
  6. 自动化信息采集及监控程序(收集系统/应用状态信息,CPU,Mem,Disk,Net,TCP Status,Apache,MySQL)
  7. 配合Zabbix信息采集(收集系统/应用状态信息,CPU,Mem,Disk,Net,Apache,MySQL)
  8. 9*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 %"
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值