两类机器一共300多台,写个脚本自动清理这两类机器里面的日志文件,
在堡垒机上发布,也要批量发布到crontab里面,
A类机器日志存放路径很同一,B类机器日志文件存放路径需要用*匹配(因为这个目录除了日志外,还有其他文件,不能删除,匹配的时候看用*.log)
A类:/opt/cloud/log/ 删除7天前日志
B类:/opt/cloud/instances/ 删除15天前日志
不用考虑堡垒机上的操作,只要写shell脚本就可以。
1、需要写出一个通用脚本,也就是说该脚本无论是放到A类机器还是B类机器都可以运行
2、所以需要判断是A类还是B类机器,可以用过判断目录/opt/cloud/log或者/opt/cloud/instances目录的存在与否来确定是哪类机器。
3、对于A类机器直接find即可,而B类机器需要find -name "*.log"稍微繁琐
4、找find哪天之前的参数,
5、日志文件找好后,传递给rm删除,用到一个命令?
#!/bin/bash A=/opt/cloud/log/ B=/opt/cloud/instances/ if [ -d $A ] then for l in `find $A -mtime +7` //find 结合-mtime选项可以查找出几天前改动的文件 do rm -rf $l done elif [ -d $B ] then for I in `find $B -mtime +15 -name "*.log"` do rm -rf $I done fi
find选项补充: -mtime -n +n 按照文件的更改时间来查找文件, -n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime选项,但它们都和-mtime选项 相似,所以我们在这里只介绍-mtime选项。
每隔5分钟检查指定的用户是否登录系统,用户名从命令行中输入 如果指定的用户已登录,则显示相关的信息。
1、每隔5分钟,可用计划任务,也可以做死循环 2、根据题目要求,用户名要求输入,那就意味着和用户交互,如果每5分钟都去交互一次,太麻烦了,所以死循环比较合适,只需要交互一次 3、who和users命令可以查看当前登录系统的用户名列表用grep -w保证匹配的用户更加精确 4、在while死循环之前,先让用户输入用户名,如果在循环里面,那每隔5分钟,都要输入一次用户名,这样不合理
#!/bin/bash read -p "监测用户:" USER while : //“:”为空命令,返回值为0,作用于true相似 do if users |grep -w $USER then echo "用户$USER在线" else echo "用户$USER不在线" fi sleep 300 //休眠时间,暂停时间,默认单位秒 done
目前项目上线,有这样的需求,为了不让上线的服务器,不与线网的IP地址相冲突,要求写出一个shell脚本,把192.168.100.0/24网段在线的IP地址和不在线的IP地址列出来,并且保存到文档中。
1、24网段公有254个IP地址,从192.168.100.1到192.168.100.254,需要以个for循环进行遍历。 2、看一个IP地址是否在线,主要用ping命令来进行测试。
#!/bin/bash #rm -rf /var/log/ipup.txt /var/log/ipdown.txt &>/dev/null //将原本存放ip在线信息的文件删除(防止重复执行产生的垃圾内容)也可以采用sort和uniq来过滤 for ((i=1; i<=4; i++)) do ip="20.0.0.$i" ping -c 2 -i 0.2 -W 2 $ip &>/dev/null if [ $? -eq 0 ] then echo "$ip不可以用" >>/var/log/ipup.txt else echo "$ip可用" >>/var/log/ipdown.txt fi done #################过滤掉文件中重复的部分############################ cat /var/log/ipup.txt |sort |uniq >/var/log/ipupbak.txt rm -rf /var/log/ipup.txt mv /var/log/ipupbak.txt /var/log/ipup.txt
ping命令补充: -c :count 在发送(和接收)了正好数量为 count 的回显应答分组后停止操作。在发送了 count 个分组后没有收到任何分组的特别情况是发送导致了终止(选程主机或网关不可达)。即发出的测试包数目 -i : wait 在发送每个分组时等待 wait 个秒数。缺省值为每个分组等待一秒。此选项与-f选项不能同时使用。每次发出测试包的间隔时间 -n :只以数字形式输出信息。这样就不尝试去查找主机名了。 -t :设置存活数值TTL的大小-v -w :waitsecs 在 waitsecs 秒后停止 ping 程序的执行。当试图检测不可达主机时此选项很有用。
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2018 群英 版权所有 茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号-36 粤公网安备 44090202000006号 粤工商备P091701000595