Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2160779
  • 博文数量: 317
  • 博客积分: 5670
  • 博客等级: 大校
  • 技术积分: 3677
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-10 17:51
文章分类

全部博文(317)

文章存档

2016年(2)

2015年(44)

2014年(68)

2013年(42)

2012年(23)

2011年(51)

2010年(67)

2009年(17)

2008年(3)

分类: 系统运维

2011-08-25 15:07:07

来自:#

如果你想对n台服务器进行批量管理,从而提高效率,本文或许对你有些帮助

如果大家有不明白的地方或其它问题,可以联系我,互相交流,共同进步,我的qq群:17489917

SecureCRT是一款终端仿真程序,支持ssh、Telnet和rlogin协议,可以在windows平台通过它对unixlinux进行访问,相比同类软件,它的强大之处就在于支持vbs、js等脚本,利用脚本可实现批量操作,如:获取服务器相关信息、部署软件、修改密码、升级软件、上传/下载、修改文件等等,还能生成excel报表
最大的优点,就是无需在服务器端安装agent,这是其他软件无法与之相媲美的,当初在给工行做项目的时候,在3000多台服务器上部署软件,用的就是SecureCRT脚本


下面分享一个例子:该脚本用vbs语言编写,脚本会读取iplist文件,通过ssh方式连接服务器,在centos5.5_64bit系统上自动安装lrzsz软件,脚本对目标服务器进行了判断,如已经安装lrzsz软件则退出,否则执行安装程序。

SecureCRT-vbs脚本使用说明

一.脚本运行环境
1.        需要在客户端安装SecrueCRT软件

二.脚本使用方法
1.打开SecureCRT,不连接任何会话
1.JPG



2.选择脚本菜单----执行,选择你要运行的脚本,
如弹出下面的提示,选择接受并保存。
2.JPG



3.脚本执行过程中,最好不要进行其他操作,脚本执行完后会自动退出
三.自动安装脚本参数介绍:
  outputpath = ".\install-log.txt"   '输出文件,脚本运行后会自动创建
  iplistpath = ".\ip.txt"    'ip列表文件,需提前创建,每行有2列,用1个空格作为分隔符,首尾不能有多余的空格或其他字符,iplist格式如下:

192.168.0.1 123456
192.168.0.2 abcd1234


  loginuser = "root"   '登陆用户
  productpath = "/usr/local/src"    '产品路径,可自行定义


