先把20台服务器的ssh登陆语句写进一个文本文件中host_name.txt,确保有一台机器可以通其他的19台服务器。
ssh跳转格式这样写:ssh 用户名@ip
#!/bin/bashcheck_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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)