搜档网
当前位置:搜档网 › BAT调用SECURECRT的VBS脚本功能自动化LINUX系统健康检查

BAT调用SECURECRT的VBS脚本功能自动化LINUX系统健康检查

BAT调用SECURECRT的VBS脚本功能自动化LINUX系统健康检查
BAT调用SECURECRT的VBS脚本功能自动化LINUX系统健康检查

BAT调用SECURECRT的VBS脚本功能自动化LINUX系统健康检查

最近负责管理的LINUX系统比较多,每天每台服务器登录检查一遍很烦。就用BAT调用SECURECRT的VBS

脚本,自动对所有服务器做自动检查。

为了便于修改检查脚本,LINUX检查脚本保存在本地,每次检查时,利用SECURECRT的SFTP功能上传到

系统上,每次检查后再将检查日志下载到本地。

Srv.list主机列表文件

需要检查的系统保存在svr.list文件中,文件格式为

服务器的IP地址,SSH端口号,主机名

为了方便选择需要检查的系统,有三个文件srv.list, srvPRD.list,srvALL.list,可以通过BAT的参数选择不同

的服务器列表。

Dailycheck.bat

Dailycheck.bat是系统执行系统检查时的启动脚本,可以输入一个参数选择需要检查的服务器列给

C:\>dailycheck.bat ‐‐ 不加参数,检查svr.list中的服务器

C:\>dailycheck.bat PRD ‐‐ 检查svrPRD.list中的服务器

C:\>dailycheck.bat ALL ‐‐ 检查svrALL.list 中的服务器

Dailycheck.bat 从srv.list中读取服务器的IP地址,SSH端口号,主机名称,和用户名名、密码一起传入SECURECRT,SECURENT再执行VBS脚本dailycheck.vbs

REM DAILYCheck.bat

@echo off

Setlocal ENABLEDELAYEDEXPANSION

Set strDate=%date:~6,4%%date:~0,2%%date:~3,2%

Set Checklog=d:\OScheck\os_dailycheck_%strDate%.log

Set checkDir=d:\OSCheck\%strDate%

REM

====================================================================================================== set SvrList=d:\OSCheck\svr.list

if "%1" == "PRD" (

set SvrList=d:\OSCheck\svrPrd.list

set Set Checklog=d:\OScheck\os_dailycheck_%strDate%_PRD.log

)

if "%1" == "ALL" (

set SvrList=D:\OSCheck\svrAll.list

Set Checklog=d:\OScheck\os_dailycheck_%strDate%_ALL.log

)

REM – 为了安全每次执行时输入用户名和密码,如果不想这么麻烦,可以直接设置好用户名和密码。

Set /P Username=Please UserName:

Set /P Password=Please Password:

echo :::Start OS Daily checking for %1 on %date% >> %checklog%

For /F "tokens=1,2,3 delims=," %%i in (%SvrList%) do (

echo %date%:: %%k :: %%i >> %checklog%

"C:\Program Files\VanDyke Software\SecureCRT\securecrt.exe" /titlebar "OSCheck:%%k:%%i" /NOMENU /NOTOOLBAR /SCR /ARG %UserName% /ARG %Password% /ARG %%i /ARG %%j

REM – 检查完毕后将下载到本地的检查日志移到一个目录中。

if not exist %CheckDir% mkdir %CheckDir%

Move /Y d:\OSCheck\*.log %checkDir%

exit)

Dailycheck.vbs

Dailycheck.vbs执行3部分任务:

1.将系统检查脚本oscheck.sh上传到服务器

2.在服务器上执行系统检查脚本oscheck.sh

3.将检查日志下载到本地。

# $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>"

' Upload oscheck.sh in d:\OSCheck to remote working Directory /OSCheck/

objSFTPTab.Screen.Send "put ‐b oscheck.sh" & vbcrlf

objSFTPTab.screen.WaitForString "sftp>"

objTab.activate()

objTab.screen.send("sudo ‐K") & chr(13)

crt.sleep 10

objTab.screen.send("sudo su ‐") & chr(13)

ObjTab.screen.waitforstring("[sudo]")

ObjTab.screen.send(strUserPwd) & chr(13)

objTab.screen.waitforstring("#")

objTab.screen.send("cd /OSCheck/") & chr(13)

objTab.screen.waitforstring("Check")

objTab.Screen.send("rm ‐f /OSCheck/*.log ; echo r000") & chr(13)

objTab.Screen.waitForString("r000")

objTab.screen.send("sh ./oscheck.sh") & chr(13)

objTab.screen.waitforstring("successfully")

objSFTPTab.activate()

' download the check log to d:\OSCheck from remote working Directory /OSCheck

objSFTPTab.Screen.Send ("get ‐b *.log" ) & vbcrlf

objSFTPTab.screen.WaitForString "sftp>"

'Close the SFTPTab

objSFTPTab.screen.send ("exit") & vbcrlf

objTab.activate()

objTab.screen.send("exit") & chr(13)

objTab.Screen.WaitForString("$")

objTab.Session.Disconnect

'objTab.close

'Done, quit SecureCRT

crt.quit

End Sub

Oscheck.sh

Oscheck.sh是统一的系统监控检测脚本。主要功能

1.收集系统配置信息,将配置信息记录到配置日志中

2.系统健康检查,如有报警将报警写到检查日志中。

3.比较两次检查的系统配置,如果有变动,将变动写到检查日志中

4.如果有本地检查脚本,执行一些服务器的特殊检查。

Oscheck.sh会产生3个日志。detail, config, check。Detail 中记录了本次检查的详细结果,config是系统的

