|
win007
初级用户
积分 45
发帖 44
注册 2008-11-22
状态 离线
|
『楼 主』:
[已结]检测系统存活的程式
哪位能人能写这样一个检测系统存活的程式
描述:
检测程式查看一个X.log的文本里的时间,类似2008-11-1 12:00:00 这样的格式,因为log当中每3分钟会刷新一次,所以时间也会变,现在我的思路是用程式抓到的最新也就是最大的时间和系统时间做比对,超过5分钟,则说明系统的log已经没有再生成(系统已经死了),然后确认死了之后,在连接上oracle的一个DB,把一些栏位的资料 insert into 到一张用来发送alarm mail的table当中去(发送的例如:PETER,6543,PETER@126.com)去。不知道bat文档能否实现。
先谢过了
[ Last edited by HAT on 2008-11-26 at 13:41 ]
|
|
2008-11-22 14:41 |
|
|
win007
初级用户
积分 45
发帖 44
注册 2008-11-22
状态 离线
|
|
2008-11-22 15:41 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
3 楼』:
@echo off
set SrcFile=C:\test\X.log
set SrcPath=%SrcFile:\=\\%
for /f "tokens=2 delims==" %%a in ('wmic path win32_operatingsystem get LocalDateTime /value') do set Today=%%a
for /f "tokens=2 delims==" %%a in ('wmic path CIM_logicalfile where name^="%SrcPath%" get CreationDate /value') do set FileDay=%%a
set /a MinusD=%Today:~0,8%-%FileDay:~0,8%
set /a MinusT=1%Today:~8,4%-1%FileDay:~8,4%
if %MinusD% leq 0 (
if %MinusT% gtr 5 (
goto :Oracle
)
) else (
goto :Oracle
)
:Oracle
set oraName=USERNAME
set oraPass=PASSWORD
set oraDB=DATABASENAME
set oraSql=%temp%\myOra.sql
>"%oraSql%" echo conn %oraName%/%oraPass%@%oraDB%
rem 请参照上面一句代码的格式自行添加insert语句
start sqlplus /nolog @"%oraSql%"
|
|
|
2008-11-22 23:46 |
|
|
win007
初级用户
积分 45
发帖 44
注册 2008-11-22
状态 离线
|
『第
4 楼』:
set SrcPath=%SrcFile:\=\\%
这行需要改吗
>"%oraSql%" echo conn %oraName%/%oraPass%@%oraDB%
按照上面 是不是把insert into的语句写在oraSql.sql中去啊
还是要写在bat里面啊
例如
>"%oraSql%" inert into *****_tbl;
value ( )
[ Last edited by win007 on 2008-11-23 at 02:20 ]
|
|
2008-11-23 02:05 |
|
|
win007
初级用户
积分 45
发帖 44
注册 2008-11-22
状态 离线
|
『第
5 楼』:
请问 您写的是文件修改时间和系统时间做比较吗?
|
|
2008-11-23 02:10 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
6 楼』:
Quote: | set SrcPath=%SrcFile:\=\\%
这行需要改吗 |
|
不需要改
Quote: | >"%oraSql%" echo conn %oraName%/%oraPass%@%oraDB%
按照上面 是不是把insert into的语句写在oraSql.sql中去啊
还是要写在bat里面啊
例如
>"%oraSql%" inert into *****_tbl;
value ( ) |
|
目的是写到oraSql.sql文件里面
>"%oraSql%" echo inert into xxx
是的
|
|
|
2008-11-23 02:47 |
|
|
win007
初级用户
积分 45
发帖 44
注册 2008-11-22
状态 离线
|
『第
7 楼』:
@echo off
set SrcFile=G:a.txt
set SrcPath=%SrcFile:\=\\%
for /f "tokens=2 delims==" %%a in ('wmic path win32_operatingsystem get LocalDateTime /value') do set Today=%%a
for /f "tokens=2 delims==" %%a in ('wmic path CIM_logicalfile where name^="%SrcPath%" get CreationDate /value') do
set FileDay=%%a
set /a MinusD=%Today:~0,8%-%FileDay:~0,8%
set /a MinusT=1%Today:~8,4%-1%FileDay:~8,4%
if %MinusD% leq 0 (
if %MinusT% gtr 5 (
goto :echo"The system is down"
)
) else (
goto :echo"The system is running"
)
pause
由于在测试的时候,我想用大于5min并且小于0
min,显示system is down
而否则 就显示system is running
但是没有达到预期的目的
望 斑竹 指教
|
|
2008-11-23 11:14 |
|
|
win007
初级用户
积分 45
发帖 44
注册 2008-11-22
状态 离线
|
『第
8 楼』:
@echo off
set SrcFile=G:a.txt
set SrcPath=%SrcFile:\=\\%
for /f "tokens=2 delims==" %%a in ('wmic path win32_operatingsystem get LocalDateTime /value') do set Today=%%a
for /f "tokens=2 delims==" %%a in ('wmic path CIM_logicalfile where name^="%SrcPath%" get CreationDate /value') do set FileDay=%%a
set /a MinusD=%Today:~0,8%-%FileDay:~0,8%
set /a MinusT=1%Today:~8,4%-1%FileDay:~8,4%
if %MinusD% leq 0 (
if %MinusT% gtr 5 (
echo "The system is down"
)
) else (
echo "The system is running"
)
pause
显示结果:
无可用范例
运算符不存在
“The system is running"
不知为何?
system应该按条件来说已经死了
|
|
2008-11-23 11:38 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
9 楼』:
Re 8楼
第二行少了一个斜线,应为:
set SrcFile=G:\a.txt
请修改以后重新测试
|
|
|
2008-11-23 11:49 |
|
|
win007
初级用户
积分 45
发帖 44
注册 2008-11-22
状态 离线
|
『第
10 楼』:
@echo off
set SrcFile=G:\a.txt
set SrcPath=%SrcFile:\=\\%
for /f "tokens=2 delims==" %%a in ('wmic path win32_operatingsystem get LocalDateTime /value') do set Today=%%a
for /f "tokens=2 delims==" %%a in ('wmic path CIM_logicalfile where name^="%SrcPath%" get CreationDate /value') do
set FileDay=%%a
set /a MinusD=%Today:~0,8%-%FileDay:~0,8%
set /a MinusT=1%Today:~8,4%-1%FileDay:~8,4%
if %MinusD% leq 0 (
if %MinusT% gtr 5 (
echo "The system is down"
)
) else (
echo "The system is running"
)
pause
虽然改过,但是还是结果是 The system is running
事实上 a.txt 是昨天更新的 到现在没有更新过,应该显示的是 The system is down
不知为何?
|
|
2008-11-23 12:33 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
11 楼』:
@echo off
set SrcFile=G:\a.txt
set SrcPath=%SrcFile:\=\\%
for /f "tokens=2 delims==" %%a in ('wmic path win32_operatingsystem get LocalDateTime /value') do (
set Today=%%a
)
for /f "tokens=2 delims==" %%a in ('wmic path CIM_logicalfile where name^="%SrcPath%" get CreationDate /value') do (
set FileDay=%%a
)
set /a MinusD=%Today:~0,8%-%FileDay:~0,8%
set /a MinusT=1%Today:~8,4%-1%FileDay:~8,4%
echo %Today%
echo %FileDay%
echo %MinusD%
echo %MinusT%
if %MinusD% leq 0 (
if %MinusT% gtr 5 (
echo "The system is down"
) else (
echo "The system is running"
)
) else (
echo "The system is down"
)
pause 结果贴出来看看
[ Last edited by HAT on 2008-11-23 at 13:22 ]
|
|
|
2008-11-23 13:20 |
|
|
win007
初级用户
积分 45
发帖 44
注册 2008-11-22
状态 离线
|
『第
12 楼』:
结果如下:
20081123130705.781000+480
20081121213832.420000+480
2
-825
"The system is down"1
我刚刚手动更新 a.txt,结果也如上
|
|
2008-11-23 13:37 |
|
|
win007
初级用户
积分 45
发帖 44
注册 2008-11-22
状态 离线
|
『第
13 楼』:
结果如下:
20081123130705.781000+480
20081121213832.420000+480
2
-825
"The system is down"
没有”1“
|
|
2008-11-23 13:40 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
14 楼』:
加上变量初始化,再试试。
@echo off
set SrcFile=G:\a.txt
set SrcPath=%SrcFile:\=\\%
set Today=
set FileDay=
set MinusD=
set MinusT=
for /f "tokens=2 delims==" %%a in ('wmic path win32_operatingsystem get LocalDateTime /value') do (
set Today=%%a
)
for /f "tokens=2 delims==" %%a in ('wmic path CIM_logicalfile where name^="%SrcPath%" get LastModified /value') do (
set FileDay=%%a
)
set /a MinusD=%Today:~0,8%-%FileDay:~0,8%
set /a MinusT=1%Today:~8,4%-1%FileDay:~8,4%
echo %Today%
echo %FileDay%
echo %MinusD%
echo %MinusT%
if %MinusD% leq 0 (
if %MinusT% gtr 5 (
echo "The system is down"
) else (
echo "The system is running"
)
) else (
echo "The system is down"
)
pause 原来是第二个wmic取错数据了,已更新。
[ Last edited by HAT on 2008-11-23 at 14:03 ]
|
|
|
2008-11-23 13:59 |
|
|
win007
初级用户
积分 45
发帖 44
注册 2008-11-22
状态 离线
|
『第
15 楼』:
@echo off
set SrcFile=G:\a.txt
set SrcPath=%SrcFile:\=\\%
set Today=
set FileDay=
set MinusD=
set MinusT=
for /f "tokens=2 delims==" %%a in ('wmic path win32_operatingsystem get LocalDateTime /value') do (
set Today=%%a
)
for /f "tokens=2 delims==" %%a in ('wmic path CIM_logicalfile where name^="%SrcPath%" get LastModified /value') do (
set FileDay=%%a
)
set /a MinusD=%Today:~0,8%-%FileDay:~0,8%
set /a MinusT=1%Today:~8,4%-1%FileDay:~8,4%
echo %Today%
echo %FileDay%
echo %MinusD%
echo %MinusT%
if %MinusD% leq 0 (
if %MinusT% gtr 5 (
goto :Oracle
) else (
echo "The syestem is runnning"
)
) else (
goto :Oracle
)
:Oracle
set oraName=USERNAME
set oraPass=PASSWORD
set oraDB=DATABASENAME
set oraSql=%temp%\myOra.sql
>"%oraSql%" echo conn %oraName%/%oraPass%@%oraDB%
rem 请参照上面一句代码的格式自行添加insert语句
start sqlplus /nolog @"%oraSql%"
改过连接DB的代码 如上:
如果系统活着就不用去,连接DB,自动关闭,请问以上代码写的正确吗?
|
|
2008-11-23 14:11 |
|