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

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命令即可

查询主机名

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

查看CPU使用率

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

只要是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即可,如图:

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

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

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

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

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

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

第一次运行freesshd如图

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

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

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

Users选项卡中点击“Add…”

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

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

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

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

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

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

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

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主机加入允许,如部分截图,没截图的步骤默认点击“下一步”:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

4.3脚本准备

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

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

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

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

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

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

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

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

 

4.4运行命令

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

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

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

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

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

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

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

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

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

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

5.   脚本下载地址

  

 


网页标题:shell实现批量在多台windows服务器上执行同一命令并获取返回结果
网页路径:http://bzwzjz.com/article/ppiscs.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 网站建设方案 网站设计制作报价 成都网站建设 成都响应式网站建设 LED网站设计方案 高端网站设计推广 网站建设公司 成都网站建设 营销网站建设 温江网站设计 移动网站建设 达州网站设计 重庆电商网站建设 响应式网站设计 成都网站建设 教育网站设计方案 成都商城网站建设 成都网站设计 成都网站建设公司 成都网站建设公司 成都定制网站建设 重庆网站建设