我的编程空间,编程开发者的网络收藏夹
学习永远不晚

批量管理python脚本

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

批量管理python脚本

新出炉的脚本, 有错的地方还望指出,谢谢。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#  Syscloud Operation platform.py

#  Copyright 2013 allan <allan@ALLAN-PC>

#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.

#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.

#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
#  MA 02110-1301, USA.

#  QQ:286575330
import paramiko
import sys
import Queue
import threading
import getopt
class webmonitor:
    def __init__(self):
        try:
            self.pkey_file=‘这是密钥的路径’
            self.known_host = '/root/.ssh/known_hosts'
            self.key=paramiko.RSAKey.from_private_key_file(self.pkey_file, password=‘这里是密钥的密码’)
        except:
            print 'No such file or directory: \'/root/.ssh/jumper_rsa\''
    def help(self):
        return '''
              -h,--help            帮助页面
              -c,--command        执行的命令
              -H,--host            主机IP
              -f, --file        指定文件
              -S, --SENDFILE    传输文件模式
              -C, --COMMAND        执行命令模式
              -L, --localpath    本地文件路径
              -R, --removepath    远程服务器路径
      e.g.
          单台执行命令格式: -C -H “IP地址” -c “命令”
          批量执行命令格式: -C -f “IP地址文件” -c “命令”
          单台传送文件: -S -H “IP地址” -L "本地文件路径" -R “远程服务器文件路径”
          批量传送文件: -S -f "IP地址文件" -L “本地文件路径” -R “远程文件路径”
      '''
    def ssh(self,hostname,port,username, cmd):#ssh 远程执行命令
        ssh = paramiko.SSHClient()
        ssh.load_system_host_keys(self.known_host)
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(hostname, port, username, password='这是远程服务器密码', pkey=self.key, allow_agent=True, look_for_keys=True)
        stdin, stdout, stderr = ssh.exec_command(cmd)
        if stderr.read() != 0:
            print '%s%s\n[OK]%s\n' % (stderr.read(),stdout.read(),hostname)
            print '========================================================================='
        else:
            print "\033[1;31;40m[ERROR]%s\033[0m" % hostname
            print '========================================================================='
        ssh.close()
    def sftp(self, hostname, port,username,localpath, remotepath):#SFTP 传输文件
        ssh = paramiko.Transport((hostname,port))
        ssh.connect(username=username, pkey=self.key)
        sftp = paramiko.SFTPClient.from_transport(ssh)
        sftp.put(localpath,remotepath)
        sftp.close()
        ssh.close()
        print '========================================================================='
        print "OK %s" % hostname
        return 0
def isset(v):#判断定义的是否为变量
    try:
        type (eval(v))
    except:
        return 0
    else:
        return 1
if __name__ == '__main__':
    try:
        opts, args = getopt.getopt(sys.argv[1:], "L:R:CSH:c:f:h", ["localpath","remotepath","COMMAND","SENDFILE","host","command","file",'help'])
        if sys.argv[1] == "-S":
            for o, value in opts:
                if o in ("-S","--SENDFILE"):
                    print "MODE: SENDFILE"
                elif o in ("-h","--help"):
                    print webmonitor().help()
                elif o in ("-H","--host"):
                    host = value
                elif o in ("-f", "--file"):
                    filein = value
                elif o in ("-c","--command"):
                    cmd = value
                elif o in ("-R","--remotepath"):
                    rpath = value
                elif o in ("-L","--localpath"):
                    lpath = value
                if isset('host') and isset('lpath') and isset('rpath'):
                    webmonitor().sftp(host, 22, "root", lpath, rpath)
                    print '========================================================================='
                elif isset('filein') and isset('lpath') and isset('rpath'):
                    threads = []
                    myqueue = Queue.Queue(maxsize = 0)
                    f = open(filein, "r")
                    for ip in f:
                        if ip[0] == '#':
                            break
                        if len(ip) == 0:
                            break
                        myqueue.put(ip)
                    f.close()
                    for x in xrange(0,myqueue.qsize()):
                        if myqueue.empty():
                            break
                        mutex = threading.Lock()
                        mutex.acquire()
                        threads.append(threading.Thread(target=webmonitor().sftp, args=(myqueue.get(),22,"root", lpath, rpath)))
                        mutex.release()
                    for t in threads:
                        t.start()
                    for t in threads:
                        t.join()
                    print '========================================================================='
        elif sys.argv[1] == "-C":#执行命令模式
            for o, value in opts:
                if o in ("-C","--COMMAND"):
                    print "MODE: COMMAND"
                elif o in ("-H","--host"):
                    host = value
                elif o in ("-f","--file"):
                    filein = value
                elif o in ("-c","--command"):
                    cmd = value
                if isset('host') and isset('cmd'):#单台服务器执行命令
                    webmonitor().ssh(host, 22, "root", cmd)
                elif isset('filein') and isset('cmd'):#多台服务器批量执行命令
                    threads = []
                    myqueue = Queue.Queue(maxsize = 0)
                    f = open(filein, "r")
                    for ip in f:
                        if ip[0] == '#':
                            break
                        if len(ip) == 0:
                            break
                        myqueue.put(ip)
                    f.close()
                    for x in xrange(0,myqueue.qsize()):
                        if myqueue.empty():#判断队列是否为空
                            break
                        mutex = threading.Lock()
                        mutex.acquire()
                        threads.append(threading.Thread(target=webmonitor().ssh, args=(myqueue.get(),22,"root", cmd)))
                        mutex.release()
                    for t in threads:
                        t.start()
                    for t in threads:
                        t.join()
        else:
            print webmonitor().help()
    except:
        print webmonitor().help()

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

