日常运维工作shell脚本案例

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

1、list_sys_status.sh
显示系统使用的以下信息:
主机名、IP地址、子网掩码、网关、DNS服务器IP地址信息


#!/bin/bash
IP=`ifconfig eth0 | head -2 | tail -1 | awk '{print 2}' | awk -F":" '{print $2}'`  ZW=` ifconfig eth0 | head -2 | tail -1 | awk '{print $3}' | awk -F":" '{print $2}'`  GW=`route -n | tail -1 | awk '{print $2}'`  HN=`hostname`  DNS=`head -1 /etc/resolv.conf | awk '{print $2}'`  echo '此机IP地址是'2}' | awk -F":" '{print $2}'`  ZW=` ifconfig eth0 | head -2 | tail -1 | awk '{print $3}' | awk -F":" '{print $2}'`  GW=`route -n | tail -1 | awk '{print $2}'`  HN=`hostname`  DNS=`head -1 /etc/resolv.conf | awk '{print $2}'`  echo '此机IP地址是'IP
echo '此机子网掩码是' ZWechoGW
echo '此机主机名是' HNechoDNSDNS

2、mysqlbak.sh备份数据库目录脚本


#!/bin/bash
DAY=`date +%Y%m%d`
SIZE=`du -sh /var/lib/mysql`
echo "Date: DAY">>/tmp/dbinfo.txtecho"DataSize:SIZE" >> /tmp/dbinfo.txt
cd /opt/dbbak &> /dev/null || mkdir /opt/dbbak
tar zcf /opt/dbbak/mysqlbak-${DAY}.tar.gz /var/lib/mysql /tmp/dbinfo.txt &> /dev/null
rm -f /tmp/dbinfo.txt

crontab-e
55 23 */3 * * /opt/dbbak/dbbak.sh

3、每周日半夜23点半,对数据库服务器上的webdb库做完整备份
每备份文件保存到系统的/mysqlbak目录里
用系统日期做备份文件名 webdb-YYYY-mm-dd.sql
每次完整备份后都生成新的binlog日志
把当前所有的binlog日志备份到/mysqlbinlog目录下


#mkdir /mysqlbak 
#mkdir /mysqlbinlog
#service mysqld start
cd /shell
#vi webdb.sh
#!/bin/bash
day=`date +%F`
mysqldump -hlocalhost -uroot -p123 webdb > /mysqlbak/webdb-${day}.sql
mysql -hlocalhost -uroot -p -e "flush logs"
tar zcf /mysqlbinlog.tar.gz /var/lib/mysql/mysqld-bin.0*
#chmod +x webdb.sh 
#crontab -e
30 23 * * 7 /shell/webdb.sh


4、very.ser.sh(检查任意一个服务的运行状态)

只检查服务vsftpd httpd sshd crond、mysql中任意一个服务的状态

如果不是这5个中的服务,就提示用户能够检查的服务名并退出脚本
如果服务是运行着的就输出 "服务名 is running"
如果服务没有运行就启动服务


方法1:使用read写脚本
#!/bin/bash
read -p "请输入你的服务名:" service
if [ service!=crondaservice != 'httpd' -a service!=sshdaservice != 'mysqld' -a service!=vsftpd];thenecho"vsftpd,httpd,crond,mysqld,sshd"exit5fiserviceservice status &> /dev/null

if [ ?eq0];thhenecho"线"elseserviceservice start
fi

方法2:使用位置变量来写脚本
if [ -z 1];thenecho"Youmastspecifyaservername!"echo"Usage:basename0` servername"
exit 2
fi
if [ 1=="crond"]||[1 == "mysql" ] || [ 1=="sshd"]||[1 == "httpd" ] || [ 1=="vsftpd"];thenservice1 status &> /dev/null
if [ ?eq0];thenecho"1 is running"
else
service 1startfielseecho"Usage:basename0` server name"
echo "But only check for vsftpd httpd sshd crond mysqld" && exit2
fi


5、pc_noline.sh
输出192.168.1.0/24网段内在线主机的ip地址
统计不在线主机的台数,
并把不在线主机的ip地址和不在线时的时间保存到/tmp/ip.txt文件里


