powder shell上编写c++_Shell脚本编程05——Shell编程实战

Shell脚本编程-05——Shell编程实战

脚本编程的步骤

1、需求分析

       根据系统管理的需求,分析脚本要实现的功能、功能实现的层次、实现的命令与语句等。

2、命令测试

       将要用到的命令逐个进行测试,以决定使用的选项、要设置的变量等。

3、编程

       将测试好的命令写入脚本文件中,并通过各种语句将命令执行的结果保存、判断或者发出报警等。

4、调试优化

       对脚本进行测试,并根据结果进行优化,建议一边编程一边调试,以减少错误的发生。

案例脚本

1、欢迎脚本的编程

       (1)企业环境说明

       为了集中查看Linux服务器各方面的运行情况,管理员(root)希望制定自己的登录环境,以便登录时自动显示监控信息。

       需求描述:为root用户编写登录欢迎脚本,成功登录报告当前主机中的进程数、已登录用户数、登录的用户名、根文件系统的磁盘使用率。

       涉及命令:

       ps命令

       who命令

       wc命令

       df命令

       grep命令

       awk命令

0991c3d8144feb19dde6fdd634d5e1b1.png

a6f687839a8f9949703653d21f1ce245.png

5a7ea0f2fb7b3c9634d64cbf1f3d3385.png

d52ca66fe43ba3edec8e493148227641.png

6fcbc52e254a2a67bac2889d645633c8.png

d1c7d95d81cf96c661e4447aec1140f2.png

ac0a0a68f757f7195855777d4b74a312.png

9a999a8a30dc036d1b9d76dbdd820378.png

d3219ba53d35f2827a7d512d0e413593.png

e2902ce0e249ee1f082a2ec7ffe2736f.png

测试后删除set -x 与set +x

431b877e21079f17f63775b17cb32697.png

1f8205000958d86de6b7ade2431c7079.png

632788e997e2fdb0e0da3017dc14abae.png

2、MAC记录与端口扫描脚本

       企业环境说明:随着业务的不断发展,某公司所使用的Linux服务器也越来越多。在系统管理和维护过程中,经常需要编写一些实用的小脚本,以辅助运维工作,提高工作效率。

       需求描述:编写名为system.sh的小脚本,记录局域网中各主机的MAC地址,保存到/etc/ethers文件中;若此文件已存在,应先转移进行备份;每行一条记录,第1列为IP地址,第2列为对应的MAC地址。

       检查有哪些主机开启了匿名FTP服务,扫描对象为/etc/ethers文件中的所有IP地址,扫描端口为21。

知识点补充:

       arping 命令,在指定网卡上发送ARP请求指定地址

       -A  ARP回复模式,更新邻居

       -b  保持广播

       -D  复制地址检测模式

       -f  得到第一个回复就退出

       -q  不显示警告信息

       -U  主动的ARP模式,更新邻居

       -c  发送的数据包的数目

       -w  设置超时时间

       -I  使用指定的以太网设备,默认情况下使用eth0

       -s  指定源IP地址

       -h  显示帮助信息

       -V  显示版本信息

       arp 命令,管理系的arp缓存

       -d  IP地址       删除一个arp表项 例:arp -d 192.168.1.104

    -s  IP地址 MAC地址       设置一个arp表项 例:arp -s 192.168.1.108 00:0c:29:11:22:33

    -a 使用bsd形式输出。(没有固定的列)

    -n 使用数字形式显示ip地址,而不是默认的主机名形式

    -D 不是指定硬件地址而是指定一个网络接口的名称,表项将使用相应接口的MAC地址。一般用来设置ARP代理

    -i 指定设置哪个网络接口上面的arp表项 例:arp -i eth1

-f filename: 作用同'-s',不过它通过文件来指定IP地址和MAC地址的绑定。文件中每行分别是主机和MAC,中间以空格分割。如果没有指定文件名称,则使用/etc/ethers文件

wget 命令

-t,  --tries=NUMBER            设置重试次数为 NUMBER (0 代表无限制)

-T,  --timeout=SECONDS         将所有超时设为 SECONDS 秒

-O,  --output-document=FILE     将文档写入 FILE

-Q,  --quota=NUMBER          设置获取配额为 NUMBER 字节

--limit-rate=RATE                       限制下载速率为 RATE

-c,  --continue                 断点续传下载文件

-q,  --quiet                         安静模式 (无信息输出)

-r,  --recursive                         指定递归下载

-l,  --level=NUMBER                     最大递归深度 (inf 或 0 代表无限制,即全部下载)

--ftp-user=USER                      设置 ftp 用户名为 USER

--ftp-password=PASS                  设置 ftp 密码为 PASS

-A,  --accept=LIST              逗号分隔的可接受的扩展名列表

-R,  --reject=LIST               逗号分隔的要拒绝的扩展名列表

c19164dc1bb74687fe7374d4adcfc4e9.png

7a09e73a3b9e3662ade5690528bbf93d.png

3、开发系统监控脚本

       企业环境说明:某公司随着业务的不断发展,所使用的Linux服务器也越来越多。管理员希望编写一个简单的性能监控脚本,放到各个服务器中,当监控指标出现异常时发送告警邮件。

       需求描述:编写名为sysmon.sh的Shell监控脚本,监控内容包括:CPU使用率、内存使用率、根分区的磁盘占用率(百分比精确到个位)。出现以下任一情况时报警:磁盘占用率超过90%、CPU使用率超过80%、内存使用率超过90%,告警邮件通过mail命令发送到指定邮箱。结合crond服务,每半小时执行一次控制脚本。

涉及命令:

       df命令、awk命令、mpstat命令(由sysstat包安装)、free命令、crontab命令。

知识点补充:

       mpstat 命令

       格式:mpstat [-P {|ALL}] [internal [count]]

ed682ac4b7ad986445e732dd9656c18e.png

每隔1秒统计一次,共统计三次

字段函意:

%user     在internal时间段里,用户态的CPU时间(%),不包含nice值为负进程  (usr/total)*100

%nice      在internal时间段里,nice值为负进程的CPU时间(%)   (nice/total)*100

%sys       在internal时间段里,内核时间(%)       (system/total)*100

%iowait    在internal时间段里,硬盘IO等待时间(%) (iowait/total)*100

%irq       在internal时间段里,硬中断时间(%)     (irq/total)*100

%soft      在internal时间段里,软中断时间(%)     (softirq/total)*100

%idle      在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%) (idle/total)*100

       free命令

-b       显示内存的单位为字节

-k       显示内存的单位为KB

-m       显示内存的单位为M

-o       忽略缓冲区调节列

-t       总和信息

-s       每隔指定时间执行一次命令,单位为s

-h       以可读形式显示容量,需要free -V显示版本大于3.3

-V       版本信息

d0f709d5e4e8211c0a004eeabd59350b.png

2859ae91177eafb1dabe35220184b588.png

ae5f617455f26ffef6008fec6bcb5145.png

66697f3bd7f6c98c10f2129907cc8b49.png

497399b777b6475203eb5e49a55be02b.png

脚本编写知识点补充:

       若编写一个较为复杂庞大的shell脚本时,为了方便后期排错,需要建立日志文件记录错误发生的信息,可以使用tee命令。

       tee 命令:用来将标准输入的内容输出到标准输出并可以保存为文件

              -a       附加到文件

              -i       无视中断

              --help       显示帮助信息

              --version              显示版本信息

       示例:

e224024fb063b63c0d425aafb9be6057.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值