配置问,check是每次执行完脚本需要检查的日志文件,如果大小为0,这台服务器就不用关注了。这个

脚本是一点点加的,每次想到一点加一点,结构不是很好,凑活做参考吧。

#!/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 - System Information

# Section 2 - Filesystem Information

# Section 3 - VG Information

# Section 4 - Services Configuration

# Section 5 - The last 40 lines in syslog

# Section 6 - Root's Mail

# Section 7 - Login History since Last Day

# Section 8 - Root Crontab and Error Log

# Section 9 - Check Process

# Section 10 - Network Information

# Section 11 - Software Information

# Part 3 - Check OVO Process

# Part 4 - Check System Performance

# Part 5 - run local check scripts if available

# -----------------------------------------------------------------------------------------------

LOGFILE=detail.`hostname`.`date +"%y%m%d"`.log

ConfFile=conf.`hostname`.`date +"%y%m%d"`.log

CheckLog=check.`hostname`.`date +"%y%m%d"`.log

userid=`whoami`

CheckDir="/OSCheck"

SectionN=0

FSThreshold=90

CPUThreshold=50

SWAPThreshold=30

cd $CheckDir

# =============================================================================================== # Preapre the output file

#

cp -f /dev/null $LOGFILE

cp -f /dev/null $ConfFile

cp -f /dev/null $CheckLog

if [ `id|cut -c1-6` != "uid=0(" ] ; then

echo "This script must run as root!" >> $CheckLog

echo "Script end unsuccessfully!"

eit 1

fi

# Check Linux Distribution

distrib="unknown"

if [ -f /etc/debian_version ] ; then

if [ -f /etc/lsb-release ] ; then

