中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] [3] [4] »
作者:
标题: [已结]检测系统存活的程式 上一主题 | 下一主题
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
状态 离线
『第 2 楼』:  

在线等 急
高手请进~

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

  Quote:
请问 您写的是文件修改时间和系统时间做比较吗?

是的



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
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] [4] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: