管理员shell脚本

Technorati 标记: shell,df,sed,awk

-监视系统统计信息

监视磁盘空闲空间

磁盘资源占用情况

监视CPU和内存使用情况

-执行备份

归档数据文件

脱机存储备份文件



监视系统统计信息

· 监视磁盘空闲空间

此shell脚本将监视特定卷上(如/)的可用磁盘空间,并在可用磁盘空间低于设置的阈值时发送一则电子邮件信息。

#!/bin/bash
# monitor available disk space
#注意格式 变量=`值`
SPACE=`df|sed -n ‘/\/$/p‘| gawk ‘{print $5}‘|sed ‘s/%//‘`
if [ $SPACE -ge 20 ]
then
echo "Disk space on root at $SPACE% used"|mail –s “Disk warning”
else
echo "Disk space on root is OK"
fi

添加任务计划

运行此脚本的频率取决于文件服务器的活跃程度。空间小的,一天一次;

#小型,每天上午12:30

30 0 * * * /root/diskmon

#大型,每天4次,12:30,8:30,下午12:30和下午4:30

30 0,8,12,16 * * * /root/diskmon

· 用户磁盘使用情况

#!/bin/bash

# calculate disk usage and report per user

TEMP=`mktemp -t tmp.XXXXXX`

du -s /home/* |grep -v lost|sed ‘s/\/home\///‘|sort -g -r > $TEMP

TOTAL=`du -s /home |gawk ‘{print $1}‘`

cat $TEMP |gawk -v n="$TOTAL" ‘

BEGIN {

print "Total Disk Useage by User"

print "User\tSpace\tPercent"

}

{

printf "%s\t%d\t%6.2f%\n",$2,$1,($1/n)*100

}

END {

print "---------------------------";

printf "Total\t%d\n", n

}‘

rm -f $TEMP

结果如下

[[email protected] ~]# ./diskhogs.sh

Total Disk Useage by User

User Space Percent

benny 3704 99.68%

test 12 0.32%

---------------------------

Total 3716

· 监控CPU和内存使用情况

捕获脚本

#!/bin/bash

# script to capture system statistics

OUTFILE=/root/capstats.csv

DATE=`date +%m/%d/%Y`

TIME=`date +%k:%M:%S`

TIMEOUT=`uptime`

VMOUT=`vmstat 1 2`

USERS=`echo $TIMEOUT | awk ‘{print $4}‘`

LOAD=`echo $TIMEOUT | awk ‘{print $9}‘| sed ‘s/,//‘`

FREE=`echo "$VMOUT"| sed -n ‘/[0-9]/p‘ | sed -n ‘2p‘ | awk ‘{print $4}‘`

IDLE=`echo "$VMOUT" | sed -n ‘/[0-9]/p‘ | sed -n ‘2p‘ | awk ‘{print $15}‘`

echo "$DATE,$TIME,$USERS,$LOAD,$FREE,$IDLE" >> $OUTFILE

结果如下

[[email protected] ~]# cat capstats.csv 

12/11/2016, 0:09:02,2,0.04,183360,100

输出html格式

#!/bin/bash

# parse capstats data into daily report

FILE=/root/capstats.csv

TEMP=/root/capstats.html

MAIL=which mutt

DATE=`date +"%A,%B,%d,%Y"`

echo "<html><body><h2>Report for $DATE</h2>" > $TEMP

echo "<table border=\"1\">" >> $TEMP

echo "<tr><td>Date</td><td>Time</td><td>Users</td>" >> $TEMP

echo "<td>Load</td><td>Free Memory</td><td>%CPU Idle</td></tr>" >> $TEMP

cat $FILE |awk -F, ‘{

printf "<tr><td>%s</td><td>%s</td><td>%s</td>",$1,$2,$3;

printf "<td>%s</td><td>%s</td><td>%s</td>\n</tr>\n",$4,$5,$6;

}‘ >> $TEMP

echo "</table></body></html>" >> $TEMP

$MAIL -a $TEMP -s "Stat report for $DATE" root < /dev/null

#rm -f $TEMP

结果如下

执行备份

使用shell脚本备份系统上数据的两种不同的方法。

· 1)归档数据文件

必需函数 tar命令

tar命令用于将整个目录归档为单个文件。

tar -cf archive.tar /root/test 2> /dev/null

创建日常归档文件

#!/bin/bash

# archive a working diretory

DATE=`date +%y%m%d`

FILE=archive$DATE

SOURCE=/root/test

DESTINATION=/root/archive/$FILE

tar -cf $DESTINATION $SOURCE 2> /dev/null

gzip $DESTINATION

创建每小时的归档脚本

#!/bin/bash

# archive a working diretory hourly

DAY=`date +%d`

MONTH=`date +%m`

TIME=`date +%k%M`

SOURCE=/root/test

BASEDEST=/root/archive

mkdir -p $BASEDEST/$MONTH/$DAY

DESTINATION=$BASEDEST/$MONTH/$DAY/archive$TIME

tar -cf $DESTINATION $SOURCE 2> /dev/null

gzip $DESTINATION

可结合cron

· 2)脱机存储备份文件

工作目录归档可以邮件附件的形式发送

#!/bin/bash

# archive a working directory and e-mail it out

MAIL=`which mutt`

DATE=`date +%y%m%d`

FILE=archive$DATE

SOURCE=/root/test

DESTINATION=/root/archive/$FILE

ZIPFILE=$DESTINATION.zip

tar -cf $DESTINATION $SOURCE 2> /dev/null

zip $ZIPFILE $DESTINATION

rm -f $DESTINATION

$MAIL -a $ZIPFILE -s "Archive for $DATE" [email protected] < /dev/null

PS: df sed awk

时间: 2024-10-11 23:13:39

管理员shell脚本的相关文章

shell脚本之微信报警功能的实现

导语:现在越来越流行微信报警功能了.下面就来看看具体实现吧! 1.先申请一个微信企业号 传送门:http://work.weixin.qq.com/ 2.添加用户 2.创建应用 3.创建管理组并添加管理员 接下来准备三个东西: CorpID 在我的企业一栏中 AgentId Secret 这2个都在应用中 API调试传送门:http://work.weixin.qq.com/api/devtools/devtool.php shell脚本的实现 1 #!/bin/bash 2 # -*- cod

shell脚本须知

什么是shell脚本,首先它是一个脚本,并不能作为正式的编程语言,说白了就是shell脚本就是一些命令的集合. 凡是自定义的脚本建议放到/usr/local/sbin/目录下,这样的好处是方便管理和维护,且利于以后交接给接替你的管理员. shell脚本的结构 #cat first.sh #! /bin/bash ## This is my first shell script. date echo "Hello world!" 脚本要以#! /bin/bash开头,代表的意思:该文件是

Linux shell脚本编程详解及应用实例

什么是shell脚本? 1.shell脚本:是一种解释型语言,不需要提前进行编译,只需将代码转化成中间代码,边解释边运行,执行效率稍逊于编译型语言,跨平台性好.而编译型语言则需要提前进行编译转化为二进制文件,靠近底层硬件执行效率高,可移植性差. 2.shell的首行严格来说使用shebang机制:由#和!构成的字符序列,在类unix系统中程序的载入器将其后的内容,当做解释器的指令,并将载有shebang文件路径作为解释器的参数,且予以调用. shell及其他解释型语言的一般格式?  #!/bin

学习 shell脚本之前的基础知识

转载自:http://www.92csz.com/study/linux/12.htm  学习 shell脚本之前的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写shell脚本,那么你就不算一个合格的管理员.目前很多单位在招聘linux系统管理员时,shell脚本的编写是必考的项目.有的单位甚至用shell脚本的编写能力来衡量这个linux系统管理员的经验是否丰富.笔者讲这些的目的只有一个,那就是让你认真对待shell脚本,从一开始就要把基础知识掌握牢固,然后要

8.11_Linux之bash shell脚本编程入门篇(一)

什么是bash shell脚本编程? 答:Linux里面有多种shell,而CentOS和redhat的默认shell是bash shell.至于shell脚本,这个跟windows操作系统里面的批处理文件有点像(.bat的文件).不知道大家还是否记得Linux的哲学思想吗?其中有那么两点点:由众多目的的单一应用程序组成:一个程序只做一件事,且做好:组合目的的单一的小程序完成复杂的任务.我觉得shell脚本编程就很好的体现了这个哲学思想.shell脚本利用shell的功能缩写的一个"程序&quo

Linux Shell脚本攻略复习

1. 打开终端后的提示符中,$表示普通用户,#表示管理员用户root,root是linux系统中权限最高的用户. 2. shell脚本通常是一个#!起始的文本文件,其中#!位于解释器路径之前. 例如: #!/bin/bash 3. 注释部分以#为起始,一致延续到行尾 4. 默认情况下,echo在每次调用后会添加一个换行符.echo后面的文本可以带双引号,带单引号,或者不带单引号和双引号. 注意: a. 使用不带引号的echo时,没法在所要显示的文本中使用分号(;),因为分号在bash中被用作命令

shell脚本中的dat,计算器,内置变量的用法

什么是shell脚本.首先它是一个脚本,并不能作为正式的编程语言.因为是跑在linux的shell中,所以叫shell脚本.说白了,shell脚本就是一些命令的集合.举个例子,我想实现这样的操作: 1)进入到/tmp/目录: 2)列出当前目录中所有的文件名: 3)把所有当前的文件拷贝到/root/目录下: 4)删除当前目录下所有的文件. 简单的4步在shell窗口中需要你敲4次命令,按4次回车.这样是不是很麻烦?所以不妨把所有的操作都记录到一个文档中,然后去调用文档中的命令,这样一步操作就可以完

防止shell脚本长时间运行导致ssh超时

在一些对安全性要求较高的场景下,ssh的超时时间是管理员预先设置好的,在闲置一段时间后ssh连接会自动断开.这种情况下如果通过ssh执行脚本,而脚本运行时间又比较长的话,会导致ssh客户端和服务器长时间无交互而超时,命令执行失败. 使用bash子进程可以解决这种问题,思路是由子进程执行具体的逻辑代码,而由主进程来监控子进程的执行状态,同时向控制台输出字符来keep alive. bash创建子进程有多重方式,这里使用"()",然后用"&"将其放在后台执行.虽

Linux下定时备份MySQL数据库的Shell脚本

Linux下定时备份MySQL数据库的Shell脚本 对任何一个已经上线的网站站点来说,数据备份都是必须的.无论版本更新还是服务器迁移,备份数据的重要性不言而喻.人工备份数据的方式不单耗费大量时间和精力,还灰常不专业的说.于是,有了下面这段脚本的出现.参考了网上的很多教程,外加自己的测试,以下脚本经测试可用.#!/bin/bash#Shell Command For Backup MySQL Database Everyday Automatically By Crontab#Author :