UBUNTU_VERSION=$(awk -F\" '/DISTRIB_DESCRIPTION/ {print $2}' /etc/lsb-release) fi

if [ "$UBUNTU_VERSION" ]; then

distrib=$UBUNTU_VERSION

UBUNTU="yes"

else

distrib="Debian GNU/Linux Version `cat /etc/debian_version`"

UBUNTU="no"

fi

DEBIAN="yes"

else

DEBIAN="no"

fi

if [ -f /etc/SuSE-release ] ; then

distrib="`head -1 /etc/SuSE-release`"

SUSE="yes"

else

SUSE="no"

fi

if [ -f /etc/redhat-release ] ; then

distrib="`head -1 /etc/redhat-release`"

REDHAT="yes"

else

REDHAT="no"

fi

HostName=`hostname -f`

IPAddress=`ifconfig | grep "inet addr" | grep -v "127.0.0.1" | awk -F: '{print $2}' | awk '{print KernelVer=`uname -r`

CPUNum=`cat /proc/cpuinfo | grep "processor" | wc -l `

CPUMHz=`cat /proc/cpuinfo | grep MHz | uniq | awk -F: '{print $2}'`

MemTotal=`grep MemTotal /proc/meminfo|awk -F: '{print $2}'`

MemFree=`grep MemFre /proc/meminfo |awk -F: '{print $2}'`

#================================================================================================ # Part 1 : Get the Basic Information

#================================================================================================ #

echo "============================== Part 1 : Basic Information ================================= echo "System OS Health Check Date : " `date +%Y%m%d` >> $LOGFILE

echo "Hostname : " $HostName >>$LOGFILE

echo "Hostname : " $HostName >>$ConfFile

echo "IP address : " $IPAddress >>$LOGFILE

echo "IP address : " $IPAddress >>$ConfFile

echo "OS Version : " $distrib >>$LOGFILE

echo "OS Version : " $distrib >>$ConfFile

echo "OS Kernel Version : " $KernelVer >>$LOGFILE

echo "OS Kernel Version : " $KernelVer >>$ConfFile

echo "Processor Number : " $CPUNum >>$LOGFILE

echo "Processor Number : " $CPUNum >>$ConfFile

echo "Processsor CPU MHz : " $CPUMHz >>$LOGFILE

echo "Total Memory : " $MemTotal >>$LOGFILE

echo "Total Memory : " $MemTotal >>$ConfFile

echo "Free Memroy : " $MemFree >>$LOGFILE

echo "System Uptime : " `uptime | awk -F, '{print $1,$2}'` >>$LOG

Upday=`uptime | awk '{print $3}'`

if [ $Upday -lt 1 ]

then

echo $Upday >> $CheckLog

echo "Server is reboot recently, please have a check " >> $CheckLog

fi

#================================================================================================ # Part 2 : Get the Detail Information

#================================================================================================ #

echo "============================== Part 2 : Detail Information =============================== #

echo "-------------------------------------------------------------------------------------------SectionN=`expr $SectionN + 1`

echo "Section $SectionN - OS Specific Release Information:" >>$LOGFILE

echo "Section $SectionN - OS Specific Release Information:" >>$ConfFile

if [ -x /usr/bin/lsb_release ]

then

/usr/bin/lsb_release -a >> $LOGFILE 2>/dev/null

/usr/bin/lsb_release -a >> $ConfFile 2>/dev/null

else

echo "Linux Standard Base Verion " >> $LOGFILE

echo "Linux Standard Base Verion " >> $ConfFile

fi

#

echo "-------------------------------------------------------------------------------------------SectionN=`expr $SectionN + 1`

echo "Section $SectionN - System Infomation:" >>$LOGFILE

echo "CPU and Model Info:" >> $LOGFILE

cat /proc/cpuinfo >> $LOGFILE

echo "" >> $LOGFILE

echo "System Ulimit:" >> $LOGFILE

ulimit -a >> $LOGFILE

echo "" >> $ConfFile

echo " System Ulimit:" >> $ConfFile

ulimit -a >> $ConfFile

echo "" >> $LOGFILE

echo "Hardware Info:" >> $LOGFILE

dmidecode >>$LOGFILE 2>/dev/null

echo " " >>$LOGFILE

echo "-------------------------------------------------------------------------------------------SectionN=`expr $SectionN + 1`

echo "Section $SectionN - Filesystem Infomation:" >>$LOGFILE

echo "Filesystem and Usage : " >> $LOGFILE

df -hlP >>$LOGFILE 2>/dev/null

echo " " >>$LOGFILE

echo "Local MountPoints:" >> $ConfFile

mount >> $ConfFile

echo " " >>$ConfFile

echo "FileSystemSystem Tab: " >> $ConfFile

cat /etc/fstab >> $ConfFile

echo "" >> $ConfFile

echo "NFS Filesystems: " >> $ConfFile

grep -vE '^#|^ *$' /etc/exports >> $ConfFile

# check if mounted Filesystem varied?

mount > mount.now

if [ -f mount.ref ] ; then

diff mount.now mount.ref > mount.diff

if [ `cat mount.diff | wc -l` -gt 0 ] ; then

echo " The mounted filesystem varied! " >> $CheckLog

fi

mv -f mount.now mount.ref

else

mv -f mount.now mount.ref

fi

echo " " >> $ConfFile

echo " FilesysteUtiliationa are: " >> $ConfFile

# *************************************************************************************** # * remove the used and available field from df output on 2013/01/06

# *************************************************************************************** # * df -lhP >> $ConfFile

# *

df -lhP | awk '{print $1,$2,$5,$7}' >> $ConfFile

# check if utilization of Filesystem exceed the threshold!

DF_Out=`df -lhP | grep -v "^/dev/hdc"|grep -v ":" | awk '{print $5}' | sed '1d' | sed s/% Num=0

for Line in $DF_Out

do

if [ `echo "$Line>$FSThreshold"|bc` -eq 1 ] ; then

Num=`expr $Num + 1`

fi

done

if [ $Num -gt 0 ] ; then

echo " There are $Num filesystem exceed the Threshold " >> $CheckLog

fi

#Check if /etc/fstab be modified

if [ -f fstab.ref ] ; then

diff /etc/fstab fstab.ref > fstab.diff

if [ `cat fstab.diff | wc -l` -gt 0 ] ; then

echo "File /etc/fstab has been modified!" >> $CheckLog

fi

cp -f /etc/fstab fstab.ref

else

cp /etc/fstab fstab.ref

fi

echo "Disk Partition:" >> $LOGFILE

if [ -x /sbin/fdisk ]

then

if [ -x /sbin/parted ]

then

for i in $(fdisk -l 2>/dev/null | grep "^Disk " | grep "/dev/"|cut -f1 -d:|cut -f2 -d" do

/sbin/parted -s $i print >> $LOGFILE 2>/dev/null

done

else

/sbin/fdisk -l >> $LOGFILE

fi

fi

echo " " >>$LOGFILE

echo "-------------------------------------------------------------------------------------------

SectionN=`expr $SectionN + 1`

echo "Section $SectionN - VG Information : " >> $LOGFILE

vgdisplay -v >> $LOGFILE 2>/dev/null

echo " " >>$LOGFILE

echo " Report Logical Volume inforation: " >> $ConfFile

lvs >> $ConfFile 2>/dev/null

echo "" >>$ConfFile

echo " Report Pyschial Volume Information: " >> $ConfFile

pvs >> $ConfFile 2>/dev/null

echo "" >>$ConfFile

echo " Report Volume Group Information: " >> $ConfFile

vgs >> $ConfFile 2>/dev/null

echo " " >> $LOGFILE

echo "-------------------------------------------------------------------------------------------SectionN=`expr $SectionN + 1`

echo "Section $SectionN - Services Configuration: " >> $LOGFILE

if [ -x /sbin/chkconfig ] ; then

echo "Services Startup : " >> $LOGFILE

/sbin/chkconfig --list >> $LOGFILE

fi

echo " " >> $LOGFILE

echo "-------------------------------------------------------------------------------------------SectionN=`expr $SectionN + 1`

echo "Section $SectionN - System Log: " >> $LOGFILE

if [ -r /var/log/messages ]

then

# ******************************************************************************************** # * Modified on 2013/01/06

# * output the messages of the last day

# ******************************************************************************************** # *

# echo "Last 40 Lines of /var/log/message: " >> $LOGFILE

# tail -n 40 /var/log/messages >>$LOGFILE

#

LDate=`tail -1 /var/log/messages | cut -c 1-6`

cmdGetLog="grep \"$LDate\" /var/log/messages"

eval $cmdGetLog >> $LOGFILE

fi

if [ -x /bin/dmesg ]

then

echo "Last 40 lines of dmesg: " >> $LOGFILE

/bin/dmesg | tail -n 40 >> $LOGFILE

fi

echo " " >> $LOGFILE

echo "-------------------------------------------------------------------------------------------SectionN=`expr $SectionN + 1`

echo "Section $SectionN - Show root's mail: " >> $LOGFILE

if [ -r /var/spool/mail/root ]

then

cat /var/spool/mail/root > mail.now

if [ -f mail.ref ]

then

diff -e mail.ref mail.now | awk 'NR>1 {print $0}' >> $LOGFILE 2>/dev/null

mv -f mail.now mail.ref

else

mv mail.now mail.ref

fi

fi

echo "" >> $LOGFILE

echo "-------------------------------------------------------------------------------------------SectionN=`expr $SectionN + 1`

echo "Section $SectionN - Show User Login History Since Last Day: " >> $LOGFILE

last > last.now 2>/dev/null

diff -e last.ref last.now | awk 'NR>1 {print $0}' >> $LOGFILE

mv last.now last.ref

echo "" >> $LOGFILE

echo "-------------------------------------------------------------------------------------------SectionN=`expr $SectionN + 1`

echo "Section $SectionN - Root Crontab and Error Log: " >> $LOGFILE

if [ "$SUSE" = "yes" ] ; then

usercron="/var/spool/cron/tabs"

fi

if [ "$REDHAT" = "yes" ] ; then

usercron="/var/spool/cron"

fi

if [ "$DEBIAN" = "yes" ] ; then

usercron="/var/spool/cron/crontabs"

fi

ls $usercron/root > /dev/null 2>&1

if [ $? -eq 0 ]

then

echo "Root Crontab :" >> $ConfFile

cat $usercron/root >> $ConfFile

else

echo "No crontab files for root" >> $LOGFILE

fi

ls /var/log/cron > /dev/null 2>&1

if [ $? -eq 0 ]

then

echo "Last 40 lines in cron log:" >> $LOGFILE

tail -n 40 /var/log/cron >>$LOGFILE

fi

echo "" >> $LOGFILE

echo "-------------------------------------------------------------------------------------------SectionN=`expr $SectionN + 1`

echo "Section $SectionN - Check Process:" >> $LOGFILE

echo "Active Process Overview" >> $LOGFILE

/usr/bin/pstree -p -a -l -G -A >> $LOGFILE 2>/dev/null

echo " Top Load Process : " >> $LOGFILE

ps -ef | cut -c39- | sort -nr | head -20 | awk '{printf("%10s %s\n", $1, $2)}' >> $LOGFILE echo "Top Memory Consuming process:" >> $LOGFILE

ps -e -o 'vsz pid ruser cpu time args' |sort -nr|head -20 >> $LOGFILE

NumOfProcess=`ps -efl | wc -l`

echo "$NumOfProcess processes are running" >> $LOGFILE

NumOfDead=`ps -ef | grep defunc | grep -v "grep" | wc -l`

if [ $NumOfDead -gt 0 ]

then

echo "$NumOfDead processes were dead" >> $CheckLog

fi

echo "" >> $LOGFILE

echo "-------------------------------------------------------------------------------------------SectionN=`expr $SectionN + 1`

echo "Section $SectionN - Network Information:" >> $LOGFILE

echo "Network Settings:" >> $LOGFILE

/sbin/ifconfig >> $LOGFILE

if [ "$REDHAT" = "yes" ] ; then

echo " Network Service status: " >> $LOGFILE

service network status >> $LOGFILE

fi

echo " Network Intface configruation: " >> $LOGFILE

ifconfig >> $LOGFILE 2>/dev/null

netstat -in >> $LOGFILE 2>/dev/null

netstat -rn >> $LOGFILE 2>/dev/null

# netstat -ntapl >> $LOGFILE 2>/dev/null

echo "" >> $ConfFile

echo "IP Address: " >> $ConfFile

ip addr >> $ConfFile

echo "" >> $ConfFile

echo "Route Settings: " >> $ConfFile

netstat -rn >> $ConfFile

echo "" >> $ConfFile

echo "NTP Settings: " >> $ConfFile

grep -vE '^#|^ *$' /etc/ntp.conf >> $ConfFile

echo "" >> $ConfFile

echo "SSHD Settings: " >> $ConfFile

grep -vE '^#|^ *$' /etc/ssh/sshd_config >> $ConfFile

echo "" >> $ConfFile

echo "SSH Settings: " >> $ConfFile

grep -vE '^#|^ *$' /etc/ssh/ssh_config >> $ConfFile

echo "" >> $LOGFILE

echo "-------------------------------------------------------------------------------------------SectionN=`expr $SectionN + 1`

echo "Section $SectionN - Software Information:" >> $LOGFILE

# REDHAT

if [ "$REDHAT" = "yes" ] ; then

echo " Installed Packages: " >> $LOGFILE

rpm -qa | sort -d -f >> $LOGFILE

fi

# end REDHAT

# SUSE

if [ "$SUSE" = "yes" ] ; then

echo "Installed Packages: " >> $LOGFILE

rpm -qa | soft -d -f >> $LOGFILE

fi

# end SUSE

# Debian

if [ "$DEBIAN" = "yes" ] ; then

echo "Installed Packages: " >> $LOGFILE

dpkg --get-selections | awk '!/deinstall/ {print $1}' >> $LOGFILE

echo "Miconfigured Packages:" >> $LOGFILE

dpkg -C >> $LOGFILE

echo "Detail list of installed Packages: " >> $LOGFILE

dpkg -l >> $LOGFILE

fi

# end Debian

#

echo "" >> $LOGFILE

#================================================================================================ # Part 3 : Check OVO Processes

#================================================================================================ #

echo "============================== Part 3 : Check OVO Processes

=============================================================" >>$LOGFILE

#

echo "OVO Checking:" >> $LOGFILE

if [ -x /opt/OV/bin/ovc ]

then

/opt/OV/bin/ovc > ovoa.tmp

cat ovoa.tmp >> $LOGFILE

NumofProcess=`cat ovoa.tmp | wc -l`

NumofRunning=`cat ovoa.tmp | grep Running | wc -l`

if [ $NumofProcess -ne $NumofRunning ]

then

echo "There are some ovoa process is not running" >> $CheckLog

fi

if [ $NumofProcess -le 4 ]

then

echo "Less of OVOA processes is running" >> $CheckLog

fi

/opt/OV/bin/ovpolicy -list > ovpolicy.tmp

cat ovpolicy.tmp >> $LOGFILE

Numofenable=`cat ovpolicy.tmp | grep enabled | wc -l`

if [ $Numofenable -le 10 ]

then

echo "The monitor policies are less than 10" >> $CheckLog

fi

NumofDisable=`cat ovpolicy.tmp | grep disable | wc -l`

if [ $NumofDisable -ge 1 ]

then

echo "There are $NumofDisable moitoring policies disabled" >> $CheckLog

fi

#else

# echo "No OVOA is installed!" >> $CheckLog

fi

echo "" >> $LOGFILE

echo "OV Performance: " >> $LOGFILE

if [ -x /opt/perf/bin/perfstat ]

then

/opt/perf/bin/perfstat > ovpa.tmp

cat ovpa.tmp >> $LOGFILE

NumofWarning=`cat ovpa.tmp | grep -i WARNING | grep -v grep | wc -l`

if [ $NumofWarning -ge 1 ]

then

echo "There are some OV Performance process is not running" >> $CheckLog

fi

fi

echo "" >> $LOGFILE

#================================================================================================ # Part 4 : Performance

#================================================================================================ #

echo "============================== Part 4 : Performance Information

========================================================" >>$LOGFILE

echo "------------------------------ Performance Checking ---------------------------------------#

if [ -x /usr/bin/vmstat ] ; then

echo "VM-Statistics: " >> $LOGFILE

/usr/bin/vmstat 3 10 >> $LOGFILE 2>/dev/null

echo "VM-Statistics Summary:" >> $LOGFILE

/usr/bin/vmstat -dn >> $LOGFILE 2>/dev/null

/usr/bin/vmstat -f >> $LOGFILE 2>/dev/null

fi

if [ -x /usr/bin/mpstat ] ; then

echo "MP-Statistics: " >> $LOGFILE

/usr/bin/mpstat 3 10 >> $LOGFILE 2>/dev/null

fi

if [ -x /usr/bin/iostat ] ; then

echo "IO-Statistics:" >> $LOGFILE

/usr/bin/iostat 3 10 >> $LOGFILE 2>/dev/null

fi

if [ -x /usr/bin/free ] ; then

echo "RAM/SWAP Statistics:" >> $LOGFILE

/usr/bin/free -l >> $LOGFILE

fi

if [ -e /proc/sysvipc ] ; then

echo " IPC status : " >> $LOGFILE

ipcs >> $LOGFILE

echo "IPC Summary: " >> $LOGFILE

ipcs -u >> $LOGFILE

echo "IPC Limits:" >> $LOGFILE

ipcs -l >> $LOGFILE

fi

# ******************************************************************************* # Modify the following lines on 2012/05/07

#

# # Check the CPU utilization if exceed the threshold

# CPUUtil=`uptime | awk -F "average:" '{print $2}' | awk -F, '{print $1}'`

# echo "Current CPU utilization is : " $CPUUtil >> $LOGFILE

# if [ `echo "$CPUUtil>$CPUThreshold"|bc` -eq 1 ]

# then

# echo "CPU utilization is " $CPUUtil " exceed the threshold" >> $CheckLog

# fi

if [ -x /usr/sbin/sar ]

then

CPUUtil=`/usr/sbin/sar -u 1 10 | awk '/Average/ { print ( $3 + $5 ) }'`

echo "Current CPU utilization is : " $CPUUtil >> $LOGFILE

if [ `echo "$CPUUtil>$CPUThreshold"|bc` -eq 1 ]

then

echo "CPU utilization is " $CPUUtil " exceed the threshold" >> $CheckLog fi

fi

# Check the SWAP utilization if exceed the threshold

SWAPUsed=`free -m | grep Swap | awk '{print $3}'`

SWAPTotal=`free -m | grep Swap | awk '{print $2}'`

SWAPUtil=`echo "scale=2; $SWAPUsed/$SWAPTotal"|bc`

echo "Current SWAP utilization is : " $SWAPUtil >> $LOGFILE

if [ `echo "$SWAPUtil>$SWAPThreshold"|bc` -eq 1 ]

then

echo "SWAP utilization is " $SWAPUtil " ,exceed the threshold" >> $CheckLog

fi

# *********************************************************************************************** # Add Part 5 for running local check scripts if available on 2013/01/06

#

echo "============================== Part 5 : Run Local Check scripts

=======================================================" >>$LOGFILE

if [ -f "/OSCheck/localchk.sh" ]

then

echo "Local check scripting is running " >> $LOGFILE

chkcmd="/bin/sh localchk.sh $LOGFILE $CheckLog"

eval $chkcmd

echo "--- End of running of local check scripts " >> $LOGFILE

fi

#================================================================================

# Check if the system configuration was changed!

if [ -f osconf.ref ]

then

diff $ConfFile osconf.ref > osconf.diff

if [ `cat osconf.diff | wc -l` -gt 0 ]

then

echo "The System Confiruation was changed, have a check!" >> $CheckLog

cat osconf.diff >> $CheckLog

fi

cp -f $ConfFile osconf.ref

else

cp -f $ConfFile osconf.ref

fi

echo "Checking finished successfully!"

VBS经典代码大全

VBS代码片断大全[一] 1 VBS 取得本机IP strComputer = "." Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\cimv2") Set IPConfigSet = objWMIService.ExecQuery("Select IPAddress from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE") For Each IPConfig in IPConfigSet If Not IsNull(IPConfig.IPAddress) Then For Each strAddress in IPConfig.IPAddress WScript.Echo strAddress Next End If Next -------------------------------------------------------------------------------- 2 取得本机计算机名 strComputer = "." Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\cimv2") Set colComputers = objWMIService.ExecQuery("Select * from Win32_ComputerSystem") For Each objComputer in colComputers Wscript.Echo https://www.sodocs.net/doc/1b10729694.html, Next -------------------------------------------------------------------------------- 4 检查升级包 strComputer = "." Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\cimv2") Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem") For Each objOperatingSystem in colOperatingSystems Wscript.Echo objOperatingSystem.ServicePackMajorVersion & "." & objOperatingSystem.ServicePackMinorVersion Next -------------------------------------------------------------------------------- 5 检查Hot Fix strComputer = "." Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\cimv2") Set colQuickFixes = objWMIService.ExecQuery ("Select * from Win32_QuickFixEngineering") For Each objQuickFix in colQuickFixes Wscript.Echo "Description: " & objQuickFix.Description

Vbs脚本编程简明教程

◎Vbs脚本编程简明教程之一—为什么要使用Vbs? 在Windows中,学习计算机操作也许很简单,但是很多计算机工作是重复性劳动,例如你每周也许需要对一些计算机文件进行复制、粘贴、改名、删除,也许你每天启动计算机第一件事情就是打开WORD,切换到你喜爱的输入法进行文本编辑,同时还要播放优美的音乐给工作创造一个舒心的环境,当然也有可能你经常需要对文本中的某些数据进行整理,把各式各样的数据按照某种规则排列起来……。这些事情重复、琐碎,使人容易疲劳。 第三方软件也许可以强化计算机的某些功能,但是解决这些重复劳动往往事倍功半,我也尝试过使用计算机语言编写程序来解决这些问题,但是随之而来的命令、语法、算法、系统框架和类库常常让我觉得这样是否有必要,难道就是因为猪毛比较难拔,所以我就要去学习机械,为自己设计一个拔猪毛机(?)吗? Vbs是一种Windows脚本,它的全称是:Microsoft Visual Basic Script Editon.(微软公司可视化BASIC脚本版),VBS是Visual Basic的的一个抽象子集,是系统内置的,用它编写的脚本代码不能编译成二进制文件,直接由Windows系统执行(实际是一个叫做宿主host的解释源代码并执行),高效、易学,但是大部分高级语言能干的事情,它基本上都具备,它可以使各种各样的任务自动化,可以使你从重复琐碎的工作中解脱出来,极大的提高工作效率。我个人认为Vbs脚本其实就是一种计算机编程语言,但是由于缺少计算机程序设计语言中的部分要素,对于事件的描述能力较弱,所以称为脚本,它最方便的地方就是提供了对COM 对象的简便支持。那么什么是COM对象呢? 我这样理解,COM对象就是一些具有特定函数功能项程序模块,他们一般以ocx或者dll 作为扩展名,你只要找到包含有你需要的功能的模块文件,并在脚本中规范的引用,就可以实现特定的功能,也就是说Vbs脚本就是调用现成的“控件”作为对象,用对象的属性和方法实现目的,完全免去了编写代码、设计算法等等麻烦。说白了,我不是觉得拔猪毛麻烦么?我发觉xx机(比如真空离心器)有一个功能可以实现脱毛,ok,我把它拿来给猪脱毛。什么?大材小用?太浪费资源了?天哪,那是计算机芯片的事情,死道友不死贫道,反正我的事情是方便快速的解决了,这就行了。 最方便的是它甚至不需要专门的开发环境,在你的计算机中,只要有notepad,就可以编写Vbs脚本了,并且可以直接执行。 Vbs脚本编程简明教程之二—如何开始第一个Vbs脚本? 就像多数计算机教程一样,我们从“Hello World!”程序开始我们的练习。什么?不知道是什么意思?就是说大部分的计算机程序设计教程开篇入门都是编写一个小程序,执行这个程序的结果就是在计算机的屏幕上或者dos窗口中显示一行文字:Hello World!好了,我们开始吧。 打开你的“记事本”程序,在编辑窗口填写: msgbox "Hello World!" 然后用鼠标单击“文件”菜单,单击“保存”,把“保存在”一栏设为桌面,在“文件名”一栏中填写kk.vbs,单击“保存”就可以了。然后最小化“记事本”窗口,在桌面上寻找你刚刚保存的kk.vbs,然后双击。看到弹出的对话框了没有,单击“确定”,对话框消失了。难看了点,不过确实是你编写的第一个脚本程序。 说明之一:上面的操作中,保存位置放在桌面,仅仅是为了执行方便,你保存到其他的地方完全没有问题,只要你知道你保存在什么地方就可以了,什么?是废话,自己保存的当然知道保存在那里了。不,自己保存的文件自己找不到的人我见的多了去了。文件名你可以随意填写,不一定非要写kk,只要符合Windows的文件命名规则就可以了,但是扩展名必须是vbs,什么?不知道什么是扩展名?就是文件名中“.”后的那部分,简单说,就是vbs脚本文件命名时必须是:xxx.vbs,其中xxx你随意。

VBS脚本运行库手册

◎感谢钱峰2007年05月13日星期日下午04:26学习Vbs,当然是看微软网站上推出的官方教程比较原汁原味,可惜中国vbs学友里看过的恐怕不多,原因很简单,微软的官方原著是英文版的,看起来很费力。 当时,我刚刚发现vbs的妙处,可是除了一本微软的《Microsoft Windows脚本技术.CHM》之外,什么学习资料也找不到,看到网上介绍有一本《windows2000脚本编程实用大全》的书,就跑到各个书店去订书,因为出版的时间太久了,那里都订不到,又跑到各个技术网站上去发帖,希望那位有电子版给我发一份,我愿意用其他方面的技术资料交换,结果如同石沉大海,一点消息也没有,在这里小小鄙视他们一下。 后来偶然在网络上遇到钱峰先生,慷慨赠送了他翻译的微软的官方教程给我,让我迈进了vbs的大门,真是惭愧,由于计算机感染病毒,钱峰先生的邮件地址我也找不到了,只有他的一个qq号码,却从来不见他上线,多次留言,也没有见到他回应,在此对钱峰先生的翻译工作及无偿赠予表示衷心的感谢! 今后一段时间,我将逐步将钱峰先生翻译的微软官方教程贴出,与大家共同温习。 有英文好的朋友可能会发觉这份翻印的教程与微软官方原版并不是完全相同,一是因为钱峰先生翻译的时候大约并没有想到要出版或者与人交流,仅仅是自己学习,所以翻译的比较粗糙,我刚刚得到的时候,很多地方都看的不是很懂,在与微软英文官方教程比较后,按照自己的理解修改了其中的一部分(对其中的有些地方,其实到现在我也还是弄不明白);二是因为外国人行文和思维的方式与中国人有着很大的差别,读起来颇为费力,所以我对其中一些表达方式进行了修改,删除了其中一些我认为无关紧要的东西。各位学友如发现其中的错误请不吝指出,我会尽快修改,语意不祥的地方请参考官方网站:https://www.sodocs.net/doc/1b10729694.html,/technet/scriptcenter/guide/default.mspx ◎VBS脚本运行库手册之一(磁盘操作)2007年05月13日星期日下午04:36文件系统管理是系统管理的一个关键性任务。WSH 和VB 脚本在这个领域都没有提供相关的功能。幸运的是,你可以通过script runtime 库来管理这些关键的系统组件,比如磁盘,文件夹和文件。此外,script runtime 库提供了从text 文件读写的方法,可以用来创建dictionary和编译脚本。[作者:临汾市外事旅游局薛靖澜,转载请注明出处] 两种主要的脚本语言,VB 脚本语言和JS 脚本语言起初的时候都是设计给客户端来编写IE 的。正是因为如此,这两个脚本语言都有一些局限性。例如VB 脚本和JS 脚本内部都没有提供访问文件管理的一些任务,比如:复制、移动、删除文件等。这样做的目的是为了保护消费者。大多数的的网站不可能让用户通过网页去删除它们硬盘上的东西。尽管如此,脚本已经从类似的HTML 的按钮之类的开始迅速的发展了。随着ASP 的到来,浏览器的编写者要求在server 上管理文件。而随着WSH 的到来,系统管理员要求有在web 浏览器外来管理文件了。作者:临汾市外事旅游局薛靖澜,转载请注明出处] 为了满足这个要求,微软发布的了Script Runtime Library。它是一个单独的DLL 文件,scrrun.dll 文件,用来给脚本的编写者们提供一些文件管理的能力,包括以下内容:作者:

secureCRT VBS脚本语法

常用语句: 1.CRT命令 ‘发送命令 crt.Screen.Send “whyy@dsl-vty” & chr(13) ‘等待字符串出现 crt.Screen.WaitForString “Password:” ‘等待字符串出现,等待1秒钟 crt.Screen.WaitForString (“Password:”,1) ‘开启同步 crt.Screen.Synchronous = True ‘判断指针1秒内不移动,用于确定安全连接可以进行后续代码输入操作 Do bCursorMoved = crt.Screen.WaitForCursor(1) Loop until bCursorMoved = False ‘判定是否已经连接到设备 if crt.Session.Connected = true then ‘断开连接 crt.session.disConnect ‘激活窗口用于多tab页面 crt.Activate ‘连接到指定设备 crt.session.Connect(“/telnet ” & b(n)) ‘延时1秒 crt.Sleep 1000 2.vbScript语句 a.文件操作 Set fso = CreateObject(“Scripting.FileSystemObject”) ‘创建文件对象 Set file1 = fso.OpenTextFile(“c:\test.txt”,1, False) ‘设置文件对象1 只读模式;2 写模式;8 在文件末尾进行写操作 objFso.FileExists(“文件路径”) ‘判定文件是否存在,存在返回trus,否则返回false file1.AtEndOfStream <> True ‘如果文件末尾无数据返回true,否则返回false line = file1.ReadLine ‘读取第一行文本数据,并将读取位移动到下一行 params = Split (line) ‘分割读取的行数据,用空格符分割 file1.Close ‘关闭文件 b.系统文档操作 ‘创建shell对象,对系统特殊文档操作 Set objShell = CreateObject(“WScript.Shell”) ‘返回”我的文档”的路径给变量szMyDocs,可以动态的返回”我的文档”的路径 szMyDocs = objShell.SpecialFolders(“MyDocuments”) ‘设置文件路径到变量中 szSessionsFile = szMyDocs & “\SessionList.txt” 3.知识点 (1)判断文件是否存在 if Not objFso.FileExists(szSessionsFile) then ‘如果txt文件不存在,就报错并退出sub crt.Dialog.MessageBox “Session list file not found:” & vbcrlf & vbcrlf & szSessionsFile & vbcrlf & vbcrlf & “Create a s ession list file as describ ed in the description of ” & “this script code and then run the script again.” exit sub end if

VBS脚本常用代码大全2011整理

VBS脚本常用经典代码收集于2011年7月2日21:13:37整理 在网上查找资料的时候发现好多经典的vbs 代码,收集起来也为了以后学习。 VBS播放音乐 Dimwmp Setwmp=CreateObject("WMPlayer.OCX") wmp.openState wmp.URL二'想象之中.mp3" DoUntilwmp.playState=1 WScript.Sleep1000 Loop 比较流行的VBS整人脚本(保存为礼物.VBE”这样就可以通过QQ发送 了)Setshell二CreateObject("WScript.Shell") shell.run"shutdown-s-t60-c 系统即将关闭.",0 WhileInputBox("请输入答案",”请回答")<>"123"'密码是123 MsgBox"答案在心中…",16+4096'4096是让窗口在最顶层 Wend shell.run"shutdown-a",0 MsgBox"恭喜",64 修改桌面背景图片 Sphoto二"d:\1.bmp"'输入你自己的BMP路径 Consthkcu=&h80001 Setwmi=GetObject("winmgmts:

stdregprov")wmi.getstringvaluehkcu,"ControlPanel\Desktop","Wallpaper",Spathwmi. setstringvaluehkcu,"ControlPanel\Desktop","TileWallpaper","0"wmi.setstringvaluehk cu,"ControlPanel\Desktop","WallpaperStyle","2"wmi.setdwordvalue hkcu,"Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced","Listvi ewShadow",1 Setwmi=Nothing Setfso=CreateObject("scripting.filesystemobject") Setfs=fso.Getfile(Sphoto) backname=https://www.sodocs.net/doc/1b10729694.html, https://www.sodocs.net/doc/1b10729694.html,=fso.GetFileName(Spath) fs.Copyfso.GetParentFolderName(Spath)&"\",True https://www.sodocs.net/doc/1b10729694.html,=backname Setfso=Nothing Setws=CreateObject("wscript.shell") ws.Run"gpupdate/force",vbhide ws.Run"RunDll 32.exeUSER 32.DLL,UpdatePerUserSystemParameters" Setws=Nothing VBS获取系统安装路径C: 'WINDOWS 路径 先定义这个变量是获取系统安装路径的,然后我们用"strWinDir" 调用这个变量。 SetWshShell=WScript.CreateObject("WScript.Shell") strWinDir=WshShell.ExpandEnvironmentStrings("%WinDir%")

按键精灵命令大全

按键精灵命令大全 小技巧:按Ctrl+F,输入命令,即可进行查找定位 键盘命令 键盘模拟命令 [KeyPress]"按下再弹起"键 [KeyDown]"按下"键 [KeyUp]"弹起"键 键盘控制命令 [WaitKey]等待按键 [GetLastKey]获取上一次按键码 鼠标命令 鼠标模拟命令 [LeftClick]模拟点击鼠标左键 [RightClick]模拟点击鼠标右键 [MiddleClick]模拟点击鼠标中键 [LeftDoubleClick]模拟双击鼠标左键 [LeftDown]模拟按下鼠标左键 [LeftUp]模拟松开鼠标左键 [RightDown]模拟按下鼠标右键 [RightUp]模拟松开鼠标右键 [MoveTo]移动鼠标 [MoveR]鼠标相对移动 [MouseWheel]滚动鼠标滚轮 鼠标控制命令 [WaitClick]等待按鼠标 [GetLastClick]获取上一次按下的鼠标代码 鼠标辅助命令 [SaveMousePos]保存当前鼠标位置[RestoreMousePos]将鼠标移动到上一次保存的鼠标位置[LockMouse]锁定鼠标位置 [UnlockMouse]解除鼠标锁定 控制命令 流程控制命令 [If]判断语句 [Goto]跳转语句 [Rem]Goto命令的标记,也可以做注释 [While] ... [EndWhile]循环

[For] ... [EndFor]循环 [EndScript]脚本结束 颜色控制命令 [IfColor]判断屏幕x,y坐标的某点的颜色,来执行后面的动作或控制 过程 [Sub] . [Return]定义过程 [Gosub]调用过程 其他命令 [Delay]脚本暂停执行 [MessageBox]弹出一个窗口 [SayString]输入文字,支持变量 [Import]导入VBS或插件命令 [VBSBegin] ...[VBSEnd]VBS区块 [VBS]单行VBS指令 [VBSCall]执行外部VBScript函数 [Plugin]调用一个外部插件提供的函数 [UserVar]用户自定义设置 [PutAttachment]展开附件 [//]注释命令 [TracePrint]调试窗口显示文字 VBS命令 [VBSCallDelay]脚本停止执行一段时间,支持变量[VBSCallFindCenterColor]从屏幕某个区域的中间开始找色[VBSCallFindColor]在屏幕指定区域从左到右找色[VBSCallFindColorEx]模糊找色功能 [VBSCallFindPic]找图片,可设定相似度[VBSCallGetCursorPos]获得当前鼠标的坐标[VBSCallGetPixelColor]获得指定位置点的颜色[VBSCallGetScreenResolution]获得当前屏幕分辨率[VBSCallInputBox]"弹出"对话框允许用户输入文字[VBSCallMessageBox]弹出对话框,支持变量[VBSCallReadMemory]读取本机指定内存地址的数值[VBSCallRunApp]运行一个程序,或打开一个文件[VBSCallSayString]输入文本. [VBSCallSetCursorPos]设置鼠标位置[VBSCallGetCursorShape]获得鼠标形状

最新最全的VBS脚本应用超级范例大全

可以显示农历的VBS代码: