防伪码:但愿人长久,千里共婵娟
第五章 shell脚本应用(一)
温馨提示: 如果想提高shell脚本的编写速度,必须要熟练使用vi编辑器的各种快捷键
前言:
1、shell脚本的作用:可以批量处理、自动化完成一系列维护任务,大大减轻管理员的负担。
2、介于系统内核与用户之间,负责解释命令行,如图所示;
3、执行脚本文件的方法
a、脚本文件路径(必须有x权限)
b、sh 脚本文件路径(必须有x权限)
c、source 脚本文件路径(不要求有x权限)
4、交互式硬件设备
| 类型 | 设备文件 | 文件描述编号 | 默认设备 |
| 标准输入 | /dev/stdin | 0 | 键盘 |
| 标准输出 | /dev/stdout | 1 | 显示器 |
| 标准错误输出 | /dev/stderr | 2 | 显示器 |
5、重定向操作
一、shell脚本基础知识
1、 编制第一个shell脚本
1)Vi first.sh
2)在脚本文件中输入如下内容
3) 设置执行权限并执行
2、 为脚本添加注释,友好输出,更容易读懂。
1)Vi first.sh
2) ./first.sh执行脚本之后如下
3、 重定向操作
1) >表示重定向输出,>>表示重定向追加
2) 重定向输入,<表示重定向输入
Vim pass.txt,在文件中添加123456
然后执行passwd --stdin jerry < pass.txt
3)错误重定向,可用来收集程序执行的错误信息,为排错提供依据。
例如:执行以下操作可以将使用tar命令备份时出现的错误信息保存到error.log文件中
4) &>操作符可以将两类输出信息保存到同一个文件,例如,在编译源码包的自动化脚本中,若要忽略make,make install的操作的过程信息,可以将其定向到空文件/dev/null
首先下载httpd软件到本机,然后执行Vim httpd_install.sh,并输入如下内容:
设置权限chmod +x httpd_install.sh
最后执行./httpd_install.sh
4、 管道操作
例子:使用grep命令查询使用/bin/bash作为shell的用户名称时,会输出符合条件的整行内容,在此基础上可以结合管道操作与Awk命令做进一步过滤,只输出用户名和登录shell列。
1) 提取之前的正常效果
2) 提取之后的效果,只显示用户名和shell列
3) 再例如:显示磁盘已用的百分比
二、使用shell变量
1、自定义变量:只在自己的shell环境中有效
1)定义新的变量和引用变量
Product=benet
Version=5.0
2、变量赋值的特殊操作
1)双引号的作用:赋值的内容包含空格时,例如:

2) 单引号的作用:赋值的内容中包含”$”, ““” , “ \ ”等具有特殊含义的字符时
3) 反撇号(`)的作用:用于将某个命令的输出结果赋值给变量,例如:
4) $()的作用:可以代替反撇号,解决嵌套问题,因为反撇号不能实现嵌套,例如:查询提供useradd命令程序的软件包所安装的配置文件位置。
5) read命令的作用:用来提示用户输入信息,例如:
3、 设置变量的作用范围
新定义的变量只在当前shell有效,如果想进入新的shell环境同样有效,就需要使用export命令将变量导出为“全局变量”
也可以在export导出全局变量的同时,也可以为变量赋值,例如:
4、 变量的运算
例如:计算变量y的三次方,并将结果赋值给变量ycube
三、 特殊的shell变量
1、 环境变量
环境变量系统安装好了就存在,不用创建,可以直接使用,我们先查看一下:
env
我们可以把脚本直接添加到$PATH搜索路径中去,这样执行脚本的时候就不用加./了
环境变量的全局配置文件为/etc/profile,作用于所有用户,例如:将历史记录命令条数改为20条,只针对root用户
Vim /root/.bash_profile
只需要添加上面的最后一行,然后执行source /root/.bash_profile使之生效。
2、 位置变量,例如求两个数的和
Vi
3、 预定义变量,系统安装好之后就有,不能创建,只能使用,
例如:$#表示命令行中位置参数的个数,$*表示所有位置参数的内容,$?表示前一条命令执行后的返回状态,返回0表示正确。$0表示当前执行的脚本或程序的名称。
例如:制作备份数据脚本,vi
执行脚本./,备份两个文件
查看备份结果
四、 综合案例
1、 实验目标:远程备份mysql服务器的数据库
2、 实验环境:一共2台mysql服务器A和B,在B上远程备份A上的数据库,在A上建立数据库google和baidu,注意在防火墙上开启3306端口或者关闭防火墙,并设置计划任务定时更新
3、 实验拓扑:
4、 实验步骤
1) 在A上建立数据库,
2) 在A上建立一个建立一个专用的数据库用户,这里我使用root账户,授予root账户对可以通过远程主机192.168.1.2连接A
3) 在备份主机B上备份测试
查看已经备份成功
4) 在备份主机B上编写脚本,之前需要创建备份目录 mkdir -p /opt/beifen
然后编写脚本vi
5)执行备份脚本
./
5、 设置计划任务
Crontab -e
查看已经备份成功
谢谢观看,真心的希望能帮到您!




![24B5NY8%9H]U~$IL0IJT6LN.png Shell脚本应用(一)_Shell_05](http://s2.51cto.com/wyfs02/M01/87/48/wKiom1fZ87qCbqG2AAAF2YCiHZY115.png?x-oss-process=image/resize,m_fixed,w_1184)




![4Q]~G5D94W0BT9RM@ZSX$NV.png Shell脚本应用(一)_Shell_10](http://s2.51cto.com/wyfs02/M00/87/48/wKiom1fZ9DnTbCaxAAAGwsEDdco595.png?x-oss-process=image/resize,m_fixed,w_1184)

![J0%~}7)5YRJ~3O6LMU9CW]N.png Shell脚本应用(一)_Shell_12](http://s2.51cto.com/wyfs02/M00/87/45/wKioL1fZ9IGirtWaAAAHMrwaSfU941.png?x-oss-process=image/resize,m_fixed,w_1184)
![{OVGDBE]EF4RY65)KIN73(9.png Shell脚本应用(一)_杨文_13](http://s2.51cto.com/wyfs02/M01/87/48/wKiom1fZ9JnA7aoTAAAGUUV1Zso305.png?x-oss-process=image/resize,m_fixed,w_1184)
![WISII[BUB4XRR@B(]1OWY]S.png Shell脚本应用(一)_脚本_14](http://s2.51cto.com/wyfs02/M01/87/45/wKioL1fZ9K7jHh5QAAAE-Vxe2-E983.png?x-oss-process=image/resize,m_fixed,w_1184)
![X`5FD01]0@V30PDW6G[N85H.png Shell脚本应用(一)_Shell_15](http://s2.51cto.com/wyfs02/M02/87/48/wKiom1fZ9MThc30uAAAFoi4z90A436.png?x-oss-process=image/resize,m_fixed,w_1184)

![WU`JFGTMKOF[5A$2Q]60VM0.png Shell脚本应用(一)_杨文_18](http://s2.51cto.com/wyfs02/M01/87/45/wKioL1faCajDwDfmAAADKSo93IY108.png?x-oss-process=image/resize,m_fixed,w_1184)
![)QC%IO}AG%YPP]AJ@H1LT]N.png Shell脚本应用(一)_Shell_19](http://s2.51cto.com/wyfs02/M00/87/48/wKiom1fZ9_6wmYvSAAAEinnTdns338.png?x-oss-process=image/resize,m_fixed,w_1184)
![(2[0UWRWVG{Q[SINSK]_T6C.png Shell脚本应用(一)_杨文_20](http://s2.51cto.com/wyfs02/M02/87/48/wKiom1fZ-Bbh2Wg_AAAD2vxZilg142.png?x-oss-process=image/resize,m_fixed,w_1184)
![}O]J_J{_0Q)(Z0B$4F[GB0C.png Shell脚本应用(一)_杨文_21](http://s2.51cto.com/wyfs02/M00/87/45/wKioL1fZ-DTA7xDbAAAGBKnFfvM837.png?x-oss-process=image/resize,m_fixed,w_1184)

![FEYXP}2]FTI1@[07)Z3AX$0.png Shell脚本应用(一)_Shell_23](http://s2.51cto.com/wyfs02/M01/87/45/wKioL1fZ-IyiPvrWAAADoifTnSY253.png?x-oss-process=image/resize,m_fixed,w_1184)

![OSS_4LAFVVOSIF5Q}]M[5)M.png Shell脚本应用(一)_脚本_25](http://s2.51cto.com/wyfs02/M00/87/48/wKiom1fZ-OSS5sl-AAADkFaTpg4807.png?x-oss-process=image/resize,m_fixed,w_1184)









![]KXWU$I8YH7M8X0H)V144LY.png Shell脚本应用(一)_脚本_35](http://s2.51cto.com/wyfs02/M00/87/45/wKioL1faAVvieXGxAAArDVhLYVk384.png?x-oss-process=image/resize,m_fixed,w_1184)
























