Shell编程实战

脚本编程步骤

脚本编程一般分为以下几个步骤:
需求分析:根据系统管理的需求,分析脚本要实现的功能、功能实现的层次、实现的命令与语句等;
命令测试:将要用到的命令逐个进行测试,以决定使用的选项、要设置的变量等:
脚本编程:将测试好的命令写入到脚本文件中,并通过各种语句将命令执行的结果保存、判断或者发出报警等;
测试调优:对脚本进行测试,并根据结果进行优化,建议一边编程一边调试以减少错误
的发生。

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,具体执行如下。

至此,综合脚本案例执行完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/365400.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python实现网页自动化(自动登录需要验证的网页)

引言: python作为实现网页自动化的一个重要工具,其强大的各种封装的库使得程序运行更加简洁,只需要下载相应的库,然后调用库中的函数就可以简便的实现我们想要的网页相关操作。 正文: 我的前几篇文章写了关于初学爬虫中比较容易上手的功能,例如爬取静态网页的数据、动…

Java并发编程基础知识点

目录 Java并发编程基础知识点1、线程,进程概念及二者的关系进程相关概念线程相关概念进程与线程的关系补充小知识点: 2、线程的状态Java线程的状态:Java线程不同状态之间的切换图示 3、Java程序中如何创建线程?①、继承Thread类②…

使用Python绘制极坐标图

使用Python绘制极坐标图 极坐标图极坐标图的优点使用场景 效果代码 极坐标图 极坐标图(Polar Chart)是一种图表类型,用于显示在极坐标系中的数据。极坐标图使用圆形坐标系,角度表示一个变量的值,半径表示另一个变量的…

elk对于集群实例的日志的整合-基于logstash采集日志

说明:基于logstash采集日志 环境: 物理机192.168.31.151 一.启动2个测试实例,每5-10s随机生成一条订单日志 实例一 包位置:/home/logtest/one/log-test-0.0.1-SNAPSHOT.jar 日志位置:/docker/elastic/logstash_ingest_data/l…

“医”路赋能!实在智能签约新疆百草堂

在新疆,地域广阔、人口稀疏的特性限制了实体药店的服务覆盖面,同时《“健康中国2030”规划纲要》对医药电商模式的规范化要求,使得医药电商迎来前所未有的增长机遇,而大量的订单也带来了运营成本上升、服务时效性低的挑战。 近日&…

携程二面测开—中核

4.12 35min面试经验 自我介绍 在面试的开始,我简洁明了地进行了自我介绍,突出了我的教育背景、技能特长以及实习经历,为后续的面试内容打下了良好的基础。 实习的具体工作内容 在谈及实习经历时,我详细阐述了在实习期间所承担…

[Go 微服务] Kratos 验证码业务

文章目录 1.环境准备2.验证码服务2.1 kratos 初始化验证码服务项目2.2 使用 Protobuf 定义验证码生成接口2.3 业务逻辑代码实现 1.环境准备 protoc和protoc-gen-go插件安装和kratos工具安装 protoc下载 下载二进制文件:https://github.com/protocolbuffers/protobu…

【LeetCode】 740. 删除并获得点数

这真是一道好题!这道题不仅考察了抽象思维,还考察了分析能力、化繁为简的能力,同时还有对基本功的考察。想顺利地做出这道题还挺不容易!我倒在了第一步与第二步:抽象思维和化繁为简。题目的要求稍微复杂一些&#xff0…

CSS 背景添加白色小圆点样式

css也是开发过程中不可忽视的技巧 此专栏用来纪录不常见优化页面样式的css代码 效果图: 未添加之前: 代码: background: radial-gradient(circle at 1px 1px, #3d3c3c 2px, transparent 0);background-size: 20px 25px;

【Docker项目实战篇】Docker部署PDF多功能工具Stirling-PDF

【Docker项目实战篇】Docker部署PDF多功能工具Stirling-PDF 前言一、Stirling-PDF介绍1.1 Stirling-PDF简介1.2 Stirling-PDF功能 二、本次实践规划2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四…

鸿蒙如何打包应用程序

总结鸿蒙应用程序包 之前文章详细讲解了关于三种程序包的内容,现在简单总结一下: 1. 总结 首先需要搞清楚鸿蒙项目的模块Module的分类: Module分为“Ability”和“Library”两种类型 HAP HAP: Harmony Ability Package , 叫做鸿蒙Ability包。 “Abil…

【AI大模型】跌倒监控与健康:技术实践及如何改变未来

文章目录 1. **背景与意义**2. **关键技术与方法**2.1 传感器数据融合2.2 深度学习模型2.3 行为模式识别2.4 预测与预防 3. **应用场景**3.1 老年人跌倒预警3.2 康复患者监测3.3 高风险职业防护 4. **实践案例**案例1:某老年社区的跌倒预警系统案例2:康复…

C++ 几何算法 打印图案 1*2*5*6 –3*4(Geometric Algorithms Print the pattern 1*2*5*6 –3*4)

给定整数 N,任务是打印一个倒三角形,其中左半部分由 [1, N*(N1)/2] 范围内的元素组成,右半部分由 [N*(N1)/2 1, N*(N1)] 范围内的元素组成。 例子: 输入: N 3 输出: 1*2*3*10*11*12 4*5*8*9 …

业务模型扩展字段存储

构建业务模型时,通常模型会设置扩展信息,存储上一般使用JSON格式存储到db中。JSON虽然有较好的扩展性,但并没有结构化存储的类型和非空等约束,且强依赖代码中写入/读取时进行序列化/反序列化操作, 当扩展信息结构简单且…

webStorm debug vue项目的两种方案

一、前言 本文将介绍通过webstorm对vue项目进行debugger调试的两种方案。 但是,不管通过那种方案,都无法达到类似后端idea调试的体验,感觉十分难受,不过,比起用console.log还是好一些。如果各位有更好的方案&#xf…

贪心问题(POJ1700/1017/1065)(C++)

一、贪心问题 贪心算法 贪心算法(greedy algorithm),是用计算机来模拟一个「贪心」的人做出决策的过程。这个人十分贪婪,每一步行动总是按某种指标选取最优的操作。而且他目光短浅,总是只看眼前,并不考虑…

nacos漏洞

Alibaba Nacos是阿里巴巴推出来的一个新开源项目,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。致力于帮助发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,可以快速实现动态服务发现、服务配置、服务元数据及流量管理…

nginx架构学习

前言 这篇文章主要记录下对nginx架构的学习记录。 架构设计 优秀的模块化设计 高度模块化的设计是Nginx的架构基础。在Nginx中,除了少量的核心代码,其他一切皆 为模块。 在这5种模块中,配置模块与核心模块都是与Nginx框架密切相关的&…

【Python】利用代理IP爬取当当网数据做数据分析

前言 在数字化浪潮的推动下,电商平台已经彻底改变了我们的购物方式。从简单的在线交易到复杂的用户交互,电商平台积累了海量的用户数据。这些数据,如同隐藏在深海中的宝藏,等待着被发掘和利用。通过分析用户的浏览、搜索、购买等行…

华为RH2288H V2服务器,远程端口安装Linux操作系统

1、管理口 每台服务器的管理口不一样的,假如我的管理IP地址为:192.168.111.201 使用网线,将管理口和自己电脑连接起来,自己ip地址设置成和管理ip同一网段。 使用 ie 浏览器,如果是Edge,必须在Internet Exp…