安全矩阵

 找回密码
 立即注册
搜索
查看: 2259|回复: 0

如何批量在多台服务器上执行命令

[复制链接]

991

主题

1063

帖子

4315

积分

论坛元老

Rank: 8Rank: 8

积分
4315
发表于 2021-3-8 22:04:28 | 显示全部楼层 |阅读模式
原文链接:如何批量在多台服务器上执行命令

在一些场景里,我们可能需要同时在多台服务器上执行命令,如果一台台登录服务器执行嘛,这效率未免太低了。
有没有什么比较简单的方式,可以实现批量在多台服务器上执行命令呢。

场景1:MSF批量执行命令
从攻击者的角度来说,通过MSF获取到了多个session,如何批量在这些服务器上执行命令?
批量执行meterpreter命令
  1. session -C “命令”
复制代码
批量执行cmd命令
  1. session -c “命令”
复制代码




场景2:Windows服务器批量执行命令
在Windows中有很多种方式可以实现横向移动,通过系统自带命令或工具可以实现。但如果我们需要在多台服务器上执行命令,有没有一种比较简洁的方式?
PsExec一行命令就可以实现:
  1. PsExec.exe @file -u administrator -p  xxxx  -s -i -c 1.bat
复制代码

如上,PsExec将在file文件中列出的每台计算机上执行1.bat的内容。
场景3:Linux服务器批量执行命令
在Linux自动化运维里,有很多类似的工具,可以实现批量命令执行,如Ansible、SaltStack、Fabric、Puppet、Chef等。
这里介绍两种简单的方式,通过编写shell/python脚本快速实现批量命令执行。
(1)使用expect批量自动登录服务器并执行命令
  1. #!/bin/bash
  2. cat iplist|while read line #iplist文件中存放了IP地址和密码,每行格式为“IP地址 密码”
  3. do
  4.     a=($line)                    
  5.     /usr/bin/expect <<EOF      
  6.     spawn ssh root@${a[0]}     
  7.     expect {
  8.     "*yes/no" { send "yes\r"; exp_continue}
  9.     "*password:" { send "${a[1]}\r" }
  10.     }
  11.     expect "#"
  12.     send "whoami\r"
  13.     send "ip add\r"               
  14.     send "exit\r"           
  15.     expect eof
  16.     EOF
  17. done
复制代码



(2)使用Fabric工具实现批量命令执行
Fabric是一个使用python编写的自动化运维工具,我们可以通过这个工具来编写脚本实现很多功能。
  1. from fabric.api import *

  2. hosts=['10.1.1.221','10.1.1.132']
  3. env.user='root'
  4. env.password = 'abc123!'
  5. def host_type():
  6.     run('uname -r')
  7.     sudo("cd /tmp;touch 1.txt")
  8.     run('ls /tmp')

  9. for host in hosts:
  10.     env.host_string = host
  11.     try:
  12.         host_type()
  13.     except:
  14.         pass
复制代码









回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-29 00:35 , Processed in 0.013150 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

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