Shell練習(二)
阿新 • • 發佈:2018-02-07
odi tool 一次 pan debug load default subject class 習題1:統計內存使用
要求:寫一個腳本計算一下linux系統所有進程占用內存大小的和。(提示:使用ps或者top命令)
參考答案:
#!/bin/bash # date:2018年2月6日 # 使用top計算 echo -n "top統計結果:";top -bn1|sed '1,7'd|awk '{(sum=sum+$6)}; END {print sum}' # 使用ps計算 echo -n " ps統計結果:";ps aux|grep -v 'RSS'|awk '{(sum=sum+$6)}; END {print sum}' # 使用for循環 sum=0 for men in `ps aux|grep -v 'RSS'|awk '{print $6}'` do sum=$[$sum+$men] done echo "(ps)The total memory is $sum""k"
習題2:設計監控腳本
要求:設計一個腳本,監控遠程的一臺機器(假設ip為123.23.11.21)的存活狀態,當發現宕機時發一封郵件給你自己
提示: 1. 你可以使用ping命令 ping -c10 192.168.139.128
2. 發郵件腳本可以參考 mail.py
3. 腳本可以搞成死循環,每隔30s檢測一次
參考答案:
#!/bin/bash # date:2018年2月6日 ip="192.168.139.128" email="[email protected]" while : do ping -c10 $ip >/dev/null 2>/dev/null if [ $? -ne "0" ];then python /root/shell/mail.py "$email" "$ip down" "$ip is down..." else echo "mail send fail!" fi sleep 30 done
郵件腳本mail.py
#!/usr/bin/env python #-*- coding: UTF-8 -*- import os,sys reload(sys) sys.setdefaultencoding('utf8') import getopt import smtplib from email.MIMEText import MIMEText from email.MIMEMultipart import MIMEMultipart from subprocess import * def sendqqmail(username,password,mailfrom,mailto,subject,content): gserver = 'smtp.163.com' gport = 25 try: msg = MIMEText(unicode(content).encode('utf-8')) msg['from'] = mailfrom msg['to'] = mailto msg['Reply-To'] = mailfrom msg['Subject'] = subject smtp = smtplib.SMTP(gserver, gport) smtp.set_debuglevel(0) smtp.ehlo() smtp.login(username,password) smtp.sendmail(mailfrom, mailto, msg.as_string()) smtp.close() except Exception,err: print "Send mail failed. Error: %s" % err def main(): to=sys.argv[1] subject=sys.argv[2] content=sys.argv[3] sendqqmail('[email protected]','郵箱的授權碼','[email protected]',to,subject,content) if __name__ == "__main__": main()
Shell練習(二)