1.    需求

在对windows服务器的运维当中,如果要查看当前的主机名、资源使用、软件安装情况等,大家是怎么操作呢,是登进去鼠标挨着点击查看,还是通过命令呢?貌似命令的方法比较专业一点。但是,如果要查看50台、100台甚至更多服务器的这些信息,好像就不这么简单了。

有没有想过,敲一条命令,十几秒钟,就可以查看多台windows服务器的主机名、资源使用、软件安装情况等信息呢;或者还是通过一条命令,就可以启动或者停止N台windows服务器的系统服务、重启\关机、修改注册表等等,你能想到的大部分操作,在经过前期简单部署后,以后只通过一条命令,就可以实现同时对多台windows服务器的管理。下面就把这个设想实现。

2.    实现原理及展示

2.1原理

通过我在shell下写的脚本程序,利用Python中的paramiko模块,通过ssh协议验证windows的登录信息,然后调用windows的PowerShell来实现命令的执行。目前测试过windows server2008R2和 2012R2 服务器,可以正常执行。

2.2展示2个简单例子:执行脚本后,输入windows的PowerShell命令即可

查询主机名

查看CPU使用率

只要是PowerShell支持的,都可以批量执行了。我这里只是2台测试,当然100台也一样出结果。

3.    准备

3.1   一台Centos系统:   我使用的虚拟机centos6.6 用来执行脚本,然后执行windows命令。需要有python(一般已经安装了)

3.2   软件:freesshd        官网上下载即可,主要是在被管理的windows服务器上安装,实现ssh验证

3.3  软件:SecureCRT或者Xshell   用来连接Centos虚拟机

3.4  可选软件:WinSCP     如果需要分发文件功能的话,windows服务器上还要需要安装此软件

4.    实现步骤及示例

4.1   各windows服务器安装freesshd和winscp(winscp可选):  测试中我使用了2台windows虚拟机

Winscp和freesshd的安装直接默认下一步即可;

Winscp安装完成后先在powershell里面执行命令,缓存主机密钥

cd 'C:\Program Files (x86)\WinSCP\' ; ./winscp.exe /console /command 'option batch continue' 'option confirm off' 'open sftp://root:root密码@centos主机IP:centos主机ssh端口

执行后按Y即可,如图:

freesshd安装完成后需要稍作设置,如图:

第一次运行freesshd如图

然后点击右下角的freesshd图标进行相关设置,SSH选项卡中,将Command shell设置成C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe如图:

Users选项卡中点击“Add…”

在弹出的窗口加入windows服务器的管理员账号,然后将Shell打上√ 如图:

最后可选择是否在Automatic updates里面关闭自动更新,我一般选择关闭

设置完成后,在开始-运行 里面键入”services.msc”将freesshd服务重启一下

Sshd在windows服务器上设置完成,可以通过telnet ssh端口的方式测试到windows的sshd服务是否正常,如telnet X.X.X.X 22

4.2   安全设置(可选):各windows服务器上配置ipsec只允许我们的centos服务器连接sshd的22端口,这样就避免了其他未授权的ssh连接,建议设置(不设置或者会设置的可跳过此步骤下列内容)。

开始-运行 里面键入”gpedit.msc” 进入 Windows设置-安全设置-IP安全策略,在本地计算机  创建策略即可:

先设置允许的主机,这里我们需要把centos主机加入允许,如部分截图,没截图的步骤默认点击“下一步”:

完成后“确定”即可,然后开始建立一条拒绝任何地址(源地址:任何IP地址)到windows本机地址sshd端口的策略,如图:

确定后安全设置完成,然后分配策略使其生效,如图:

如果启用了防火墙的话,还需要在防火墙里面设置允许freesshd程序通过防火墙,设置完成后可以在centos服务器上telnet X.X.X.X(windows服务器IP) 22 的方式来测试连接是否OK,如图测试正常:

4.3脚本准备

1)在本文后面下载shell脚本

2)在centos服务器中上传脚本,命令rz然后选择脚本上传即可(没有rz命令的通过yum install -y lrzsz命令安装),如图:

3)vim run_win_same_cmd.sh命令修改脚本,将后续要管理的各个服务器IP、用户名、密码加入其中,如图格式加入,然后保存即可。

注意ip,user,pwd的顺序是一一对应的,对应错误的话是无法通过验证的:

也可在windows中修改好了再上传到centos服务器,但是要注意最好运行下dos2unix命令转换一下。

4.4运行命令

1)在centos服务器中执行sh run_win_same_cmd.sh即可(注意脚本路径正确),如图,运行后提示选择,我们选择 1.批量运行windows命令 ,回车后提示输入windows命令,这里我们用一个简单的命令hostname来查看,如图:

再来个复杂点的命令(当然这种有点长的命令直接复制黏贴过来就行了),我们需要查看N台服务器各自的磁盘剩余空间:

不熟悉powershell命令的话可以参考下面链接里面一些常用的Powershell运维命令,当然,更多的强大命令就根据自己需要去发现了。

链接:Windows PowerShell运维人员常用命令收集整理

2)如果需要分发文件或者软件的话,可以在运行脚本后,选择2.批量分发文件到windows ,可以实现把文件批量分发到各个windows服务器,如图:

