![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-11 03:36 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已结]检测系统存活的程式 |
| 可打印版本 4,051 / 49 |
| 第1楼 win007 | 发表于 2008-11-22 14:41 |
| 初级用户 发帖 44 积分 45 | |
|
[已结]检测系统存活的程式 哪位能人能写这样一个检测系统存活的程式
描述: 检测程式查看一个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 ] |
|
| 第2楼 win007 | 发表于 2008-11-22 15:41 |
| 初级用户 发帖 44 积分 45 | |
|
在线等 急
高手请进~ |
|
| 第3楼 HAT | 发表于 2008-11-22 23:46 |
| 版主 发帖 5,017 积分 9,023 | |
| 第4楼 win007 | 发表于 2008-11-23 02:05 |
| 初级用户 发帖 44 积分 45 | |
|
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 ] |
|
| 第5楼 win007 | 发表于 2008-11-23 02:10 |
| 初级用户 发帖 44 积分 45 | |
|
请问 您写的是文件修改时间和系统时间做比较吗?
|
|
| 第6楼 HAT | 发表于 2008-11-23 02:47 |
| 版主 发帖 5,017 积分 9,023 | |
set SrcPath=%SrcFile:\=\\% 不需要改 >"%oraSql%" echo conn %oraName%/%oraPass%@%oraDB% 目的是写到oraSql.sql文件里面 >"%oraSql%" echo inert into xxx 请问 您写的是文件修改时间和系统时间做比较吗? 是的 |
|
| 第7楼 win007 | 发表于 2008-11-23 11:14 |
| 初级用户 发帖 44 积分 45 | |
|
@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 但是没有达到预期的目的 望 斑竹 指教 |
|
| 第8楼 win007 | 发表于 2008-11-23 11:38 |
| 初级用户 发帖 44 积分 45 | |
|
@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应该按条件来说已经死了 |
|
| 第9楼 HAT | 发表于 2008-11-23 11:49 |
| 版主 发帖 5,017 积分 9,023 | |
|
Re 8楼 第二行少了一个斜线,应为:
set SrcFile=G:\a.txt 请修改以后重新测试 |
|
| 第10楼 win007 | 发表于 2008-11-23 12:33 |
| 初级用户 发帖 44 积分 45 | |
|
@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 不知为何? |
|
| 第11楼 HAT | 发表于 2008-11-23 13:20 |
| 版主 发帖 5,017 积分 9,023 | |
|
结果贴出来看看 [ Last edited by HAT on 2008-11-23 at 13:22 ] |
|
| 第12楼 win007 | 发表于 2008-11-23 13:37 |
| 初级用户 发帖 44 积分 45 | |
|
结果如下:
20081123130705.781000+480 20081121213832.420000+480 2 -825 "The system is down"1 我刚刚手动更新 a.txt,结果也如上 |
|
| 第13楼 win007 | 发表于 2008-11-23 13:40 |
| 初级用户 发帖 44 积分 45 | |
|
结果如下:
20081123130705.781000+480 20081121213832.420000+480 2 -825 "The system is down" 没有”1“ |
|
| 第14楼 HAT | 发表于 2008-11-23 13:59 |
| 版主 发帖 5,017 积分 9,023 | |
|
加上变量初始化,再试试。
原来是第二个wmic取错数据了,已更新。 [ Last edited by HAT on 2008-11-23 at 14:03 ] |
|
| 第15楼 win007 | 发表于 2008-11-23 14:11 |
| 初级用户 发帖 44 积分 45 | |
|
@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,自动关闭,请问以上代码写的正确吗? |
|
| 1 2 3 4 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |