设为首页 收藏本站
查看: 713|回复: 0

如何从windows平台自动连接到Linux/Mac机运行shell脚本?

[复制链接]

尚未签到

发表于 2018-8-26 11:35:02 | 显示全部楼层 |阅读模式
  不算什么新知识了,但是对于像我这样的小白来说,如果一早就能找到一篇这样从实战中总结出来的心得,就不会今天忙得只喝两杯水了(好吧,胆大心细脸皮厚是我的人生座右铭╭(╯^╰)╮)
  背景:
  某项目要求从性能测试工具LoadRunner中模拟并发用户调用位于一台mac虚拟机上的shell脚本。
  putty 批量关机  http://alwaysyunwei.blog.51cto.com/3224143/1223455/
  方法一:Plink windows bat(通用方法)
  这个方法的原理是通过windows上免费的OpenSSH工具Putty带的plink工具实现远程登录服务器并自动运行shell脚本。
  步骤1:下载plink.exe & putty.exe值本地目录,如d:\Proram Files\plink.exe。这两个软件都是免安装版的。
  步骤2:将需要运行的shell脚本放到本地目录。如c:\test.sh
  步骤3:创建一个tet.bat文件,并在其中写入如下命令:
  =此方法本人测试没通,使用putty实现的
  @echo off
  d:
  cd Program Files
  plink -l [userName] -pw [password] -m c:\test.sh [ServerName or IP]
  exit
  保存后双击运行即可。在这里要注意的是因为我的plink.exe放在了D盘的program files这个文件夹下,也就是对应上面脚本的第二行和第三行。实际使用中需要换成当前放置plink.exe的目录。还有一点特别要注意的是想要运行的shell脚本是要放到你本地的,我一开始以为是放到server端,而且看到网上一些帖子也写的是server端,事实证明运行是通不过的,所以这里也需要注意。
  在运行时,命令行会窗口弹出停一会,然后自动关闭。如果想检查test.sh里所写的是不是真的被运行了,建议在test.sh里加入一些debug的输出语句,把内容输出到某个文件,然后就可以通过Putty或者其他ssh client访问server并查看这个output文件了。
  还需要说明的一点是在mac机的system preference/sharing配置里需要把remote logon勾选上,不然ssh连接的建立会失败。(这个我纠结了,最后还是Frank找到的solution~)
  至于在LoadRunner中调用test.bat这个批处理文件就比较简单了,使用system()这个函数就可以了。perl或者shell脚本的调用同理。
  PUTTY方法:
  下载putty.exe (绿色版)
  bat 如下
  @echo off
  @color 0A
  set path=%cd%
  cd %path%
  "%path%/putty.exe" -ssh -pw thwltomcat   -m  "%path%/restart.txt" tomcat@192.168.0.132
  pause
  ==附送重启脚本
  @echo off
  @color 0A
  set path=%cd%
  cd %path%
  :input
  @echo 0.101 ━━━━四川重庆API服务器━━━━
  @echo 0.103 ━━━━四川重庆DAO服务器━━━━
  @echo 0.130 ━━━━数据平台,四员联动服务器━━━━
  @echo 0.131 ━━━━SAAS-API服务器━━━━
  @echo 0.132 ━━━━SAAS-DAO服务器━━━━
  @echo 0.180 ━━━━快消品服务器━━━━
  set/p floor=......请输入需要重启的应用的服务器(如0.101、0.103、请输入101、103):
  if %floor% neq  101 (
  if %floor% neq  103 (
  if %floor% neq 130 (
  if %floor% neq 131 (
  if %floor% neq 132 (
  if %floor% neq 180 (
  if %floor% neq 5 (
  if %floor% neq 9 (
  if %floor% neq 10 (
  if %floor% neq 11 (
  if %floor% neq 12 (
  if %floor% neq 13 (
  if %floor% neq 14 (
  if %floor% neq 15 (
  if %floor% neq 16 (
  echo.
  echo 请检查您输入的服务器是否存在
  goto :input
  )
  )
  )
  )
  )
  )
  )
  )
  )
  )
  )
  )
  )
  )
  )
  if %floor%== 101 (
  @echo 选择101,正在重启四川重庆API应用
  "%path%/putty.exe" -ssh -pw thwltomcat   -m  "%path%/restart.txt" tomcat@0.130
  @echo 重启四川重庆API应用结束........ 0.130
  goto :end 0.130
  ) 0.130
  if %floor%== 103 ( 0.130
  @echo 选择103,正在重启四川重庆DAO应用 0.130
  "%path%/putty.exe" -ssh -pw thwltomcat   -m  "%path%/restart.txt" tomcat@0.130
  @echo 重启四川重庆DAO应用结束........ 0.130
  goto :end 0.130
  ) 0.130
  if %floor%== 130 ( 0.130
  @echo 选择130,正在重启数据平台四员联动应用 0.130
  "%path%/putty.exe" -ssh -pw thwltomcat   -m  "%path%/restart.txt" tomcat@0.130
  @echo 重启数据平台四员联动应用结束........ 0.130
  goto :end 0.130
  ) 0.130
  if %floor%== 131 ( 0.130
  @echo 选择131,正在重启SAAS-API应用 0.130
  "%path%/putty.exe" -ssh -pw thwltomcat   -m  "%path%/restart.txt" tomcat@0.130
  @echo 重启SAAS-API应用结束........ 0.130
  goto :end 0.130
  ) 0.130
  if %floor%== 132 ( 0.130
  @echo 选择132,正在重启SAAS-DAO应用 0.130
  "%path%/putty.exe" -ssh -pw thwltomcat   -m  "%path%/restart.txt" tomcat@0.130
  @echo 重启SAAS-DAO应用结束........ 0.130
  goto :end 0.130
  ) 0.130
  if %floor%== 180 ( 0.130
  @echo 选择180,正在重启快消品应用 0.130
  "%path%/putty.exe" -ssh -pw thwltomcat   -m  "%path%/restart.txt" tomcat@0.130
  @echo 重启快消品应用结束........
  goto :end
  )
  )
  :end
  @echo 重启Tomcat服务结束━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  pause
  方法二:LR自带的RTE协议录制
  这个方法的原理是采用LoadRunner自带的RTE(Remote Terminal Emulation)协议直接录制用户建立SSH连接和activity的过程并转化为LR脚本。步骤如下:
  步骤1:修改recording options.(以下仅针对录制Linux server)
  1) 取消所有与IBM相关的勾选
  2)选择Session type=Telnet,端口=22,terminal type=SSH, 然后点击connect按钮进行录制。
  步骤2:修改和调试脚本。
  步骤3:在controller中运行脚本。
  前面两步都没什么问题,但是步骤3就碰到了各种拦路虎。首先是不能启用ip欺骗,否则会出现你所选择的协议不支持按线程运行的提示;取消ip欺骗后运行,发现generator CPU资源很快就被mdrv.exe进程占满了,100%后直接死在那了。即使运行单用户,mdrv.exe也会占50%左右的CPU。我看到网上有些同行用RTE协议在单台机器上模拟过300左右的用户,不知道为什么我录制的ssh登录 echo命令执行 exit会这么占资源..在群里问了也没人知道,可能这个协议在公司里用得不是那么多吧,据说银行业比较会用到。还有最后一个问题是用户跑完第一次迭代就等在那里,不再继续跑下一个迭代,也不退出系统。Vugen里多迭代完全无障碍啊,也检查过controller里pacing什么的都没问题,挠破头也没想出来是为什么,抓狂啊!
  目前今天的成果就是这样了,最后可行的还是方案一。方案二后续可以继续研究,目前看来IT的项目中需要用到http之外的协议并且思科买了license的机会真的好难得啊...


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-556785-1-1.html 上篇帖子: shell脚本每天自动备份mysql数据库 下篇帖子: Linux中执行shell脚本的4种方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表