标题: [网络连接] 批处理怎样自动拨号? [打印本页]
作者: codeblue 时间: 2007-11-9 18:16 标题: 批处理怎样自动拨号?
现在 有若干个账号密码以及各个账号所对应的IP。
要求,运行批处逐个检查IP是否在线,如果不在线就调用对应账号密码来拨号,连接的名称和IP一样,(事先已添加好)。连接上后自动检测所连接账号对应的IP是否上线,若检测到机器上线则自动断开宽带连接,然后重新检测,如果 可能 的话,在一次检测完没有一个IP不在线的情况 ,自动退出程序。(我里我想能不能用导出 到txt,在find来实现)。
ps: 可能出现ip不在线,但账号有人在用的情况 ,这种情况 也跳过,检测下一个
连接宽带的命令 Rasdial 连接名 用户名 密码
断开连接的命令 Rasdial 连接名 /disconnect
然后账号可能 以后还会增加,希望 能在外面直接加在一个文本里,以一定格式储存就行了。不要改P的代码。
呵呵 ,先谢谢 各位 。表达能力 不行,什么看不明白的,可以 回贴。^ ^
[ 本帖最后由 codeblue 于 2007-11-9 18:18 编辑 ]
作者: 随风 时间: 2007-11-9 20:04
检查某个IP是否在线
检测所连接账号对应的IP是否上线
这两项 能用批处理或命令行做到吗? (如果能,请把步骤写出来)
作者: codeblue 时间: 2007-11-9 21:46
ip都知道 ,我目前 是用ping ,ping ip -n 1 -w 300 这样可能 保证速度 。但是资源 可能会浪费 。相对 其他 批处理 来说。就是这样了。连上之后 还是不停的ping ,我现在是用goto,,呵呵 。不知道 要怎么 处理 。
作者: 随风 时间: 2007-11-9 23:17
a.txt内容:
ip 用户名 密码
ip 用户名 密码
一行一个,用空格分开.(可以随时添加)
.
不知道你是不是这个意识
ping第一个ip 通就继续ping后面的,不通就连接这个ip,然后就一直ping这个ip
直到ping通以后就断开,再继续ping后面的ip,遇到不通的就又连接这个不通的ip
然后又一直ping这个你连接上的ip,直到通再继续.
若是从头ping到尾,都是通的,就退出.
::- @echo off&setlocal EnableDelayedExpansion
- :kai
- set num=0&str=0
- for /f "tokens=1-3 delims= " %%a in (a.txt) do (
- ping/n 1 %%a>nul 2>nul
- if !ERRORLEVEL! neq 0 (
- for /f "delims=:" %%i in ('Rasdial %%a %%b %%c') do (
- if "%%i"=="若需此错误的详细说明" set str=1
- )
- if !str! equ 0 call :lis %%a
- ))
- if !num! equ 0 (exit) else goto kai
- :lis
- ping/n 1 %1>nul 2>nul
- if !ERRORLEVEL! neq 0 goto lis
- Rasdial %1 /disconnect
- set num=1
- goto :eof
复制代码
[ 本帖最后由 随风 于 2007-11-10 15:52 编辑 ]
作者: codeblue 时间: 2007-11-10 07:52
正是这个意思 。代码 一会试一下,谢谢 。
作者: codeblue 时间: 2007-11-10 08:06
测试 了一下,总体 是这样,但是有个细节 ,我在一楼也提到 了。就是可能 ping 不能IP但账号 也不能用的情况 ,可能 其他 人借了他的。也可能 是密码 出错,会出现 如下错误
正在验证用户名及密码...
远程访问错误 691 由于域上的用户名和/或密码无效而拒绝访问。
若需此错误的详细说明:
请在帮助中键入“hh netcfg.chm”
单击“疑难解答”,选择“错误信息”,然后键入 “ 691”
这样,如果 第一个不行的话就卡住 了,我不知道 把find 插在哪 。。。
作者: codeblue 时间: 2007-11-10 08:41
还有就是在lis 那里,连接 成功 后是一直ping ,在ping 前一行可不可以 加个延时,纯批处理 能不能解决 。我想这样会省点资源 。呃。
[ 本帖最后由 codeblue 于 2007-11-10 09:35 编辑 ]
作者: 随风 时间: 2007-11-10 16:11
::- @echo off&setlocal EnableDelayedExpansion
- title 检测ip
- :kai
- set num=0&set str=0
- for /f "tokens=1-3 delims= " %%a in (a.txt) do (
- ping/n 1 %%a>nul 2>nul
- if !ERRORLEVEL! neq 0 (
- for /f "delims=:" %%i in ('Rasdial %%a %%b %%c') do (
- if "%%i"=="若需此错误的详细说明" set str=1&echo %%a 连接出现错误
- )
- if !str! equ 0 call :lis %%a
- ) else echo %%a 在线
- )
- if !num! equ 0 (exit) else goto kai
- :lis
- ping/n 1 %1>nul 2>nul
- if !ERRORLEVEL! neq 0 goto lis
- Rasdial %1 /disconnect&&echo 以断开 %1 连接,正在检测其它的ip
- set num=1
- goto :eof
复制代码
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |