| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1000 人关注过本帖
标题:关于vbs的一个求教
只看楼主 加入收藏
汪中华
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-3-1
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:15 
关于vbs的一个求教
这是一个登陆电信机房OLT,准备给新装光纤猫做数据在一小段程序,就是自动登陆后,第一个命令有时运行时间太长,所以第二个命令就不完整了,就是想在第一个命令运行完等1、2秒,再运行第二个命令。第一个命令是:display ont autofind  all 第二个命令是:interface gpon 0/,以下是原程序
# $language = "VBScript"
# $interface = "1.0"
Sub Main
crt.screen.WaitForString "User name:",10
crt.screen.send "root"
crt.screen.send Chr(13)
crt.screen.WaitForString "User password:",10
crt.screen.send "admin"
crt.screen.send Chr(13)
crt.screen.send "enable"
crt.screen.send Chr(13)
crt.screen.send "config"
crt.screen.send Chr(13)
crt.screen.send "display ont autofind  all"
crt.screen.send Chr(13)
crt.screen.send "interface gpon 0/"
End Sub
搜索更多相关主题的帖子: interface password 电信机房 display admin 
2015-03-01 16:51
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:20 
试试,我这儿没测试
...
crt.screen.send Chr(13)
crt.screen.send "display ont autofind  all"
crt.screen.send Chr(13)
crt.sleep 2000
crt.screen.send "interface gpon 0/"
End Sub

能不能等待第一条命令的屏幕返回字呢?

[ 本帖最后由 lianyicq 于 2015-3-3 09:20 编辑 ]

大开眼界
2015-03-03 09:10
汪中华
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-3-1
收藏
得分:0 
回复 2楼 lianyicq
我加上试一了下,不行呀,倒是不提示出错,但是哪个延迟命令不在第一条命令后面延迟,跑到输完用户名(Username:zte)后面延迟了,后面是要输入密码Password:,快成功了,再帮我一下
2015-03-04 16:44
汪中华
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-3-1
收藏
得分:0 
因为我有几个模板,上面说的在输完用户名要输入密码之间延迟了,就是在输完:User name:root 之后,要运行User password:的时候延迟了,咋么回这样
2015-03-04 16:54
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:0 
没测试条件,想当然地
# $language = "VBScript"
# $interface = "1.0"
Sub Main
crt.screen.Synchronous = True
crt.screen.WaitForString "User name:",10
crt.screen.send "root" & Chr(13)
crt.screen.WaitForString "User password:",10
crt.screen.send "admin" & Chr(13)
crt.screen.send "enable" & Chr(13)
crt.screen.send "config" & Chr(13)
crt.screen.send "display ont autofind  all" & Chr(13)
crt.screen.send "interface gpon 0/?" & Chr(13)
End Sub


大开眼界
2015-03-05 09:41
汪中华
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-3-1
收藏
得分:0 
是不是就加了一条命令:crt.screen.Synchronous = True  是这样吗,我加上了,在再的机房是在输完用户名之后要输密码的时候延迟了,但是在我发的这个程序也就是我要登陆的这个机房是在输完用户名和输完密码后,要进入机房设备的时候延迟了
2015-03-05 14:20
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:0 
回复 6楼 汪中华
参阅了其它配置文件,没发现相似问题。总感觉是同步的原因。
SecureCRT帮助文件中关于sleep的解释
Sleep
Description
Specifies the time (in milliseconds) to pause the script's execution.
Remarks
The amount of time that it takes to execute the Sleep() method itself is a factor in how long the script pauses. Therefore, the accuracy of invoking Sleep with small values of 1 or 10 milliseconds will be affected by this overhead.
看出是脚本发命令间的延迟,实际可能就是本地端的代码暂停,而不是远端的命令间隔。
能不能测试一下在每条发命令的脚本代码后都加一条sleep命令,看看效果如何?