批量管理python脚本

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

批量管理python脚本

新出炉的脚本, 有错的地方还望指出,谢谢。 #!/usr/bin/env python # -*- coding: utf-8 -*- # #  Syscloud Operation platform.py #
2023-01-31

python 批量压缩图片的脚本

目录简介需要 Needs用法 Usage代码实现效果另外一种图片压缩实现方式简介 用Python批量压缩图片,把文件夹或图片直接拖入即可 需要 Needs Python 3 Pillow (用pip install pillow来安装即可)
2022-06-02

批量获取及验证HTTP代理的Python脚本

HTTP暴力破解、撞库,有一些惯用的技巧,比如: 1. 在扫号人人网时,我遇到单个账号错误两次,强制要求输入验证码,而对方并未实施IP策略。 我采用维护10万(用户名,密码) 队列的方式来绕过验证码。具体的做法是,当某个用户名、密码组合遇到
2022-06-04

sqoop脚本批量生成

通过all_tab_columnss字典表生成hive的建表语句create or replace view create_sql as--通过all_tab_columnss字典表生成hive的建表语句select owner,table
2023-01-31

Python批量管理主机(paramik

paramikoparamiko模块是基于Python实现的SSH远程安全连接,用于SSH远程执行命令、文件传输等功能。默认Python没有,需要手动安装:pip install paramiko如安装失败,可以尝试yum安装:yum in
2023-01-31

python实现主机批量管理

在日常的运维工作中批量对主机的是很常见的,市面上也有许多主机批量管理的软件,但有时候这些软件并不能完全的满足我们的需求。python中刚好提供了关于主机批量管理的模块,今天就让我们来看看如何利用python实现主机批量管理python提供主
2023-01-31

python脚本实现Redis未授权批量提权

前言 本文主要给大家介绍了关于redis未授权批量提权的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 安装依赖sudo easy_install redis使用redis python hackredis.py
2022-06-04

批量远程桌面管理 批量管理服务器

批量远程桌面管理 批量管理服务器远程桌面是微软公司为了便于网络管理员管理维护服务器推出的一项服务。从windows 2000 server版本开始引入,网络管理员时候远程桌面连接器连接到网络任意一台开启了远程桌面控制功能的计算机上,就像是自
2023-06-03

linux服务器批量管理工具 批量vps管理

linux服务器批量管理工具 批量vps管理远程桌面是微软公司为了便于网络管理员管理维护服务器推出的一项服务。从windows 2000 server版本开始引入,网络管理员时候远程桌面连接器连接到网络任意一台开启了远程桌面控制功能的计算机
2023-06-03

如何自动生成批量执行SQL脚本的批处理

这篇文章主要介绍如何自动生成批量执行SQL脚本的批处理,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!场景: DBA那边给我导出了所有的存储、函数等等对象的创建脚本,有上千个文件. 现在需要将这些对象创建脚本导入到另外
2023-06-08

利用Python脚本管理Windows服

Windows服务常用的功能就是启动服务,关闭服务,重启服务和查询服务运行状态,其中查询服务运行状态是其他三种操作的基础。本文中提到的使用Python脚本管理Windows服务实际上是调用win32serviceutil模块,此模块来自py
2023-01-31

python批量添加zabbix Screens的两个脚本分享

前言 在最初搭建公司监控系统的时候,最头疼的是需要把同类项目组的相同图形添加到一个Screens,由于只能一个一个的添加,非常耗时耗经历。 下面分享两个脚本来解决这个头疼的问题。 1.将单个主机的所有图形添加到一个Screens 使用方法#
2022-06-04

python批量压缩图片的脚本代码分享

本篇文章和大家了解一下python批量压缩图片的脚本代码分享。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。简介用Python批量压缩图片,把文件夹或图片直接拖入即可需要 NeedsPython 3Pillow (用pip
2023-06-15

Java如何批量执行datax脚本

Java批量执行DataX脚本的方法包括:使用DataX命令行工具通过JavaAPI加载和执行脚本借助第三方工具(如ApacheAirflow、Luigi)以命令行工具批量执行为例,通过datax命令加上多个脚本文件,可并行执行多个脚本。优化脚本性能、单元测试和监控报警等措施有助于提升执行效率和可靠性。
Java如何批量执行datax脚本
2024-04-02

shell如何批量curl接口脚本

这篇文章主要介绍了shell如何批量curl接口脚本,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。最近,刚接一需求,如下: DBA会将一些服务规则的数据导出,然后一条条手动去
2023-06-09

Linux怎么批量执行redis脚本

要批量执行redis脚本,你可以使用redis-cli工具和Shell脚本来实现。以下是一个示例的Shell脚本,用于批量执行redis脚本:#!/bin/bash# 读取redis命令脚本文件列表script_files=("scr
2023-10-27

MySQL8 批量修改字符集脚本

目录1. 批量修改库字符集2. 批量修改表字符集3. 批量修改列字符集从低版本迁移到mysql 8后,可能由于字符集问题出现 Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) a
2023-03-24

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录