#!/bin/bash
ip=192.168.1.
j=0
for i in `seq 10 12`
do
ping -c 3 ipi &> /dev/null
if [ ?eq0];thenecho线ipielseletj++echoipi>>/tmp/ip.txtdate>>/tmp/ip.txtfidoneecho线j


6、一个简单的网站论坛测试脚本

用交互式的输入方法实现自动登录论坛数据库,修改用户密码


[root@test1 scripts]# vim input.sh

#!/bin/bash

End=ucenter_members
MYsql=/home/lnmp/mysql/bin/mysql

read -p "Enter a website directory : " webdir
WebPath=/home/WebSer/webdir/configechoWebPath

read -p "Enter dbuser name : " dbuser
echo dbuserreadsp"Enterdbuserpassword:"dbpassreadp"Enterdbname:"dbnameechodbname

read -p "Enter db tablepre : " dbtablepre 
echo dbtablepreGlobalphp=grep"tablepre"WebPath/config_global.php |cut -d "'" -f8`
Ucenterphp=`grep "UC_DBTABLEPRE*" WebPath/configucenter.php|cutd.f2|awkF""print$1if[dbtablepre == Globalphp ] && [dbtablepre == Ucenterphp];thenStart=dbtablepre
     Pre=`echo StartEnd`

     read -p "Enter you name : " userset
     echo usersetResult=MYsql -udbuserpdbpass dbnamee"selectusernamefromPre where username='userset\G"|cutdf2|tail1echoResult
     if [ userset==Result ];then
           read -p "Enter your password : " userpass
           passnew=`echo -n userpass|opensslmd5|cutdf2MYsql -udbuserpdbpass dbnamee"updatePre set password='passnewwhereusername=userset';"
           MYsqludbuser -pdbpassdbname -e "flush privileges;"
     else
           echo "$userset is not right user!"
           exit 1
     fi
else
     exit 2
fi


7、slave_status.sh(检查mysql主从从结构中从数据库服务器的状态)
1)本机的数据库服务是否正在运行
2)能否与主数据库服务器正常通信
3)能否使用授权用户连接数据库服务器
4)本机的slave_IO进程是否处于YES状态
      本机的slave_SQL进程是否处于YES状态


[root@test1 scripts]# vim test.sh

#!/bin/bash
netstat -tulnp | grep :3306 > /dev/null
if [ ? -eq 0 ];then  echo "服务正在运行"   else  service mysqld start  fi  ping -c 3 192.168.1.100 &> /dev/null  if [? -eq 0 ];then
echo "网络连接正常" 
else
echo "网络连接失败"
fi
mysql -h192.168.1.100 -uroot -p123456 &> /dev/null
if [ ? -eq 0 ];then  echo "数据库连接成功"   else  echo "数据库连接失败"  fi  IO= mysql -uroot -p123 -e "show slave status\G" | grep Slave_IO_Running | awk '{print2}' > /dev/null
SQL= mysql -uroot -p123 -e "show slave status\G" | grep Slave_SQL_Running | awk '{print $2}' /dev/null
if [ IO==Yes ] && [ SQL==Yes ];then
echo “IO and SQL 连接成功”
else
echo "IO线程和SQL线程连接失败"
fi




本文转自 2012hjtwyf 51CTO博客,原文链接:http://blog.51cto.com/hujiangtao/1933288,如需转载请自行联系原作者

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
关系型数据库 MySQL Shell
MySQL 备份 Shell 脚本:支持远程同步与阿里云 OSS 备份
一款自动化 MySQL 备份 Shell 脚本,支持本地存储、远程服务器同步(SSH+rsync)、阿里云 OSS 备份,并自动清理过期备份。适用于数据库管理员和开发者,帮助确保数据安全。
|
8天前
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
63 25
|
6天前
|
人工智能 运维 监控
阿里云携手神州灵云打造云内网络性能监测标杆 斩获中国信通院高质量数字化转型十大案例——金保信“云内网络可观测”方案树立云原生运维新范式
2025年,金保信社保卡有限公司联合阿里云与神州灵云申报的《云内网络性能可观测解决方案》入选高质量数字化转型典型案例。该方案基于阿里云飞天企业版,融合云原生引流技术和流量“染色”专利,解决云内运维难题,实现主动预警和精准观测,将故障排查时间从数小时缩短至15分钟,助力企业降本增效,形成可跨行业复制的数字化转型方法论。
|
3月前
|
Shell Linux
【linux】Shell脚本中basename和dirname的详细用法教程
本文详细介绍了Linux Shell脚本中 `basename`和 `dirname`命令的用法,包括去除路径信息、去除后缀、批量处理文件名和路径等。同时,通过文件备份和日志文件分离的实践应用,展示了这两个命令在实际脚本中的应用场景。希望本文能帮助您更好地理解和应用 `basename`和 `dirname`命令,提高Shell脚本编写的效率和灵活性。
156 32
|
2月前
|
关系型数据库 Shell 网络安全
定期备份数据库:基于 Shell 脚本的自动化方案
本篇文章分享一个简单的 Shell 脚本,用于定期备份 MySQL 数据库,并自动将备份传输到远程服务器,帮助防止数据丢失。
|
3月前
|
JavaScript Shell C#
多种脚本批量下载 Docker 镜像:Shell、PowerShell、Node.js 和 C#
本项目提供多种脚本(Shell、PowerShell、Node.js 和 C#)用于批量下载 Docker 镜像。配置文件 `docker-images.txt` 列出需要下载的镜像及其标签。各脚本首先检查 Docker 是否安装,接着读取配置文件并逐行处理,跳过空行和注释行,提取镜像名称和标签,调用 `docker pull` 命令下载镜像,并输出下载结果。使用时需创建配置文件并运行相应脚本。C# 版本需安装 .NET 8 runtime。
176 2
|
5月前
|
运维 Kubernetes Devops
自动化运维:从脚本到工具的演进之旅
在数字化浪潮中,自动化运维成为提升效率、保障系统稳定的关键。本文将探索自动化运维的发展脉络,从基础的Shell脚本编写到复杂的自动化工具应用,揭示这一技术变革如何重塑IT运维领域。我们将通过实际案例,展示自动化运维在简化工作流程、提高响应速度和降低人为错误中的重要作用。无论你是初学者还是资深专家,这篇文章都将为你提供宝贵的洞见和实用的技巧。
|
6月前
|
运维 Devops
自动化运维:从脚本到DevOps的进化之旅
在数字化时代,自动化运维不仅是提高生产效率的关键,更是企业竞争力的象征。本文将带领读者穿越自动化运维的发展历程,从最初的脚本编写到现代DevOps文化的形成,揭示这一演变如何重塑IT行业的工作模式。通过具体案例,我们将展示自动化工具和实践如何简化复杂任务,优化流程,并促进团队协作。你将发现,自动化运维不仅关乎技术的进步,更体现了人、流程和技术三者之间协同增效的深层逻辑。
|
6月前
|
机器学习/深度学习 人工智能 运维
自动化运维之路:从脚本到工具的演进
在IT运维领域,效率和准确性是衡量工作成效的关键指标。随着技术的发展,自动化运维逐渐成为提升这两个指标的重要手段。本文将带领读者了解自动化运维的演变历程,从最初的简单脚本编写到现今复杂的自动化工具应用,展示如何通过技术提升运维效率。文章不仅介绍理论和实践案例,还提供了代码示例,帮助读者理解自动化运维的实际应用场景。
|
6月前
|
运维 监控 网络安全
自动化运维的崛起:如何利用Python脚本简化日常任务
【10月更文挑战第43天】在数字化时代的浪潮中,运维工作已从繁琐的手工操作转变为高效的自动化流程。本文将引导您了解如何运用Python编写脚本,以实现日常运维任务的自动化,从而提升工作效率和准确性。我们将通过一个实际案例,展示如何使用Python来自动部署应用、监控服务器状态并生成报告。文章不仅适合运维新手入门,也能为有经验的运维工程师提供新的视角和灵感。