当服务器达到一定数量级时,使用脚本巡检就显得非常必要!
脚本文件放在D:\OScheck目录下,截图如下:
CRT是SecureCRT软件,LOGS存放生成的日志文件,ServerList是服务器列表
DAILYCheck.bat文件内容:
REM DAILYCheck.bat
@echo off
Setlocal ENABLEDELAYEDEXPANSION
Set strDate=%date:~0,4%%date:~5,2%%date:~8,2%
REM=================================================================================
cls
color 0a
title 巡检工具
:begin
cls
echo.
%~d0
cd %~dp0
set TempDir=d:\OScheck\temp
if not exist %TempDir% mkdir %TempDir%
echo.
echo ﹎.巡检工具——服务器巡检.﹎
echo.
echo ╔═════════════╗
echo ║ 1、服务器巡检(每日) ║
echo ║ 2、服务器巡检(每周) ║
echo ║ 3、服务器巡检(每月) ║
echo ╚═════════════╝
echo 0、退出程序!
echo.
set num=99
set /p num=" 请输入选择数字,然后按回车:"
if %num%==1 goto bat1
if %num%==2 goto bat2
if %num%==3 goto bat3
if %num%==0 exit
echo.
goto begin
:bat1
set SvrList=d:\OScheck\ServerList\svr.list
set Checklog=%TempDir%\os_dailycheck_%strDate%.log
set CheckDir=d:\OSCheck\Log_%strDate%\Date
goto end
:bat2
set SvrList=d:\OScheck\ServerList\svrWeek.list
set Checklog=%TempDir%\os_dailycheck_%strDate%_Week.log
set CheckDir=d:\OSCheck\Log_%strDate%\Week
goto end
:bat3
set SvrList=d:\OScheck\ServerList\svrMonth.list
set Checklog=%TempDir%\os_dailycheck_%strDate%_Month.log
set CheckDir=d:\OSCheck\Log_%strDate%\Month
goto end
:end
echo.
echo :::Start OS Daily checking on %date%
echo :::Start OS Daily checking on %date% >> %checklog%
echo.
echo ===================================================================
echo.
For /F "tokens=1,2,3,4,5 delims=," %%i in (%SvrList%) do (
echo %date%:: %%k :: %%i :: %%j >> %checklog%
echo ==================主机: %%k ,开始检测,请稍等==================
"D:\OScheck\CRT\SecureCRT.exe" /TITLEBAR "OSCheck:%%k:%%i:%%j"/NOMENU /NOTOOLBAR /SCRIPT D:\OScheck\Dailycheck.vbs /ARG %%l /ARG %%m /ARG %%i /ARG %%j >> %checklog%
echo ==================主机: %%k ,完成检测,请核查==================
echo.
)
REM - 检查完毕后将下载到本地的检查日志移到一个目录中。
if not exist %CheckDir% mkdir %CheckDir%
Move /Y %TempDir%\*.log %checkDir%
goto begin
Dailycheck.vbs文件内容:
# $language = "VBScript"
# $interface = "1.0"
Sub Main
dim objTab, objSFTPTab
dim strHost, strUserid, strUserPwd, strRootPwd, strPort
dim strConnect
IF crt.arguments.count <> 4 then
crt.Daiglog.MessageBox("No Enough Paratmeters!")
crt.quit
exit sub
ELSE
strUserid = crt.arguments(0)
strUserPwd = crt.arguments(1)
strHost = crt.arguments(2)
strPort = crt.arguments(3)
END IF
'======================================================================================================
'Connect to a host and start OS check daily
strConnect="/SSH2 /P " & strPort & " /L " & strUserId & " /PASSWORD " & strUserPwd & " " & strHost
set objTab=crt.session.connectInTab(strConnect)
objTab.screen.synchronous = True
'Create an SFTP tab associated with the existing tab
set objSFTPTab=objTab.connectSFTP
'Wait for the SFTP tab to be ready for input
objSFTPTab.screen.synchronous = True
crt.Sleep 300
objSFTPTab.screen.Send vbcr
objSFTPTab.Screen.WaitForString "sftp>"
objSFTPTab.Screen.Send "lcd D:\OScheck\" & vbcr
objSFTPTab.Screen.WaitForString "sftp>"
objSFTPTab.Screen.Send "cd /root/gyl/OSCheck/" & vbcr
objSFTPTab.Screen.WaitForString "sftp>"
objSFTPTab.Screen.Send "put -a oscheck.sh" & vbcr
objSFTPTab.screen.WaitForString "Uploading"
objSFTPTab.screen.WaitForString "sftp>"
objTab.activate()
crt.sleep 10
objTab.screen.waitforstring("#")
objTab.screen.send("cd /root/gyl/OSCheck/") & chr(13)
objTab.screen.waitforstring("OSCheck")
objTab.Screen.send("rm -f /root/gyl/OSCheck/*.log ; echo r000") & chr(13)
objTab.Screen.waitForString("r000")
objTab.screen.send("chmod +x /root/gyl/OSCheck/oscheck.sh") & chr(13)
objTab.screen.waitforstring("OSCheck")
objTab.screen.send("sh /root/gyl/OSCheck/oscheck.sh") & chr(13)
objTab.screen.waitforstring("successfully")
objSFTPTab.activate()
' download the check log to d:\OSCheck\temp from remote working Directory /root/gyl/OSCheck/
objSFTPTab.Screen.Send "lcd D:\OScheck\temp\" & vbcr
objSFTPTab.Screen.WaitForString "sftp>"
objSFTPTab.Screen.Send ("get -a /root/gyl/OSCheck/*.log" ) & vbcr
objSFTPTab.screen.WaitForString "Downloading"
objSFTPTab.screen.WaitForString "sftp>"
'Close the SFTPTab
objSFTPTab.screen.send ("exit") & vbcr
objTab.activate()
objTab.Screen.send("echo r001") & chr(13)
objTab.Screen.WaitForString("r001")
objTab.Session.Disconnect
'objTab.close
'Done, quit SecureCRT
crt.quit
End Sub
oscheck.sh文件内容:
#!/bin/sh
#================================================================================================
# This Scripts is used to collect Linux Configuration Data and health check daily.
#
#================================================================================================
# -----------------------------------------------------------------------------------------------
# Part 1 - Get the Basic Information
# Part 2 - Get the Detail Information
# Section 1 - OS Specific Release Information
# Section 2 - System Information
# Section 3 - Filesystem Information
# Section 4 - VG Information
# Section 5 - Services Configuration
# Section 6 - The last 40 lines in syslog
# Section 7 - Root's Mail (Status closed)
# Section 8 - Login History since Last Day
# Section 9 - Root Crontab and Error Log
# Section 10 - Check Process
# Sec