linux系统每天自动巡检,输出到一个文件里

linux系统每天自动巡检,输出到一个文件里,第1张

先把20台服务器的ssh登陆语句写进一个文本文件中host_name.txt,确保有一台机器可以通其他的19台服务器。

ssh跳转格式这样写:ssh 用户名@ip

#!/bin/bash

check_sev()

{

ssh_ip=$1

$ssh_ip<<!

vmstat 1 10

iostat 1 10

exit

!

echo

}

echo `date "+%D"`>>check_host.log

while read line

do

echo "---------------------------------">>check_host.log

echo "$line  date '+%F %T'">>check_host.log

check_sev $line>>check_host.log

done<host_name.txt

将上面的脚本放在一个主机上,用crontab提交每日任务,

30 10 * * * 上面脚本的目录地址

将以上内容写进xx.cron中,crontab xx.cron 提交就是每天的10:30运行你上面的检查脚本。

具体crontab的用户你可以百度。

====================================================================

第一个脚本本人纯手打,并没有试,还有不少漏洞,你可以自行修改,比如你这个放脚本的服务器必须能无密码ssh登陆其他19个主机,脚本最好加上错误日志记录,防止某些错误导致脚本异常终止。你可以多调试几遍,有问题的在一起交流。

#!/bin/sh

echo '########################系统信息####################'

OS_TYPE=`uname`

OS_HOSTNAME=`hostname`

OS_IP=`ifconfig ens33 | grep inet | head -1 |awk '{print $2}'`

OS_banben=`uname -a | awk '{print $3}'`

OS_DATE=`date +%F_%T`

OS_RUNING=`uptime |awk '{print $3 $4}' | awk -F, '{print $1}'`

OS_MEM=`free -m |grep Mem |awk '{print $2}'`

OS_MEM_FREE=`free -m | grep Mem |awk '{print $4}'`

OS_MEM_PER=`free -m | grep Mem |awk '{printf ("%.2f\n",$3/$2*100)}'`     #awk保留小数后两位需要 print换printf ("%.2f\n",$3/$2*100")

echo "          主机类型  $OS_TYPE                        "

echo "          主 机 名  $OS_HOSTNAME               "

echo "          主 机 IP  $OS_IP                                 "

echo "          系统版本  $OS_banben                       "

echo "          系统时间  $OS_DATE                          "

echo "          运行时间  $OS_RUNING                      "

echo "          语言环境  $LANG                                  "

echo "          总 内 存  ${OS_MEM}M                         "

echo "          剩余内存  ${OS_MEM_FREE}M            "

echo "        内存使用率  ${OS_MEM_PER}%             "

echo '####################################################'

权限不够

1、你看下你的脚本有没有读和执行权限,用一下命令查看:

ls -trl /home/aaaaa/test.sh

看看出来的 -rw-r--r--. 1 root root 28757 12月 12 09:28 install.log 具体是什么

就像我上卖弄读取出来的这个 install.log 文件一样,他的权限是 对root用户 有读和修改的权限,对root用户组只有 读 的权限,对其他用户也只有读的权限,那么这个时候 你用其他用户执行,肯定执行不了;

2、看看切换的用户有没有读和执行该脚本的权限;

关于权限这边说就太了多了,如果不懂的话建议自己下去看看;

有个最简单的方法 直接 chmod 777 aaaa.sh 给予aaaa.sh这个脚本所有权限,然后再切换用户后,就可以直接执行了 bash aaaa.sh


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7115144.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-01
下一篇 2023-04-01

发表评论

登录后才能评论

评论列表(0条)

保存