设为首页 收藏本站
查看: 1255|回复: 0

管理员shell脚本

[复制链接]

尚未签到

发表于 2018-8-27 08:19:28 | 显示全部楼层 |阅读模式
  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
  


结果如下[root@docker1 ~]# ./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  


结果如下[root@docker1 ~]# 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 "Report for $DATE" > $TEMP  

  

echo "" >> $TEMP  

  

echo "DateTimeUsers" >> $TEMP  

  

echo "LoadFree Memory%CPU>
  

cat $FILE |awk -F, '{  

  
printf "%s%s%s",$1,$2,$3;
  

  
printf "%s%s%s\n\n",$4,$5,$6;
  

  
}' >> $TEMP
  

  
echo "" >> $TEMP
  

  
$MAIL -a $TEMP -s &quot;Stat report for $DATE&quot; root < /dev/null
  

  
#rm -f $TEMP
  


结果如下
DSC0000.png

  执行备份
  使用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
  

DSC0001.png

  可结合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 &quot;Archive for $DATE&quot; root@docker1.com < /dev/null
  

  PS: df sed awk



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-557035-1-1.html 上篇帖子: shell脚本实践清除日志 下篇帖子: shell脚本练习(12.12)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表