大开眼界
2015-03-06 09:00
汪中华
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-3-1
收藏
得分:0 
版主你好,感谢你能关注的我的帖子,我对编程不懂,我的这个编程也是从网上搜出来的,稍做修改就用了,因为如果同时发现一二个猫要做数据,还能用,如果发现3个以上,第一条命令就运行的时间长,第二条命令也就同时运行了,这样第二条命令就出错了,以下是我的原程序:
# $language = "VBScript"
# $interface = "1.0"
Sub Main
crt.screen.WaitForString "Username:",10
crt.screen.send "zte"
crt.screen.send Chr(13)
crt.screen.WaitForString "Password:",10
crt.screen.send "zte"
crt.screen.send Chr(13)
crt.screen.send "show onu unauthentication"
crt.screen.send Chr(13)
crt.screen.send "show onu all-status epon-olt_1/"
End Sub
根据你发的程序,是把回车符直接加到命令后面了,效果是一样的,我也修改了一下,测试了,没有区别,我也附在下面
# $language = "VBScript"
# $interface = "1.0"
Sub Main
crt.screen.Synchronous = True
crt.screen.WaitForString "Username:",10
crt.screen.send "zte"& Chr(13)
crt.screen.WaitForString "Password:",10
crt.screen.send "zte"& Chr(13)
crt.screen.send "show onu unauthentication"& Chr(13)
crt.screen.send "show onu all-status epon-olt_1/"
End Sub
关于你说的加sleep,我不懂格式,都在哪个命令后面加,sleep 前面加标点符号吗,我不太懂,麻烦版主能加到程序里面,加好一起发出来,我以前只学过basic,
2015-03-06 10:44
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:0 
回复 8楼 汪中华
如果不方便这样做,就回到最初的提到的“能不能等待第一条命令的屏幕返回字呢?”
show onu unauthentication 是一条显示命令,命令完成后,是否回到提示的下一条命令输入状态?
如果是,无论这条命令执行多少时间,可在对应VBS代码后。插入
crt.screen.WaitForString "ZXAN #"(假设命令完成后屏显是"ZXAN #")
然后再是
crt.screen.send "show onu all-status epon-olt_1/" & Chr(13)


大开眼界
2015-03-06 11:45
汪中华
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-3-1
收藏
得分:0 
因为你哪边没有测试条件,我把用这个脚本进入到机房的界面复制下来,附在下面
************************************************
Welcome to ZXAN product C300 of ZTE Corporation
************************************************

Username:zte
Password:
XunHe-C300#show onu unauthentication
                     
Onu Interface    :   epon-onu_1/2/3:1
Onu Model        :   ZTE-F407
MAC Address      :   e477.2377.4754
SN               :   
LOID             :   
LOID_PSW         :   
Online State     :   authentication deny
ExtOam State     :   complete
Software Version :   V1.30.00P2T4H
Hardware Version :   V3.0
RegTime          :   2015/02/15 22:47:19      
 
XunHe-C300#show onu all-status epon-olt_1/
第一个命令是自动发现未注册的猫,第二个命令是显示某一个口下面所有的光猫,一个口可以带64个猫,因为不知道这个猫在几槽几口,所以第二个命令后面是空的,要根据第一个命令显示出来的结果来判断,第一条命令执行的结果是:发现一个未注册的光猫在1架2槽3口也就是epon-onu_1/2/3,所以第二条命令后面也要输入epon-onu_1/2/3,还有一个问题就是能不能实现利用编程来让电脑判断这个猫是在epon-onu_1/2/3,然后让程序直接输到第二条命令里,再让电脑自动执行,现在的情况是我从第一条命令判断出来,手动输到第二条命令后面,再执行,我按你说的利用屏幕返回字把crt.screen.WaitForString "XunHe-C300#"加上了,运行不出错,因为大部分情况是每发现一个就做一个,所以同时出现几个的情况还没有出现,等出现了我再试一下,如果是这样,我就得建七八个这样的程序文件,因为每一个机房进入的命令是一样的,执行的命令也是一样的,以前我七八个机房就调用一个文件就行了,如果按版主所说,我就得建七八个,因为每个命令输入前的状态是是按每个机房命名的,每个机房都不一样,就因为这一点不同就会建七八个,不知道我这样说,你能明白吗
2015-03-06 21:11
快速回复:关于vbs的一个求教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022146 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved