免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345下一页
最近访问板块 发新帖
查看: 26075 | 回复: 43
打印 上一主题 下一主题

[系统管理] 利用SecureCRT脚本,实现对N台服务器的批量管理 [复制链接]

论坛徽章:
3
丑牛
日期:2014-02-25 15:19:10金牛座
日期:2014-02-28 19:01:322015亚冠之西悉尼流浪者
日期:2015-06-10 15:01:09
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-08-12 13:51 |只看该作者 |倒序浏览
本帖最后由 pxf520 于 2013-04-10 22:14 编辑

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

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

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


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

适用于unix平台的telnet函数和su函数这里暂不放出,有需要的朋友可以找我要

SecureCRT-vbs脚本使用说明

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

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


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


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, 下载次数: 273)




#########################################################
10.10日更新su功能的代码


附件更新: SecureCRT脚本更新.rar (35.5 KB, 下载次数: 317)

#######################################################
2013.03.28

SecureCRT脚本使用简明指南
SecureCRT脚本使用简明指南.pdf (301.28 KB, 下载次数: 222)

telnet和ssh  2种登录方式的例子 (操作cisco路由器的可能会用到)
telnet和ssh登录方式.rar (1.73 KB, 下载次数: 129)


过阵子有时间了,我会再写个关于自动发布系统的,可自动部署java、web、mysql等应用,支持并行,大规模部署,可回退,等等,最重要的是图形化操作。

论坛徽章:
0
2 [报告]
发表于 2011-08-12 16:06 |只看该作者
谢谢分享

论坛徽章:
0
3 [报告]
发表于 2011-08-12 16:18 |只看该作者
先收藏一下 等再看看

论坛徽章:
7
寅虎
日期:2014-08-15 12:54:11狮子座
日期:2014-10-28 23:42:142015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:48:00IT运维版块每日发帖之星
日期:2015-08-04 06:20:00IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-10-10 06:20:00
4 [报告]
发表于 2011-08-12 17:01 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2011-08-15 17:53 |只看该作者
建议用 sudo

实践证明, 在远程终端直接输入大量粘贴的命令, 远程执行的话, 具有很大的误操作.

同时批 ...
bun 发表于 2011-08-12 17:01



    确实!如果命令后面有回车符,粘贴进终端就直接执行了,可怕的!

论坛徽章:
3
丑牛
日期:2014-02-25 15:19:10金牛座
日期:2014-02-28 19:01:322015亚冠之西悉尼流浪者
日期:2015-06-10 15:01:09
6 [报告]
发表于 2011-08-15 18:48 |只看该作者
确实!如果命令后面有回车符,粘贴进终端就直接执行了,可怕的!
芬达7402 发表于 2011-08-15 17:53



      我都用了3年了,还没出过什么差错,大批量操作的情况下,会先找出一台测试,ok后,再批量执行。

论坛徽章:
7
寅虎
日期:2014-08-15 12:54:11狮子座
日期:2014-10-28 23:42:142015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:48:00IT运维版块每日发帖之星
日期:2015-08-04 06:20:00IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-10-10 06:20:00
7 [报告]
发表于 2011-08-15 21:59 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
8 [报告]
发表于 2011-08-16 02:44 |只看该作者

论坛徽章:
3
丑牛
日期:2014-02-25 15:19:10金牛座
日期:2014-02-28 19:01:322015亚冠之西悉尼流浪者
日期:2015-06-10 15:01:09
9 [报告]
发表于 2011-08-19 10:52 |只看该作者
本帖最后由 pxf520 于 2011-08-19 10:56 编辑
不是说命令本身有错误, 而是远程终端如果延时, 或者断线的话, 批量的粘贴会导致命令执行异常.
bun 发表于 2011-08-15 21:59



    你说的这种情况是有,脚本里可以定义时间,有2个参数 ,1个是sleep,比如执行某个命令可能需要5秒钟以上,那么就sleep给它10秒好拉
另一个是Screen.WaitForStrings, 如crt.Screen.WaitForStrings("#" , ">" , 10)  等待提示符#或者>,超时时间10秒钟,没有10秒钟没等到就执行下一条命令
也可以死等。或退出,执行其他操作。看你了

论坛徽章:
7
寅虎
日期:2014-08-15 12:54:11狮子座
日期:2014-10-28 23:42:142015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:48:00IT运维版块每日发帖之星
日期:2015-08-04 06:20:00IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-10-10 06:20:00
10 [报告]
发表于 2011-08-19 13:34 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP