61 1234
发新话题
打印

[分享] [技巧]使用SecureCRT登录路由器

[技巧]使用SecureCRT登录路由器

看到这个题目,想必大家一定觉得很无聊,但如果你看完了,一定会惊呼SecureCRT功能的强大。
    大家以前可能大部分都是用Windows自代的Telnet程序或是通过Putty来连接Dynamips虚拟的路由器,但Telnet功能太单一,复制粘贴也不方便,我一开始就不用它,除非是该机器上没有其它程序。Putty呢,功能不少,程序也不大,还是一个绿色单一文件,确实很好,但是,如果你想登录多个网络设备,就要开多个Window窗口,弄得系统任务栏上都是putty的窗口,虽然WinXP可以对任务分组,但要找登录到某一设备的任务还是比较麻烦的。讲到这里,大家肯定马上就想到了SeucreCRT,不错,是这个软件。下面就详细说说。
    SecureCRT的功能确实强大,强大到哪里,一般的功能就不说了,单纯支持JS或VBS脚本,就非常了不得,当然,在这里我还要提一下它的标签(TAB)功能。也就是说,给一个任务,不是新开一个Windows窗口,而是新建立一个标签(就象IE和Maxthon的区别一样)。此外,SecureCRT除了传统的图形化界面之处,还支持命令行参数功能,就是这一项和VBS脚本结合,才实现我要说的主题。
   在Dynagen的命令行输入telnet R1(当然R1这个设备得存在),是开启windows的Telnet还是Putty或是SecureCRT,是由一个配置文件dynagen.ini 决定的,这个文件存在于dynagen安装好的目录中(当然,绿色版本另当别论,自己找一找吧),用文本文件编辑器打开,找到这些行:
#telnet = start telnet %h %p
#telnet = start putty.exe -telnet %h %p
telnet = start secureCRT.exe /T /telnet %h %p
注:#是注释的意思
    如果想用Win自己带的Telnet,用第一行,如果想用putty,用第二行(要确保putty在系统路径中),想用SecureCRT,就用第三行(我就是这么用的)。这里需要说明一下参数的意思:secureCRT.exe就是安装好SecureCRT后的可执行程序,当然,你要确保它在系统路径中(什么意思?晕,把你安装好的路径,如:C:\Program Files\SecureCRT,追加到系统的path变量上,方法很多,这里超出范围,不再赘述)。/T是一个secureCRT的参数,意思是新开一个标签,注意,这个参数只有SecureCRT 5.2及以后版本才有,其它版本没有。/telnet的意思是走Telnet协议,%h是要telnet到的主机,%是要telnet的主机的端口。
    做到这里,你只能在Dynagen的命令行输入telnet R1时,开启SecureCRT或是新开一个标签来连接R1,些时,每个设备的标签都是相同的,这就没有意义了,想要找某个设备,还是比较困难,怎么办?我找遍了SecureCRT的命令参考,也没有找到好办法,后来觉得还是用VBS比较好。下面是一个脚本,主要是用来解决每个设备一个标签名字的问题,顺便解决了连接路由器需要敲无数回车或是输入“No”等一系列我认为必须设备的路由器命令。下面先看一下,再做解释(文件名为DyCRT.vbs,当然,你也可以自己命名):

#$language = "VBScript"
#$interface = "1.0"
Option Explicit
Function mysubstring(srcString,bChar,eChar)
  Dim fIndex,sIndex  
  fIndex=InStr(srcString,bChar)
   sIndex=InStrRev(srcString,eChar)
   mysubstring=Mid(srcString,fIndex+1,sIndex-fIndex-1)   
End Function
'用来得到一个时间字符串,该字符串用来设置路由器的时间和日期
Function ciscoDate()
   dim   em, y,m,d,h
   Dim nowDate
   nowDate=Now()
  em=Array("January","February","March","April","May","June","July","August","September","October","November","December")
   y=Year(nowDate)  
   m=em(Month(nowDate)-1)
   d=Day(nowDate)  
   h=Time()
  ciscoDate=h & " " & m & " " & d & " " & y
  
End Function
Sub main
   On Error Resume Next
   
   crt.Screen.Synchronous = True
   crt.Screen.WaitForString "Console port"
   crt.Screen.Send  VbCr
   
   '得到第一行显示文本,主要从中提取设备名称
   Dim firstLine
   '用来存储标签的标题,也就是设备的名称
   Dim tabTitle
   firstLine=crt.Screen.Get2(1,1,1,100) '得到第一行文本
   tabTitle=mysubstring(firstLine,"""","""") '调用方法取两个双引号之间的文本
   crt.Window.Caption= tabTitle
   
   'Dim result
   'result = crt.screen.WaitForStrings("'yes' or 'no'", "[yes/no]:", "RETURN")
   'If result = 1 Then
   '  crt.Screen.Send VbCr
   'ElseIf result = 2 Then
   '  crt.Screen.Send "no" & VbCr
   'ElseIf result = 3 Then
   '  crt.Screen.Send VbCr   
   'Else
   ' crt.Screen.Send VbCr
   'End If
   If crt.Screen.WaitForString("[yes/no]") Then   
     crt.Screen.Send "no" & VbCr
   End If
   crt.Screen.Send VbCr &VbCr
   crt.Screen.WaitForString "Router>"   
   crt.Screen.Send  "enable" & VbCr
   crt.Screen.Send "conf terminal" & VbCr
   crt.Screen.Send "no ip domain-lookup " & VbCr
   crt.Screen.Send "hostname " & tabTitle & VbCr
   crt.Screen.Send "line con 0" & VbCr   
   crt.Screen.Send "exec-timeout 0 0" & VbCr   
   crt.Screen.Send "logging synchronous" & VbCr      
   crt.Screen.Send "end" & VbCr
   
  crt.Screen.Send "clock set " & ciscoDate() & VbCr  
   crt.Screen.Synchronous = False
  
End Sub


这个脚本的意思,我在程序中都注释了,总体意思是给标签更名为设备的名称,并在设备起来后,设备几个常见的路由命令,如:不需要域名查找,永不超时,没有恼人的提示信息的不换行干扰(也就是自动换行吧,防止提示信息干扰),如果你不需要这些,用'注释到这些行,或者删除。

脚本弄好了,要想它正常工作,有两个办法,一个是纯命令行方法,就是在dynagen.ini文件中的:
telnet = start secureCRT.exe /T /telnet %h %p改为telnet = start secureCRT.exe /T /SCRIPT DyRouter.vbs  /telnet %h %p,当然,要确保系统能找到DyCRT.vbs,最好用绝对路径指明DyRouter.vbs 脚本所在位置。
第二种方法(推荐此种方法),打开SecureCRT的界面,找到菜单Options->Global Options,弹出如下界面:
按序设置好就OK了,现在,开启你的Dynamips,点击net文件,输入telnet /all,就会看到如下界面:
其中绿色标签表示当然活动窗口,从中可以看到已经从脚本中输入了一些命令。
下面是用第二种方法的配置过程:

TOP

标签功能确实不错撒
我都是存为 2001 2002 2003  
以后直接点下就登陆了
省得一个在输入
Netemu@gmail.com
QQ:247656
Netemu提问技巧
http://netemu.cn/bbs/thread-8031-1-1.html

TOP

是啊,原来我也是按2楼的方法,接下来觉得不方便,就查SecureCRT 的脚本功能,花了一正午的时间,写了这个脚本。只要在dynagen的命令行下输入telnet [设备名],就可以在SSecureCRT上新开一个标签,并自动把标签更名为设备名称,且做了一些路由器的基本配置。个人感觉挺好,以前在工大的发过,顶的人不多,估计是大家都不用SecureCRT,或是我的标题写的不好,不吸引人吧。

TOP

谁不用SECURECRT?

公司里每个人都装了
Netemu@gmail.com
QQ:247656
Netemu提问技巧
http://netemu.cn/bbs/thread-8031-1-1.html

TOP

还是继续用2楼的方法吧。BTW,我用bat。

TOP

看了,顶一下吧!我是用的中文版!

TOP

改了Dynagen中的配置文件,窗口少的时候就用Putty,多的话就用SecureCRT
Do not , for one repulse , give up the purpose that you resolved to effect .
--努力!~
http://flyxj.cn

TOP

SecureCRT我一直在用它,感觉太好,感谢我的网络老师.

TOP

很不错的说,用DY一直都是它陪伴着的,好用。。。

TOP

有没有那的破解吗啊?我的只能试用30天

TOP

到处有注册码的 就OK了破解啥

TOP

标签功能不能用呀!

我的标签功能不能用呀,标签是空白,我的是WIN2K+sECUREcrt5。1。0 汉化版!

TOP

窗口少的时候用Putty方便,占资源少。
将putty.exe拷贝至C:\windows\system32
开始-运行
putty -telnet ***.***.***.***
即可

TOP

必须是SecureCRT5.2以后版本才有/T参数支持。

TOP

DynamipsGUI_2.3_CN和dynagen有什么区别~~~~~~~~
我到目前还没搞懂啊~~

TOP

SecureCRT5.2这个工具我下了``挺好用的~~~很方便就能够连接到用DynamipsGUI_2.3_CN
搭建的网络的路由器上~~~~~

TOP

copy下来一起学习下,楼主辛苦了!

TOP

我把你下面的程序拷贝到记事本里面之后,建立DyCRT.vbs,用sectureCT,导入
可以没有成功,怎么回事呀!望给与解答







#$language = "VBScript"
#$interface = "1.0"
Option Explicit
Function mysubstring(srcString,bChar,eChar)
  Dim fIndex,sIndex  
  fIndex=InStr(srcString,bChar)
   sIndex=InStrRev(srcString,eChar)
   mysubstring=Mid(srcString,fIndex+1,sIndex-fIndex-1)   
End Function
'用来得到一个时间字符串,该字符串用来设置路由器的时间和日期
Function ciscoDate()
   dim   em, y,m,d,h
   Dim nowDate
   nowDate=Now()
  em=Array("January","February","March","April","May","June","July","August","September","October","November","December")
   y=Year(nowDate)  
   m=em(Month(nowDate)-1)
   d=Day(nowDate)  
   h=Time()
  ciscoDate=h & " " & m & " " & d & " " & y
  
End Function
Sub main
   On Error Resume Next
   
   crt.Screen.Synchronous = True
   crt.Screen.WaitForString "Console port"
   crt.Screen.Send  VbCr
   
   '得到第一行显示文本,主要从中提取设备名称
   Dim firstLine
   '用来存储标签的标题,也就是设备的名称
   Dim tabTitle
   firstLine=crt.Screen.Get2(1,1,1,100) '得到第一行文本
   tabTitle=mysubstring(firstLine,"""","""") '调用方法取两个双引号之间的文本
   crt.Window.Caption= tabTitle
   
   'Dim result
   'result = crt.screen.WaitForStrings("'yes' or 'no'", "[yes/no]:", "RETURN")
   'If result = 1 Then
   '  crt.Screen.Send VbCr
   'ElseIf result = 2 Then
   '  crt.Screen.Send "no" & VbCr
   'ElseIf result = 3 Then
   '  crt.Screen.Send VbCr   
   'Else
   ' crt.Screen.Send VbCr
   'End If
   If crt.Screen.WaitForString("[yes/no]") Then   
     crt.Screen.Send "no" & VbCr
   End If
   crt.Screen.Send VbCr &VbCr
   crt.Screen.WaitForString "Router>"   
   crt.Screen.Send  "enable" & VbCr
   crt.Screen.Send "conf terminal" & VbCr
   crt.Screen.Send "no ip domain-lookup " & VbCr
   crt.Screen.Send "hostname " & tabTitle & VbCr
   crt.Screen.Send "line con 0" & VbCr   
   crt.Screen.Send "exec-timeout 0 0" & VbCr   
   crt.Screen.Send "logging synchronous" & VbCr      
   crt.Screen.Send "end" & VbCr
   
  crt.Screen.Send "clock set " & ciscoDate() & VbCr  
   crt.Screen.Synchronous = False
  
End Sub

TOP

================
Netemu@gmail.com
QQ:247656
Netemu提问技巧
http://netemu.cn/bbs/thread-8031-1-1.html

TOP

thanks

TOP

 61 1234
发新话题