ecs服务器shell常用脚本练习(五)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 【4月更文挑战第3天】shell代码训练(五)

1. 检测MySQL 服务是否存活

#!/bin/bash

#host 为你需要检测的MySQL 主机的IP 地址,user 为MySQL 账户名,passwd 为密码

#这些信息需要根据实际情况修改后方可使用

host=127.0.0.1

user=root

passwd=123456

mysqladmin ‐h 127.0.0.1 ‐u root ‐p'$passwd' ping &>/dev/null

if [ $? ‐eq 0 ];then

echo "MySQL is UP"

else

echo "MySQL is down"

fi

2. 备份MySQL 的shell 脚本(mysqldump 版本)

#!/bin/bash

#定义变量user(数据库用户名),passwd(数据库密码),date(备份的时间标签)

#dbname(需要备份的数据库名称,根据实际需求需要修改该变量的值,默认备份mysql 数据库)

user=root

passwd=123456

dbname=mysql

date=$(date +%Y%m%d)

#测试备份目录是否存在,不存在则自动创建该目录

[ ! ‐d /mysqlbackup ] && mkdir /mysqlbackup

#使用mysqldump 命令备份数据库

mysqldump ‐u"user"p"user" ‐p"passwd" "dbname">/mysqlbackup/"dbname" > /mysqlbackup/"dbname"‐${date}.sql

3. 将文件中所有的小写字母转换为大写字母

#!/bin/bash

#$1 是位置参数,是你需要转换大小写字母的文件名称

#执行脚本,给定一个文件名作为参数,脚本就会将该文件中所有的小写字母转换为大写字母

tr "[a‐z]" "[A‐Z]" < $1

4. 非交互自动生成SSH 密钥文件

#!/bin/bash

#‐t 指定SSH 密钥的算法为RSA 算法;‐N 设置密钥的密码为空;‐f 指定生成的密钥文件存放在哪里

rm ‐rf ~/.ssh/{known_hosts,id_rsa*}

ssh‐keygen ‐t RSA ‐N '' ‐f ~/.ssh/id_rsa

5. 检查特定的软件包是否已经安装

#!/bin/bash