Ssh、Main部分都已写成函数,一般情况下无需更改。你需要的是维护脚本具体执行相关功能部门的函数即可。

  1. # $language = "VBScript"
  2. # $interface = "1.0"

  3. ' Written by Peng Xiaofeng
  4. ' @ 201107
  5. ' QQ:5876006

  6. Const ForReading = 1
  7. Const ForWriting = 2

  8. Dim fso, outputpath , iplistpath , file, iplist, Str, StrIp, StrPwd
  9. Dim loginuser
  10. Dim index , index1 , n ,productpath

  11. '======================path and some parameters ========================================
  12.   outputpath = ".\install-log.txt"   '输出文件
  13.   iplistpath = ".\ip.txt"    'ip列表文件,每行有2列,用1个空格作为分隔符,首尾不能有多余的空格
  14.   loginuser = "root"   '登陆用户
  15.   productpath = "/usr/local/src"    '产品路径
  16. '=======================define end=================================================

  17. '=======================open file==================================================
  18. Set fso = CreateObject("Scripting.FileSystemObject")
  19. Set file = fso.OpenTextFile(outputpath , ForWriting, True) ' result file path
  20. Set iplist = fso.OpenTextFile(iplistpath , ForReading, False) ' ip-list file path
  21. '========================end open==================================================

  22. '========================================ssh start=====================================

  23. Sub Ssh(ip)

  24.                 crt.Screen.Synchronous = True
  25.                 On Error Resume Next
  26.                
  27.                 cmd = "/ssh2 /L " & loginuser &" /PASSWORD " & StrPwd & " /C 3DES " & ip
  28.                 crt.Session.Connect cmd
  29.                
  30.                 If Err.Number <> 0 Then
  31.                         file.Write " Can't connect 22 port:" & vbCr
  32.                         index = 99
  33.                         crt.Session.Disconnect
  34.                 Else
  35.                           Do
  36.                                   index = crt.Screen.WaitForStrings("#" , ">" , 10)
  37.                                   Select Case index
  38.                                                   Case "0"
  39.                                                                 file.Write "login fail:" & loginuser
  40.                                                                 index = 99
  41.                                                             Exit Do
  42.                                                   Case "1"
  43.                                                                 index = 100
  44.                                                                 Exit Do
  45.                                                   Case "2"
  46.                                                                 index = 100
  47.                                                                 Exit Do
  48.                                   End Select
  49.                           Loop
  50.                           If index <> 100 Then
  51.                            crt.Session.Disconnect
  52.                           End If
  53.                 End If
  54. End Sub
  55. '=========================================ssh end======================================

  56. '========================================install begin==================================
  57. Sub Install

  58. crt.Sleep 1000
  59. crt.Screen.Send "cd " & productpath & vbCr
  60.     crt.Screen.Send "LANG=en_US.UTF-8;export LANG" & vbCr
  61.                 crt.Sleep 1000                                                                            
  62.                 crt.Screen.Send "LC_ALL=en_US.UTF-8;export LC_ALL" & vbCr
  63.                 crt.Sleep 1000                                                                                                                                                                                                                                                                                                                                                                                                             
  64. crt.Screen.Synchronous = False                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
  65. crt.Screen.Send "uname -rsm" & vbCr     '判断系统版本                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
  66. Do            
  67.         index1 = crt.Screen.WaitForStrings("Linux 2.6.18-194.el5 x86_64", "Linux 2.6.9-55.ELsmp i686", "Linux 2.6.18-194.el5 i686", "Linux 2.6.18-164.ESX x86_64", 5)                                                                                                                                                                                                                                                                                                                                                                                                                                
  68.         Select Case index1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
  69.                         Case "0"                                                                                                                                                                                                                                                                                                                                                                                                                                                       
  70.                             Exit Do                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
  71.                         Case "1"
  72.                         'CENTOS5.5 64bit
  73.                                                                 crt.Screen.Send "wget ftp://ftp.sunet.se/pub/Linux/distributions/centos/5.6/os/x86_64/CentOS/lrzsz-0.12.20-22.1.x86_64.rpm" & vbCr
  74.                                                                 crt.Sleep 12000
  75.                                                                 crt.Screen.Send "ls" & vbCr
  76.                                                                 crt.sleep 1000
  77.                                                                 Exit Do
  78.                         Case "2"
  79.                                 'RHEL4U4 32bit
  80.                                                                 crt.Screen.Send "ls" & vbCr
  81.                                                                 crt.sleep 1000
  82.                                                                 Exit Do                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
  83.                         Case "3"
  84.                          'CENTOS5.5 32bit
  85.                                                                 crt.Screen.Send "ls" & vbCr
  86.                                                                 crt.sleep 1000
  87.                                                                 Exit Do      
  88.                         Case "4"
  89.                                 'ESX 4.1 64bit
  90.                                                                 crt.Screen.Send "ls" & vbCr
  91.                                                                 crt.sleep 1000
  92.                                                                 Exit Do
  93.                 End Select                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
  94. Loop

  95. If index1 = 0 Then                                                                                                                            
  96. file.Write " time out! : Cann't confirm os version! "                                                                                                                                  
  97. Else                                                                                                                                                    
  98. crt.Screen.Send "rpm -qa|grep  rzsz" & vbCr   '判断lrzsz是否安装                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
  99. If crt.Screen.WaitForString("lrzsz", 5) = True Then
  100.         file.Write " lrzsz Exists "
  101. Else
  102.         crt.Screen.Send "ls" & vbCr     
  103.               crt.sleep 1000                                                                                                                                                                                                                                                                                                                                                                                                                                            
  104.                                 crt.Screen.Send "rpm -ivh lrzsz-0.12.20-22.1.x86_64.rpm"        & vbCr  '执行安装命令
  105.                            crt.sleep 3000          
  106.                            crt.Screen.Send "ls /usr/bin/rz" & vbCr
  107.                            If crt.Screen.WaitForString("/usr/bin/rz", 5) = True Then  '判断是否安装成功
  108.                            file.Write "lrzsz install success"   '结果写进输出文件中
  109.                            crt.Screen.Send "rm -f lrzsz-0.12.20-22.1.x86_64.rpm"        & vbCr   '删除安装程序
  110.                            crt.sleep 1000
  111.                            Else
  112.                                  file.Write "lrzsz install fail"
  113.                            crt.sleep 1000
  114.                            End If                                                                                   
  115. End If                                                                                                                                        
  116. End If                                                                                                                                                                                                                                                                                                                                                                                                                         
  117. crt.Screen.Send "exit" & vbCr
  118. End Sub
  119. '======================================install end====================================

  120. '=========================================Main begin==================================
  121. Sub Main

  122.   Do While iplist.AtEndOfStream <> True
  123. '逐行读取iplist文件,分别赋予2个变量StrIp和StrPwd
  124.                 Str = iplist.Readline
  125.                 n = InStr(Str, " ")
  126.                 StrIp = Left(Str, n)
  127.                 n = Len(Str) - n
  128.                 StrPwd = Right(Str, n)
  129. '下面的把结果写到输出文件中                 
  130.                 file.Write "Ip:" & StrIp & "-"
  131.                 Ssh StrIp
  132.                
  133.                 If index = 99 Then                                                             
  134.                 crt.Sleep 1000
  135.                 Else
  136.                 crt.Screen.Send "id " & vbCr
  137.                         If crt.Screen.WaitForString("uid=0", 3) = True Then
  138.                                 crt.Sleep 1000
  139.                                 Install   '执行install过程
  140.                         End If
  141.                 End If
  142.                 crt.Session.Disconnect                                                                                                                                                                                                                                                                                                                                                                                                                                                        
  143.                 file.Write vbCrLf
  144.   Loop
  145. End Sub
  146. '=======================================Main end========================================

附件 SecureCRT脚本.zip (35.12 KB)

阅读(4691) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~