在windows服务器上查看文件已经复制过来了

5.    脚本下载地址

转载于:https://blog.51cto.com/huandidi/2295850

shell实现批量在多台windows服务器上执行同一命令并获取返回结果相关推荐

  1. java在远程服务器上执行终端命令并获得返回结果

    最近经常会用到java到指定机器上执行终端命令并且获得返回结果,所以借此机会来记录一下 1.首先通过ip,用户名,密码链接到远程服务器上,然后执行终端命令 userName:主机的用户名,passwo ...

  2. mysql构建器 批量插入_mysqlbatch: mysql的批量执行工具,可以在多台mysql服务器上执行指定的SQL语句,支持sharding,比如在sharding之后的表上批量创建索引...

    MySQL Sharding 批量执行工具 主要功能 批量建库.批量建表.批量执行SQL脚本(创建索引.修改表结构).Sharding使用情况分析 使用方法 python ./mysqlbatch.p ...

  3. Pssh -- 使用单个终端在多个远程Linux服务器上执行命令

    OpenSSH毫无疑问是可用于Linux的使用最广泛和强大工具之一,它允许你通过一个shell安全地连接到远程Linux系统,并且允许你与远程系统之间来回传输文件. 但OpenSSH的最大缺点是你不同 ...

  4. python 管理windows客户端_在远程windows客户端上执行python脚本

    我正在使用paramiko在远程windows服务器上执行命令.我能够执行dir之类的命令并提取输出,但是执行python脚本似乎失败了.不会引发错误消息.在 下面是我的代码片段:def ssh_co ...

  5. 如何高效的管理1000台Windows服务器

    论运维人员如何高效的管理1000台Windows服务器 几年前运维工作量巨大,部门运维人员每天都需要管理上千台的服务器,并不定时的检查及处理不同服务器的问题,每次打开都要输入密码(WIN保存远程密码形 ...

  6. 如何在20分钟内批量部署20台ESXi服务器?

    如何在20分钟内批量部署20台ESXi服务器? https://mp.weixin.qq.com/s?__biz=MjM5NTk0MTM1Mw==&mid=2650642256&idx ...

  7. 使用VMware搭建一台Windows服务器,并搭建Web、DNS解析网站

    使用VMware搭建一台Windows服务器,并搭建web.DNS解析网站 使用VMware搭建一台Windows服务器,并搭建web.DNS解析网站 一.系统的安装 二.系统配置 三.服务器配置 w ...

  8. 在 Linux 或者 Windows 服务器上安装部署 MATLAB

    在 Linux 或者 Windows 服务器上安装部署 MATLAB 目标 在服务器上安装 MATLAB,以供实验室内多个用户远程连接使用.特别是要完成 MATLAB 的激活. 安装方式 这里我们采用 ...

  9. Kettle-开源的ETL工具集-实现SqlServer到Mysql表的数据同步并部署在Windows服务器上

    场景 kettle 中文名称叫水壶,该项目的主程序员MATT希望把各种数据放到一个壶里,然后 以一种指定的格式流出.是一款由纯Java编写的ETL工具,绿色无需安装,数据抽取高效稳定(数据迁移工具). ...

最新文章

  1. ios开发学习-手势交互(Gesture)效果源码分享
  2. mySQL优化 my.ini 配置说明
  3. java核心api_java核心API
  4. wince -- telnet登陆密码的取消
  5. 存钱吃利息存邮政储蓄好还是农业银行好?
  6. jzoj1370-飞船【RMQ初见】
  7. React开发(230):ant design table固定表头
  8. vue验证整数_vue input 输入校验字母数字组合且长度小于30的实现代码
  9. vs 2017 无法安装任何 nuget package,提示“库没有注册。。。”
  10. 使用javascript来实现最原始的ajax操作
  11. java请求报错(原因:CORS 头缺少 ‘Access-Control-Allow-Origin‘)
  12. JavaScript中各存在性函数
  13. NAACL2021 | 苏大阿里提出:一种统一的基于跨度的意见挖掘方法
  14. POJ 3378 树状数组+DP+离散化+高精度
  15. Android 经常使用设计模式(一)
  16. Enovia文件协作服务器安装,NX与Enovia集成安装配置手册_jimmy.docx
  17. 在java中如何做身份证号码校验
  18. 最后一周 | 微生物组-宏基因组分析(线上/线下同时开课,2021.1)
  19. thumbnails 变黑_解决java压缩图片透明背景变黑色的问题
  20. Notepad++ 7.6.4 x64安装包

热门文章

  1. 订单少落地难:被误解的人工智能
  2. 华为视觉研究路线图:三大挑战,六项计划
  3. AI芯片的过去、现在与未来
  4. 国拨经费约31.48亿!科技部发布科技创新2030 —“脑科学与类脑研究”重大项目2021年度项目申报指南...
  5. Hinton口中破解宇宙终极秘密的GPT-3厉害在哪?这有篇涂鸦详解
  6. Nature展示迄今为止最详细的“人脑零部件清单”
  7. AI的阿基里斯之踵:模糊性
  8. 机器学习近年来之怪现象
  9. 基于互联网大脑架构的阿里巴巴未来趋势分析【系列2】
  10. 福布斯:2018年将改变世界的九股科技大趋势