Linux Shell DAY12

1.每日一文件

2.统计IP访问量

3.统计内存占用之和

4.检测机器存活

5.批量改文件名


每日一文件

题目要求

请按照这样的日期格式(xxxx-xx-xx)每日生成一个文件

例如生成的文件为201712-20.log。并且把磁盘的使用情况写到这个文件中

不用考虑cron,仅仅写脚本即可

核心要点

date命令用法

df命令

#!/bin/bash

d = date +%F

dir=/data/logs/disklog             指定保存目录

if \[ ! -d $dir\]                              判断目录是否存在

then

    mkdir -p $dir

fi

df -h > $dir/$d.log

find $dir/  -mtime +365 |xargs rm   删除一年前的文件






统计IP访问量

题目要求

有日志1.log,部分内容如下

112.111.12.248 – [25/Sep/2013:16:08:31 +0800]formula-x.haotui.com “/seccode.php?update=0.5593110133088248″ 200″http://formula-x.haotui.com/registerbbs.php” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)”

61.147.76.51 – [25/Sep/2013:16:08:31 +0800]xyzdiy.5d6d.com “/attachment.php?aid=4554&k=9ce51e2c376bc861603c7689d97c04a1&t=13345640

统计出每个IP访问量有多少

核心要点

awk、sort、uniq命令

awk '{print $1}' 1.log |sort -n |uniq -c|sort -n -r 





统计内存占用之和

题目要求

写一个脚本计算一下linux系统所有进程占用内存大小的和。

核心要点
  • ps命令用法

  • for循环

  • 加法运算

#!/bin/bash

sum=0

for n in 'ps aux |grep -v 'TIME COMMAND' | awk '{print $6}''

do

sum=$($sum+$n)

done

echo $sum



检测机器存活

题目要求

设计一个脚本,监控远程的一台机器(假设ip为192.168.78.129)的存活状态,当发现宕机时发一封邮件给你自己。

核心要点

ping -c10 192.168.78.129 通过ping来判定对方是否在线

发邮件脚本 https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D22Z/mail.py

#!/bin/bash

n=\`ping -c5 192.168.78.129|grep 'packet' |awk -F '%' '{print $1}' |awk '{print $NF}'\`

if \[ -z "$n" \]

then

    echo "脚本有问题。"

    python mail.py $m "检测机器存活脚本$0有问题" "获取变量的值为空"

    exit

else

    n1=\`echo $n|sed 's/\[0-9\]//g'\`

    if \[ -n "$n" \]

    then

        echo "脚本有问题。"

        python mail.py $m "检测机器存活脚本$0有问题" "获取变量的值不是纯数字"

        exit

    fi

fi

m=123@qq.com

while :

do

    if \[ $n -ge 50 \]

    then

    python mail.py $m "机器宕机" "丢包率是$n%"

    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.qq.com](http://smtp.qq.com/)'

    gport = 25

    try:

        # msg = MIMEText(unicode(content).encode('utf-8')) //如果发送的邮件有乱码,可以尝试把这行改成如下:

        msg = MIMEText(content,'plan','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\]

##定义QQ邮箱的账号和密码,你需要修改成你自己的账号和密码(请不要把真实的用户名和密码放到网上公开,否则你会死的很惨)

    sendqqmail('[1234567@qq.com](mailto:1234567@qq.com)','aaaaaaaaaa','[1234567@qq.com](mailto:1234567@qq.com)',to,subject,content)

if \_\_name\_\_ == "\_\_main\_\_":

    main()

#####脚本使用说明######

#1. 首先定义好脚本中的邮箱账号和密码

#2. 脚本执行命令为:python mail.py 目标邮箱 "邮件主题" "邮件内容"


批量改文件名

题目要求

找到/123目录下所有后缀名为.txt的文件

  1. 批量修改.txt为.txt.bak

  2. 把所有.bak文件打包压缩为123.tar.gz

  3. 批量还原文件的名字,即把增加的.bak再删除

核心要点
  • find用来查找所有.txt文件

  • tar打包一堆文件

  • 还原文件名用for循环

#!/bin/bash

find /123/ -type f -name "*.txt" > /tmp/txt.list

for f in \`cat /tmp/txt.list\`

do

mv $f $f.bak

done

#find /123/ -type f -name *.txt |xargs -i mv {} {}.bak

#find /123/ -type f -name *.txt -exec mv {} {}.bak \\;

for f in \`cat /tmp/txt.list\`

do

echo $f.bak

done > /tmp/txt.bak.list

tar -czvf 123.tar.gz \`cat /tmp/txt.bak.list |xargs \`

for f in \`cat /tmp/txt.list\`

do

mv $f.bak $f

done

转载于:https://my.oschina.net/u/3959701/blog/3098883

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值