if [ $# ‐eq 0 ];then

echo "你需要制定一个软件包名称作为脚本参数"

echo "用法:$0 软件包名称 ..."

fi

#@@提取所有的位置变量的值,相当于*

for package in "$@"

do

if rpm ‐q ${package} &>/dev/null ;then

echo ‐e "${package}\033[32m 已经安装\033[0m"

else

echo ‐e "${package}\033[34;1m 未安装\033[0m"

fi

done

6. 监控HTTP 服务器的状态(测试返回码)

#!/bin/bash

#设置变量,url 为你需要检测的目标网站的网址(IP 或域名)

url=http://192.168.4.5/index.html

#定义函数check_http:

#使用curl 命令检查http 服务器的状态

#‐m 设置curl 不管访问成功或失败,最大消耗的时间为5 秒,5 秒连接服务为相应则视为无法连接

#‐s 设置静默连接,不显示连接时的连接速度、时间消耗等信息

#‐o 将curl 下载的页面内容导出到/dev/null(默认会在屏幕显示页面内容)

#‐w 设置curl 命令需要显示的内容%{http_code},指定curl 返回服务器的状态码

check_http(){

status_code=(curlm5so/dev/nullw(curl ‐m 5 ‐s ‐o /dev/null ‐w %{http_code} url)

}

while :

do

check_http

date=$(date +%Y%m%d‐%H:%M:%S)

#生成报警邮件的内容

echo "当前时间为:$date

url,url 服务器异常,状态码为{status_code}.

请尽快排查异常." > /tmp/http$$.pid

#指定测试服务器状态的函数,并根据返回码决定是发送邮件报警还是将正常信息写入日志

if [ $status_code ‐ne 200 ];then

mail ‐s Warning root < /tmp/http$$.pid

else

echo "$url 连接正常" >> /var/log/http.log

fi

sleep 5

done

7. 自动添加防火墙规则,开启某些服务或端口(适用于RHEL7)

#!/bin/bash

#设置变量定义需要添加到防火墙规则的服务和端口号

#使用firewall‐cmd ‐‐get‐services 可以查看firewall 支持哪些服务

service="nfs http ssh"

port="80 22 8080"

#循环将每个服务添加到防火墙规则中

for i in $service

do

echo "Adding $i service to firewall"

firewall‐cmd ‐‐add‐service=${i}

done

#循环将每个端口添加到防火墙规则中

for i in $port

do

echo "Adding $i Port to firewall"

firewall‐cmd ‐‐add‐port=${i}/tcp

done

#将以上设置的临时防火墙规则,转换为永久有效的规则(确保重启后有效)

firewall‐cmd ‐‐runtime‐to‐permanent

8. 使用脚本自动创建逻辑卷

#!/bin/bash

#清屏,显示警告信息,创建将磁盘转换为逻辑卷会删除数据

clear

echo ‐e "\033[32m !!!!!!警告(Warning)!!!!!!\033[0m"

echo

echo "+++++++++++++++++++++++++++++++++++++++++++++++++"

echo "脚本会将整个磁盘转换为PV,并删除磁盘上所有数据!!!"

echo "This Script will destroy all data on the Disk"

echo "+++++++++++++++++++++++++++++++++++++++++++++++++"

echo

read ‐p "请问是否继续y/n?:" sure

#测试用户输入的是否为y,如果不是则退出脚本

[ $sure != y ] && exit

#提示用户输入相关参数(磁盘、卷组名称等数据),并测试用户是否输入了这些值,如果没有输入,则脚本退出

read ‐p "请输入磁盘名称,如/dev/vdb:" disk

[ ‐z $disk ] && echo "没有输入磁盘名称" && exit

read ‐p "请输入卷组名称:" vg_name

[ ‐z $vg_name ] && echo "没有输入卷组名称" && exit

read ‐p "请输入逻辑卷名称:" lv_name

[ ‐z $lv_name ] && echo "没有输入逻辑卷名称" && exit

read ‐p "请输入逻辑卷大小:" lv_size

[ ‐z $lv_size ] && echo "没有输入逻辑卷大小" && exit

#使用命令创建逻辑卷

pvcreate $disk

vgcreate vgnamevg_name disk

lvcreate ‐L lvsizeMn{lv_size}M ‐n {lv_name} ${vg_name}

9. 显示CPU 厂商信息

#!/bin/bash

awk '/vendor_id/{print $3}' /proc/cpuinfo |uniq

10. 删除某个目录下大小为0 的文件

#!/bin/bash

#/var/www/html 为测试目录,脚本会清空该目录下所有0 字节的文件

dir="/var/www/html"

find $dir ‐type f ‐size 0 ‐exec rm ‐rf {} \;


相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
相关文章
|
15天前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
53 1
|
1天前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
11 2
6种方法打造出色的Shell脚本
|
6天前
|
监控 网络协议 Shell
ip和ip网段攻击拦截系统-绿叶结界防火墙系统shell脚本
这是一个名为“小绿叶技术博客扫段攻击拦截系统”的Bash脚本,用于监控和拦截TCP攻击。通过抓取网络数据包监控可疑IP,并利用iptables和firewalld防火墙规则对这些IP进行拦截。同时,该系统能够查询数据库中的白名单,确保合法IP不受影响。此外,它还具备日志记录功能,以便于后续分析和审计。
31 6
|
2天前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
17天前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
24 1
|
22天前
|
分布式计算 Hadoop Shell
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
51 4
|
22天前
|
分布式计算 Hadoop Shell
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
50 3
|
1月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
58 12
|
30天前
|
存储 运维 监控
自动化运维:使用Shell脚本简化日常任务
【9月更文挑战第35天】在IT运维的日常工作中,重复性的任务往往消耗大量的时间。本文将介绍如何通过编写简单的Shell脚本来自动化这些日常任务,从而提升效率。我们将一起探索Shell脚本的基础语法,并通过实际案例展示如何应用这些知识来创建有用的自动化工具。无论你是新手还是有一定经验的运维人员,这篇文章都会为你提供新的视角和技巧,让你的工作更加轻松。
31 2
|
2月前
|
Shell
shell脚本变量 $name ${name}啥区别
shell脚本变量 $name ${name}啥区别