无2fa版本:


#!/usr/bin/python
# -*- coding: UTF-8 -*-
#换了一种方式登录
#每天早上九点到晚上十点执行,每半小时一次,每次20台,大概4天-5天可以执行完所有机器import json
import os
import sys
import time
import datetime
import paramiko as paramiko
import pickle
import requests
import logginglogging.basicConfig(level=logging.INFO,#控制台打印的日志级别filename='pam.log',filemode='a',##模式,有w和a,w就是写模式,每次都会重新写日志,覆盖之前的日志#a是追加模式,默认如果不写的话,就是追加模式format='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'#日志格式)
logger = logging.getLogger()
session = requests.session()def logon():url = "https://xxxx.com/PasswordVault/API/auth/Cyberark/Logon"data = {"username": "xxx", "password": "xxxxxx", }result = session.post(url, data=data)print(result.text)def get_accounts(offset, limit):url = "https://xxxx.com/PasswordVault/api/Accounts?&offset=%s&limit=%s" % (offset, limit)print(url)try:accounts = json.loads(session.get(url).text)["value"]except:print("cookies过期或密码错误,请重新运行代码。")os.remove("cookies")sys.exit()return accountsdef get_passwd(account_id):url = 'https://xxxx.com/PasswordVault/api/Accounts/%s/Password/Retrieve' % account_iddata = {'reason': "test", 'ActionType': "show", }ssh_key = session.post(url, data=data).text.strip('"')with open('id_rsa', 'w') as f:f.write(ssh_key)def ssh(account_ip, account_user):try:# 建立一个sshclient对象ssh = paramiko.SSHClient()# 允许将信任的主机自动加入到host_allow 列表,此方法必须放在connect方法的前面ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 指定本地的RSA私钥文件,如果建立密钥对时设置的有密码,password为设定的密码,如无不用指定password参数# pkey = paramiko.RSAKey.from_private_key_file('/home/super/.ssh/id_rsa', password='12345')pkey = paramiko.RSAKey.from_private_key_file('id_rsa')# 建立连接ssh.connect(hostname=account_ip,port=22,username=account_user,pkey=pkey)# 执行命令,可以写多句命令stdin, stdout, stderr = ssh.exec_command("hostname")# 结果放到stdout中,如果有错误将放到stderr中logger.info(stdout.read().decode())logger.info(stderr.read())print(stdout.read().decode())print(stderr.read())# 关闭连接ssh.close()except Exception as e:logger.info("失败:")logger.info(str(account_ip))print("失败")print(account_ip)print("\n")if __name__ == '__main__':n = 0if os.path.exists('cookies'):with open('cookies', 'rb') as f:session.cookies.update(pickle.load(f))else:logon()with open('cookies', 'wb') as f:pickle.dump(session.cookies, f)offset = input("offset:输入需要从第几个账号开始遍历:")limit = input("limit:输入返回多少个账号(最大1000):")accounts = get_accounts(offset, limit)# 范围时间d_time = datetime.datetime.strptime(str(datetime.datetime.now().date()) + '9:00', '%Y-%m-%d%H:%M')d_time1 = datetime.datetime.strptime(str(datetime.datetime.now().date()) + '22:00', '%Y-%m-%d%H:%M')for account in accounts:# 当前时间n_time = datetime.datetime.now()# 判断当前时间是否在范围时间内if n_time > d_time and n_time < d_time1:# 判断是执行时间内就开始执行account_id = account["id"]account_ip = account["address"]account_user = account["userName"]get_passwd(account_id)# 连接ssh,执行命令ssh(account_ip, account_user)logger.info('这是第' + str(n) + '台机器' + '\n')logger.info(account_id)n += 1if n % 1 == 0:# time.sleep(1800)time.sleep(3)else:time.sleep(300)

基于pam实现的批量执行命令工具-Cyberark相关推荐

  1. Go 版批量执行命令工具

    ansible 真的太慢了,而且依赖对端python环境,对于交换机,分流等基于ssh连接的网络设备就没办法了.用的最多的是批量执行命令和下发文件, 我们就借鉴ansible的执行方式,先准备yaml ...

  2. pssh远程批量执行命令

    Pssh pssh是python写的可以并发在多台机器上批量执行命令的工具,它的用法可以媲美ansible的一些简单用法,执行起来速度比ansible快它支持文件并行复制,远程命令执行,杀掉远程主机上 ...

  3. Scp远程批量执行命令

    一次拷贝多个文件或者目录 # scp root@192.168.9.142:/usr/local/src/cp_dir/*.php /usr/local/src/ //拷贝多个文件 # scp -r ...

  4. pssh批量执行命令

    Pssh pssh是python写的可以并发在多台机器上批量执行命令的工具,它的用法可以媲美ansible的一些简单用法,执行起来速度比ansible快它支持文件并行复制,远程命令执行,杀掉远程主机上 ...

  5. Spark-shell 脚本批量执行命令,命令行批量执行命令

    spark-shell 执行脚本,批量执行命令 #!/bin/bashsource /etc/profileexec spark-shell --name spark-sql-test --execu ...

  6. Python 实现远程服务器(ssh)批量执行命令

    paramiko 远程控制介绍 Python paramiko是一个相当好用的远程登录模块,采用ssh协议,可以实现linux服务器的ssh远程登录.首先来看一个简单的例子 import parami ...

  7. linux批量执行命令脚本,2.3-命令批量执行脚本

    命令批量执行脚本,同样需要两个脚本来实现:1 exe.expect 2 exe.sh 3 ip.list    IP列表 cat exe.expect #!/usr/bin/expect set ho ...

  8. python批量运行cmd_python 之多主机批量执行命令

    当我们有很多台linux服务器的时候,而每台服务器都需要做同一个操作,比如很多节点的集群环境下,要更改一个配置文件,哪怕只是一行,在传统情况下,也需要每台去单独操作. 最近也是有这样的需求,需要操作的 ...

  9. expect批量执行命令

    在跳板机上执行脚本,登录到远程机器分区格式化挂载命令 #/bin/bash passwd='engine' /usr/bin/expect << EOF set time 40 spawn ...

最新文章

  1. 分分钟玩转多进程编程
  2. 将 Shiro 作为应用的权限基础 五:密码的加密/解密在Spring中的应用
  3. VMWare虚拟机下为Ubuntu 12.04.1配置静态IP(NAT方式)
  4. 通过/proc/PID/status查看进程内存占用情况
  5. 【Numpy学习记录】np.cov详解
  6. vue脚手架vue数据交互_学习Vue:3分钟的交互式Vue JS教程
  7. 信息学奥赛一本通C++语言——1035:等差数列末项计算
  8. 3-3HDFS架构详解
  9. 【Get】用深度学习识别手写数字
  10. 自然语言处理——语言模型(一)
  11. 35、html制作QQ彩贝热销时装页面(注意:需要素材)
  12. 计算机信息专业致谢词,计算机专业毕业论文致谢词
  13. 樊登读书搞定读后感_樊登读书会听书《搞定》《高效人士的七个习惯》《人生效率手册》《搞定3》第四周学习感悟...
  14. 阿里云服务器租用收费标准(精准费用报价更新)
  15. (转发)RJ45水晶头网线的做法
  16. 职位名称: Java技术经理
  17. highChart导出PDF
  18. 这台计算机上没有安装驱动程序,电脑打印机显示没有安装驱动怎么办啊
  19. java字符串流与管道流
  20. 制作一个古诗词的html,徐汉峰笔迹2136.诗词高手制作出万能词汇表.

热门文章

  1. vba怎么快速填充序列号?
  2. 阿里云大数据ACA考点总结
  3. django问题研讨:由master=true引发的奇怪现象
  4. Linux之ARM(IMX6U)裸机汇编LED驱动实验--烧写bin文件到SD卡中并运行
  5. arduino智能浇花系统_智能自浇花系统
  6. 为什么剩余数不能相加_为什么花的钱剩下的相加不等于花去的数
  7. (javascript)(基础知识+实例) 15.JSON,对象克隆,正则表达式
  8. leetcode1108-1111、1114-1117
  9. 华为鸿蒙的科技话题作文800字,关于科技的话题作文3篇
  10. Java对PDF进行电子签章CA签名认证