脚本编程步骤
脚本编程一般分为以下几个步骤:
需求分析:根据系统管理的需求,分析脚本要实现的功能、功能实现的层次、实现的命令与语句等;
命令测试:将要用到的命令逐个进行测试,以决定使用的选项、要设置的变量等:
脚本编程:将测试好的命令写入到脚本文件中,并通过各种语句将命令执行的结果保存、判断或者发出报警等;
测试调优:对脚本进行测试,并根据结果进行优化,建议一边编程一边调试以减少错误
的发生。
MAC记录与端口扫描脚本
需求描述
编写名为system.sh 的脚本,记录局域网中各主机的 MAC 地址,保存到/etc/ethers 文
件中;若此文件已存在,应先转移进行备份;每行一条记录,第1列为IP地址,第2列为对应的 MAC 地址。
检查有哪些主机开启了匿名 FTP 服务,扫描对象为/etc/ethers 文件中的所有 IP 地址,扫描的端口为 21。
实现步骤
开发系统监控脚本
需求描述
编写名为 sysmon.sh 的 Shell 监控脚本。
监控内容包括 CPU 使用率、内存使用率、根分区的磁盘占用率。
百分比只需精确到个位,如7%、12%、23%等。
出现以下任一情况时告警:磁盘占用率超过 90%、CPU 使用率超过 80%、内存使用率超过 90%,告警邮件通过 mai 命令发送到指定邮箱。
结合 crond 服务,每半小时执行一次监控脚本。
实现步骤
编写shell监控脚本
测试sysmon。sh脚本的执行情况
首先确认有可用的邮件服务器(如Postfx、Sendmail 等),然后调低监控值,执行sysmon.sh 脚本进行测试。
然后查收 root@localhost的邮箱,确认告警邮件内容。
设置crontab计划任务
首先确认系统服务crond已经运行
添加crontab计划任务配置,每半个小时调用一次sysmons.sh脚本程序
脚本综合案例
案例概述
KGC公司的阿里云账户内有两台空闲的ECS(服务器),现要使用这两台服务器搭建一组游戏区组,搭建之前有一些初始化及配置操作,要求写一个自动化部署的Shell脚本来完成这些任务,并通过 Shell 脚本来完成FTP的安装和配置。
案例环境
案例需求
两台机器分别为A和 B,它们的内网IP 分别为192.168.8.8和 192.168.8.9,操作系统都是 CentOS7.3,系统分区都在/dev/sda上面,同时B上面还有一块新添加的磁盘/dev/sdb,该磁盘未被格式化和分区。具体要求如下所示。
(1)Shel脚本要求只在A上运行,完成所有脚本任务;
(2)Shell 脚本要求完成B的/dev/sdb 磁盘分区格式化并挂载到/data目录:
(3)Shell脚本要求完成A和B的系统初始化,对系统的初始化要求完成如下内容:
①常用软件包的安装,如wget、vim、Irzsz、net-tools、gcc;②)修改文件描述符至 65535:
③检查系统是否为en US.UTF8编码,如果不是则改为该编码,要有检查步骤:④修改 ssh 默认端口 22 为63008:
⑤禁用 root 登录,添加普通用户 bdqn 并设置密码为 bdqn2019,同时配置 sudo权限;
⑥添加行为审计,记录用户操作的命令及对应时间:
⑦添加开启防火墙功能,只允许公网IP 2.2.2.2连接ssh端口、应用端口 6000 和873 对所有开放,内网192.168.8.0/24 不限制,同时外部网络禁 ping。
(4)Shel 脚本要求在A上通过脚本实现 vsfpd的安装及用户添加,具体要求如下:①添加一个 admin 用户:
②)通过循环的方式实现添加 10个只可以下载的用户:
③vsftpd 正常启动提供服务:
④)虚拟用户均不允许登录系统,并且使用fp时会被锁定在指定目录内不可进入系统的其他目录。
脚本实现步骤
(1)编写初始化脚本sysfirst.sh
该脚本实现了系统的初始化,因为A和B都需要进行初始化,并且B机器还要进行分区和格式化,所以在脚本的开头做了判断,如果是A执行,就不执行格式化操作,如果是B执行,要进行B的格式化操作。
脚本先安装了一些常规软件,检测了系统的编码类型,如果不是 UTF-8的则修改为UTF-8编码,接着对 SSH的安全方面进行了一些优化,针对登录系统的用户还有行为审计,对用户的登录和操作命令进行记录供后续查找问题和审计使用,防火墙使用的是iptables,配置的规则提前写入iptables 文件内,然后覆盖服务器上现有文件/etc/sysconfig/iptables,之后再重启 iptables 服务完成配置。
(2)编写 vsftp 安装配置脚本
该脚本实现了 vsftp的安装和配置,添加了用户及对虚拟用户的配置,该脚本也是被入口脚本文件调用使用的。
(3)编写入口脚本
该脚本是整个案例的入口,作为入口脚本,在脚本的开头要先定义B机器的IP地址和密码,然后在进行执行完成相关的功能配置。
脚本先在A机器上面远程对 B进行磁盘分区,采用expect方式解决交互的问题,接着将初始化脚本 sysfirst.sh 拷贝到B机器,并通过 expect 方式执行初始化,然后在 A上面执行 ttp 安装配置脚本,并在本机执行初始化脚本,来完成所有需求。
(4)脚本的测试执行
脚本的执行需通过入口脚本来执行,并确保A和B机器上面都安装了expect,具体执行如下。
至此,综合脚本案例执行完成。