`
xiangxingchina
  • 浏览: 532457 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

不看后悔的Linux生产服务器Shell脚本分享

阅读更多

不看后悔的Linux生产服务器Shell脚本分享
作为一名Linux/unix系统管理员,我经常遇到人问这个问题:shell能做什么?PHP这么强大,为什么不用PHP来完成工作呢?其实相对于 PHP这些开发语言而言,shell主要用于数据库备份(SVN备份)、计划任务(crontab)、服务状态监控、FTP远程备份等。对于这些任 务,shell的强大是大家都公认的,这也是每一个Linux/unix系统管理员的基本之一。现在在Windows 2008里也出现了PowerShell的身影,十分不错。

下面我会用我的线上服务器的shell脚本举例来让大家了解shell及其用途。

【目录】

MySQL的热备份脚本
用FTP同步服务器
Keepalived的监控切换脚本
SVN的版本库的批量备份
自动监控ADSL并重拔号
Linux批量生成生成帐户(10月11日更新)
测试局域网内主机是否alive(10月11日更新)
点击下方的子页面标题,进入对应的shell脚本页面进行阅读。

一、MySQL的热备份脚本

这是MySQL的备份方式之一,脚本如下:

#!/bin/bash
PATH=/usr/local/sbin:/usr/bin:/bin

# The Directory of Backup
BACKDIR=/usr/mysql_backup
# The Password of MySQL
ROOTPASS=password

# Remake the Directory of Backup
rm -rf $BACKDIR
mkdir -p $BACKDIR

# Get the Name of Database
DBLIST=`ls -p /var/lib/mysql | grep / | tr -d /`
# 偷瞄了下我同事写脚本的方式,发现他直接将DBLIST一个个手动敲上去了
# 数据库少的情况是可以的,如果数据库是成百以上呢,呵呵

# Backup with Database
for dbname in $DBLIST
do
mysqlhotcopy $dbname -u root -p $ROOTPASS $BACKDIR | logger -t mysqlhotcopy
done许多系统管理员喜欢用mysqldump –opt来备份数据库,由于比较简单,我这里就不重复了。
二、用FTP同步服务器

许多系统管理员喜欢用rsync同步二台服务器之间的数据,但我们更喜欢用FTP来实现,其好处是:

FTP比rsync更能耗尽带宽,所以它更适合同步数据库(尤其是几百G的数据)
配置起来相当方便,尤其是用pureftpd
rsync的优势是可以快速海量同步小文件,比如二级目录或三级目录下的批量图片等
基本上FTP和rsync同步各有优势,看系统管理员的取舍了。以下是本部分要介绍的FTP同步的shell脚本方式:

FTPOLDDATE=`date +%Y-%m-%d -d ‘-60 days’`
#在FTP定义60天间的日期变量,是为了在FTP端保存60天的数据,逾期删除。

HOST=192.168.4.199
FTP_USERNAME=db
FTP_PASSWORD=password

cd ${BACKDIR}/${DATE}

ftp -i -n -v << !
open ${HOST}
user ${FTP_USERNAME} ${FTP_PASSWORD}
bin
cd ${FTPOLDDATE}
mdelete *
cd ..
rmdir ${FTPOLDDATE}
mkdir ${DATE}
cd ${DATE}
mput *
bye
!

三、Keepalived的监控切换脚本

实现功能如下:针对Nginx+Keepalived,编写nginx监控脚本nginx_pid.sh,放置在后台一直监控nginx进程;如进 程消失,尝试重启nginx,如是失败则立即停掉本机的keepalived服务,让另一台负载均衡器接手。此脚本详细内容如下:

#!/bin/bash
while :
do
nginxpid=`ps -C nginx –no-header | wc -l`
if [ $nginxpid -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 5
if [ $nginxpid -eq 0 ];then
/etc/init.d/keepalived stop
fi
fi
sleep 5
done相关说明可参考我发在组网频道的《企业级WEB的负载均衡高可用之LVS+Keepalived》一文。
四、SVN的版本库的批量备份

实现其功能蛮简单,主要是用了svnadmin hotcopy,这东东功能很强大,我经常用于svn的版本库的转移(顺便说一句,上次不小心误操作将库删光了,很轻松的用svnadmin hotcopy将其恢复过来了)。

for PROJECT in test project svntest
do
cd ${SVNDIR}
${SVNADMIN} hotcopy ${PROJECT} ${BACKDIR}/${DATE}/${PROJECT} –clean-logs

cd ${BACKDIR}/${DATE}
tar zcvf ${PROJECT}_svn_${DATE}.tar.gz ${PROJECT} > /dev/null
rm -rf ${PROJECT}
echo “Repository: ${PROJECT} backup done into ${BACKDIR}/${DATE}/ Successful!” >> ${LogFile} /bin/sleep 2done

五、自动监控ADSL并重拔号的shell脚本

公司办公室的adsl爱掉线,一掉的话网关的gateway就没了。因此编写了下列脚本:

#!/bin/bash
while :
doif route | tail -l | grep “0.0.0.0″then&>/dev/nullelseadsl-stopadsl-startfisleep 10done执行脚本方法: nuhup sh route.sh &

注意前面要用上nohup,这样避免root用户logout时此脚本也退出生效的问题。

六、Linux批量生成生成帐户脚本

此脚本应用于生产环境下生成帐户,也可生成成百上千个密码相同的帐户。脚本代码如下:

#!/bin/bash
for name in tom jerry joe jane
do
useradd $name
echo redhat | passwd — stdin $name
done自己使用的时候,用自己需要的帐户名列表替换掉这个代码范例里的tom jerry joe jane等字段即可。密码都是redhat,可以让用户之后自己更改。

七、测试局域网内主机是否alive的小脚本

此脚本用于检查192.168.1.100到192.168.1.200之间的主机是否alive。脚本如下:

#!/bin/bash
#Checks to see if hosts 192.168.1.100-192.168.1.200 are alive
for n in {100..200}; do
host=192.168.1.$n
ping -c2 $host &>/dev/null
if [ $? = 0 ]; then                      echo “$host is UP”         else                      echo “$host is DOWN”         fidone ※温馨小提示:注意$?与=之间必须空格。

小结

其它一些自动监控MySQL状态等脚本我感觉比较简单,适合于新手学习,有兴趣的可去抚琴煮酒的百度博客参观学习。如果大家感兴趣,以后也会分批整理出来跟大家分享。希望大家看了诸如此类的shell脚本,能从中学到对自己有所帮助的知识

分享到:
评论

相关推荐

    linux命令行与shell脚本编程.pdf

    Linux命令行与Shell脚本编程是一本专注于教授用户如何有效地使用Linux命令行和编写Shell脚本的书籍。该书的编纂目的是为了帮助读者掌握Linux操作系统下的命令行操作技能和自动化任务的脚本编程能力。内容涵盖了Linux...

    Linux命令行与shell脚本编程大全_learn-linuxshell.zip

    Linux命令行与shell脚本编程大全是计算机编程领域中,针对Linux操作系统用户界面的一本权威指南。本书深入浅出地介绍了如何高效地利用命令行进行日常管理工作以及编写shell脚本来自动化任务处理。涵盖了从基础命令的...

    Linux 命令与Shell 脚本编程pdf书籍

    《Linux命令行与Shell脚本编程大全》是一本专为Linux初学者编写的经典教材,旨在帮助读者深入理解和掌握Linux操作系统中的基本命令行操作以及Shell脚本编程技术。这本书全面覆盖了从基础到进阶的各种主题,对于想要...

    Linux命令行与Shell脚本编程大全_shell-code.zip

    《Linux命令行与Shell脚本编程大全》是一本专注于Linux操作系统下命令行使用和Shell脚本编写的实用指南书籍。本书不仅涵盖了Linux操作系统的基本概念和基础命令,还深入介绍了如何通过Shell脚本来自动化管理任务,...

    Linux操作系统Shell脚本.zip

    Linux操作系统Shell脚本.zipLinux操作系统Shell脚本.zipLinux操作系统Shell脚本.zip Linux操作系统Shell脚本.zipLinux操作系统Shell脚本.zipLinux操作系统Shell脚本.zip Linux操作系统Shell脚本.zipLinux操作系统...

    Linux_shell脚本全面学习

    Linux_shell脚本全面学习 Linux_shell脚本全面学习

    Linux+命令行和shell脚本编程宝典(清晰绝对完整版).rar

    Linux 命令行和shell脚本编程宝典(清晰绝对完整版).pdf,绝对完整的版本,清晰度比160多M的还要好一些,有完整书签,在CSDN上花8分下载了4个part,结果解压不了,超级郁闷。辛苦找到的这个真正完整的可以分享给大家...

    最实用的Linux 命令行和shell脚本编程宝典

    最实用的Linux 命令行和shell脚本编程宝典,是最常用的参考手册。

    Linux-shell脚本全面学习.pdf

    Linux Shell 脚本编程基础知识点总结 Linux 脚本编写基础 1.1 语法基本介绍 * `#!` 符号用来告诉系统它后面的参数是用来执行该文件的程序 * 在 Linux 中,使用 `/bin/sh` 来执行程序 * 编辑好脚本后,需要使其可...

    LinuxShell脚本学习基础视频

    资源名称:Linux Shell脚本学习基础视频资源目录:【】11a00d99b60c4e2eba3440b8aa3a6bdd【】linux_shell脚本编程_01认识shell,如何编写shell脚本和执行【】linux_shell脚本编程_02vivim简单的常用操作【】linux_...

    linux下shell脚本实现数据的导出

    在Linux环境下,shell脚本是自动化任务的强大工具,尤其对于数据导出这样的操作,通过编写shell脚本可以方便地实现定期备份或者按需导出。本文将深入讲解如何使用shell脚本来实现数据的导出,并结合Java代码进行调用...

    Linux+命令行和shell脚本编程宝典.pdf

    linux脚本+命令总结

    Linux通过Shell脚本命令修改密码的两种方式

    1. ssh 远程到主机;...很多时候我们可能需要远程执行服务器上的脚本来修改账号密码,此时就没有办法进行交互了。 此时可以使用如下两种方式修改密码: 方式1: echo password | passwd testuser --stdin &gt; /dev

    linux 通讯录shell脚本

    linux通讯录的shell脚本,很多linux大作业都需要

    Linux云计算-Shell脚本100例

    在IT行业中,Linux云计算与Shell脚本编程是两个至关重要的技术领域。Linux作为开源操作系统,广泛应用于服务器管理、云计算平台以及自动化任务执行等场景。Shell脚本,作为Linux环境下的命令解释器,允许用户编写一...

    Linux防火墙配置shell脚本.docx

    Linux防火墙配置shell脚本.docx

    Linux命令行与shell脚本编程、Linux C库函数及系统调用编程、Linux内核分析即应用.zip

    Linux命令行与shell脚本编程、Linux C库函数及系统调用编程、Linux内核分析即应用、Debian(Ubuntu、Deepin)操作系统爬坑.zip Linux命令行与shell脚本编程、Linux C库函数及系统调用编程、Linux内核分析即应用、...

    linux下的shell脚本

    在Linux操作系统中,Shell脚本是一种被广泛使用的脚本语言,它是用户与UNIX系统进行交云的桥梁。Shell不仅是一个命令解释器,它可以接收用户输入的命令并将其传递给操作系统执行,还具备许多强大的功能。Shell脚本的...

    Linux服务器安全加固shell脚本

    资深运维工程师亲自实践撰写的Linux服务器安全加固shell脚本,当然安全还要亲历亲为,不可马虎大意!

Global site tag (gtag.js) - Google Analytics