Linux服务器批量巡检脚本使用说明
更新时间:2024-01-30 00:57:01 阅读量: 教育文库 文档下载
文件说明
该Shell脚本旨在针对大量Linux服务器的巡检提供一种相对自动化的解决方案。脚本组成有三部分:shellsh.sh、checksh.sh、file.txt;这三个文件需放在一个文件夹下以root权限执行,缺一不可。
脚本用法
将要巡检的服务器的IP地址和对应的密码全部放入file.txt中保存,每行一个IP对应一个密码即可。然后用如下命令运行:
#./ shellsh.sh file.txt 192.168.182.143 123456 其中file.txt可以更换文件名,192.168.182.143为你想保存巡检日志的到哪个服务器的服务器IP,123456为该服务器的密码。
运行结果
运行完后会在192.168.182.143服务器的/tmp目录下升成一个目录,即:GatherLogDirectory这个目录下即存放的是被巡检的服务器的巡检日志,这些日志以被巡检的服务器的IP命名,形如:192.168.182.146.log。在被巡检的服务器上会升成两个目录即:CheckScript、 LocalServerLogDirectory;其中CheckScript中是
checksh.sh脚本,LocalServerLogDirectory中存放的是checksh.sh在该服务器上运行后升成的日志。
测试结果
我只在虚拟机上的三台Linux系统上测试过,分别是Ubuntu、RedHat、Kali。运行正常,平均巡检一个服务器花费3分钟。
脚本代码
shellsh.sh
#!/bin/bash login_info=$1 gather_server_ip=$2 gather_server_password=$3
grep_ip=`ifconfig | grep '\\([[:digit:]]\\{1,3\\}\\.\\)\\{3\\}[[:digit:]]\\{1,3\\}' --color=auto -o | sed -e '2,5d'`
GatherPath=\CheckScriptPath=\
if [ $# -ne 3 ]; then
echo -e \
echo -e \ echo -e \ exit; fi
if [ ! -x \
mkdir \
echo -e \fi
cat $login_info | while read line do
server_ip=`echo $line|awk '{print $1}'` server_password=`echo $line|awk '{print $2}'`
login_server_command=\ scp_gather_server_checksh=\
/usr/bin/expect< spawn $login_server_command expect { \ \ } expect \ expect \ expect eof exit EOF /usr/bin/expect< spawn $scp_gather_server_checksh expect { \ \ } expect \expect \ expect \ expect eof exit EOF /usr/bin/expect< spawn $login_server_command expect { \ \ } expect \ expect \{ send \$CheckScriptPath;./checksh.sh $gather_server_ip $gather_server_password\\r\ expect eof exit EOF done checksh.sh #!/bin/bash ####################################################################### ################# #Function: #This script checks the system's information,disks's information,performance,etc...of the #server # #Author: #By Jack Wang # #Company: #ShaanXi Great Wall Information Co.,Ltd. ######################################################################################## ######################################################################################## # #GatherServerIpAddress is the server's IP address that gather the checking log #GatherServerPassword is the server's IP address that gather the checking log # ######################################################################################## GatherServerIpAddress=$1 GatherServerPassword=$2 ######################################################################################## #GetTheIpCommand is a command that you can get the IP address ######################################################################################## GetTheIpCommand=`ifconfig | grep '\\([[:digit:]]\\{1,3\\}\\.\\)\\{3\\}[[:digit:]]\\{1,3\\}' --color=auto -o | sed -e '2,5d'` ######################################################################################## #LogName is a command that Your logs'name ######################################################################################## LogName=`ifconfig|grep '\\([[:digit:]]\\{1,3\\}\\.\\)\\{3\\}[[:digit:]]\\{1,3\\}' --color=auto -o|sed -e '2,5d'``echo \ ######################################################################################## # #GatherLogPath is a path that collecting log path #LocalServerLogPath is local log path # ######################################################################################## GatherServerLogPath=\LocalServerLogPath=\ ######################################################################################## #LinuxOsInformation is function that usege to collect OS's information ######################################################################################## LinuxOsInformation(){ Hostname=`hostname` UnameA=`uname -a` OsVersion=`cat /etc/issue | sed '2,4d'` Uptime=`uptime|awk '{print $3}'|awk -F \ ServerIp=`ifconfig|grep \ServerNetMask=`ifconfig|grep \ServerGateWay=`netstat -r|grep \ SigleMemoryCapacity=`dmidecode|grep -P -A5 \\-v \ MaximumMemoryCapacity=`dmidecode -t 16|grep \$2}'|sed 's/^[ \\t]*//g'` NumberOfMemorySlots=`dmidecode -t 16|grep \Of Devices\-F \'{print $2}'|sed 's/^[ \\t]*//g'` MemoryTotal=`cat /proc/meminfo|grep \ '{printf(\ PhysicalMemoryNumber=`dmidecode|grep -A16 \Device\\-v \ ProductName=`dmidecode|grep -A10 \\ SystemCPUInfomation=`cat /proc/cpuinfo|grep \ -d: -f2|awk '{print \ echo -e \ServerIp|$ServerIp\\nServerNetMask|$ServerNetMask\\nServerGateWay|$ServerGateWay\\nSigleMemoryCapacity|$SigleMemoryCapacity\\nMaximumMemoryCapacity|$MaximumMemoryCapacity\\nNumberOfMemorySlots|$NumberOfMemorySlots\\nMemoryTotal|$MemoryTotal\\nPhysicalMemoryNumber|$PhysicalMemoryNumber\\nProductName|$ProductName\\nSystemCPUInformation|$SystemCPUInfomation\ } PerformanceInfomation (){ CPUIdle=`top -d 2 -n 1 -b|grep C[Pp][Uu]|grep id|awk '{print $5}'|awk -F \CPUloadAverage=`top -d 2 -n 1 -b|grep \average:\-F \'{print $5}'|sed 's/^[ \\t]*//g'` ProcessNumbers=`top -d 2 -n 1 -b|grep \ProcessRunning=`top -d 2 -n 1 -b|grep \ProcessSleeping=`top -d 2 -n 1 -b|grep \ProcessStoping=`top -d 2 -n 1 -b|grep \ProcessZombie=`top -d 2 -n 1 -b|grep \ UserSpaceCPU=`top -d 2 -n 1 -b|grep 'C[Pp][Uu]'|head -1|awk -F \SystemSpaceCPU=`top -d 2 -n 1 -b|grep 'C[Pp][Uu]'|head -1|awk -F \ChangePriorityCPU=`top -d 2 -n 1 -b|grep 'C[Pp][Uu]'|head -1|awk -F \WaitingCPU=`top -d 2 -n 1 -b|grep 'C[Pp][Uu]'|head -1|awk -F \HardwareIRQCPU=`top -d 2 -n 1 -b|grep 'C[Pp][Uu]'|head -1|awk -F \SoftwareIRQCPU=`top -d 2 -n 1 -b|grep 'C[Pp][Uu]'|head -1|awk -F \MemUsed=`top -d 2 -n 1 -b|grep \-F \,]\'{print $11}'|tr -d \'{printf(\ MemFreeP=`top -d 2 -n 1 -b|grep \-F \,]\'{print $16}'|tr -d \'{printf(\ MemBuffersP=` top -d 2 -n 1 -b|grep \ '{printf(\ CacheCachedP=`top -d 2 -n 1 -b|grep \'{printf(\ CacheTotal=`top -d 2 -n 1 -b|grep \-F \,]\'{print $4}'|tr -d \'{printf(\ CacheUsed=`top -d 2 -n 1 -b|grep \-F \,]\'{print $14}'|tr -d \'{printf(\ CacheFree=`top -d 2 -n 1 -b|grep \-F \,]\'{print $18}'|tr -d \'{printf(\ echo -e %umbers\\nProcessRunning|$ProcessRunning\\nProcessSleeping|$ProcessSleeping\\nProcessStoping|$ProcessStoping\\nProcessZombie|$ProcessZombie\\nUserSpaceCPU|$UserSpaceCPU\\nSystemSpaceCPU|$SystemSpaceCPU\\nChangePriorityCPU|$ChangePriorityCPU\\nWaitingCPU|$WaitingCPU\\nHardwareIRQCPU|$HardwareIRQCPU\\nSoftwareIRQCPU|$SoftwareIRQCPU\\nMemUsed|$MemUsed\\nMemFreeP|$MemFreeP\\nMemBuffersP|$MemBuffersP\\nCacheCachedP|$CacheCachedP\\nCacheTotal|$CacheTotal\\nCacheUsed|$CacheUsed\\nCacheFree|$CacheFree\\n\} OprateSystemSec () { echo '======================UserLogin======================' w echo '======================FileUsed=======================' df -ah echo '======================dmesgError=====================' dmesg | grep error echo '======================dmesgFail======================' dmesg | grep Fail echo '======================BootLog========================' more /var/log/boot.log | grep -V \ echo '======================route -n=======================' route -n echo '======================iptables -L====================' iptables -L echo '======================netstat -lntp==================' netstat -lntp echo '======================netstat -antp==================' netstat -antp echo '======================BootLog========================' netstat -s echo '======================netstat -s=====================' last echo '======================du -sh /etc/===================' du -sh /etc/ echo '======================du -sh /boot/==================' du -sh /boot/ echo '======================du -sh /dev/===================' du -sh /dev/ echo '======================df -h==========================' df -h echo '======================mount | column -t==============' mount | column -t } TopAndVmstat(){ top -d 2 -n 1 -b vmstat 1 10 } CheckGatherLog(){ if [ -f \ rm -rf $LocalServerLogPath/$GetTheIpCommand.log fi if [ ! -x \ mkdir \fi if [ ! -f \ touch $LocalServerLogPath/$GetTheIpCommand.log LinuxOsInformation>>$LocalServerLogPath/$GetTheIpCommand.log PerformanceInfomation>>$LocalServerLogPath/$GetTheIpCommand.log OprateSystemSec>>$LocalServerLogPath/$GetTheIpCommand.log TopAndVmstat>>$LocalServerLogPath/$GetTheIpCommand.log fi } CheckGatherLog SCP_LOG_TO_GATHER_SERVER=\root@$GatherServerIpAddress:$GatherServerLogPath\ /usr/bin/expect< spawn $SCP_LOG_TO_GATHER_SERVER expect { \ { send \ \ } \ { send \ } } expect \ { send \ expect \ expect eof EOF
正在阅读:
Linux服务器批量巡检脚本使用说明01-30
席慕容散文孤独的树03-30
论文211-17
市场营销实训报告及总结03-18
坚守(申六兴)11-20
12篇《奋斗成就梦想》2022开学第一课观后感心得体会感悟与收获国03-25
工程质量、安全、内业、设计的预防措施和办法(精编版)04-15
村干部党支部个人总结范文08-03
书作文600字07-03
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 巡检
- 使用说明
- 批量
- 脚本
- 服务器
- Linux
- 10月语文教案 - 图文
- 6101综采工作面安装作业规程
- 捞渣机检修作业指导书
- 海湾消防报警主机说明书 - 图文
- 南信大基础生态学 重点
- 关爱五生工作方案
- 桂林山水评课稿
- 寄生虫学检验题目
- 企业物流方案设计
- 共模电感铁芯(ON-462725)
- 电大专科《公共关系学》复习题(1)
- (小溪流的歌)的教学设计 doc
- 三年级数学下册 冰箱、冰柜展教案 青岛版五年制
- 大课间活动总结
- 当前质监系统党风廉政建设和反腐败工作存在的突出问题、面临的重大挑战及主要对策
- 2018年第1学期《管理学原理》平时作业题2018.1
- 最新部编版语文名著《红星照耀中国》复习资料
- (0063)综合英语六复习思考题
- 临床营养学模拟考试试题(一)
- 高考语文文言文重点实词成语文言比较梳理2(精校WORD版)