Python+paramiko基于配置文件的批量主机管理

一、Python和paramiko就不详细介绍了,简单介绍:

1)Python处理服务器批量任务有极高的便捷性

2)Paramiko是一个强大的python库,主要功能是远程管理主机

3)本文使用paramiko其中的SSHClient方法,借其远程访问



二、本脚本的功能点详细介绍:

1、使用paramiko库的SSHClient方法从而使用SSH的主机管理功能。

2、使用threading,python下的多线程库,进行多主机多线程管理,实现并发执行管理。

3、使用sys库的argv方法,使其python脚本在服务器下命令化

4、使用time库的clock方法计算命令执行所用的时间


三、脚本代码:



#!/usr/bin/env python
#coding=utf-8

import paramiko
import threading
from os import path
from sys import argv
from time import clock

#多线程锁
lock = threading.RLock()

#读取主机个数
def hostcount(FILE):
    j=1
    file = open(FILE,"r")
    for i in file:
        if i.endswith("\n"):
            j = j+1
    file.close()
    return j


#执行命令
def ssh2(ip,username,passwd,CMD):
    lock.acquire()
    try:
        ssh = paramiko.SSHClient()
        tiem_start = clock()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(ip,22,username,passwd,timeout=5)
        stdin,stdout,stderr = ssh.exec_command(CMD)
        out = stdout.read()
        err = stderr.read()
        time_end = clock()
        print '================ START ==================='
        print '[CONNECT SUCCEED] | IP = %s\n' % (ip)
        print out
        if err != " ":
            print err
        print '=========== END Time: %.2fs =============='%(time_end - tiem_start)
        ssh.close()
    except:
        print '================ START ==================='
        print '[CONNECT FALSE] IP = %s \n' %(ip)
        print '================= END ===================='

    lock.release()
def main(FILE,CMD):
    #cmd = "date"
    f = open(FILE,'r')
    j = hostcount(FILE)
    threads = j
    while True:
        t = f.readline()
        host = t.strip(",").split(",")
        if len(host) == 1:
            break
        ip = host[0]
        username = host[1]
        passwd = host[2]
        a = threading.Thread(target=ssh2,args=(ip,username,passwd,CMD))
        a.start()
    f.close()
    return 0

#功能测试
if __name__ == '__main__':
    try:
        if path.exists(argv[1]) == False:
            print "[ERROR] file not found. Please enter the correct file"
            exit(1)
        FILE = argv[1]
        CMD = argv[2]
        main (FILE, CMD)
    except:
        print "[ERROR] Please input command"
        print "Hello:"
        print "usage: "+argv[0]+" <hostname file> <command>"
        print "Rigorous host name file format."
        print "ip,username,password,(3 a ',')"
    #main("hosts.txt","date")

四、主机列表文件:

严格的格式(三个逗号隔开):主机名,用户名,密码,  


hostname,username,password,
hostname,
username,password,

脚本使用方法脚本看提示,脚本需要执行权限。






本脚本的功能点详细介绍:

1、使用paramiko库的SSHClient方法从而使用SSH的主机管理功能。

2、使用threading,python下的多线程库,进行多主机多线程管理,实现并发执行管理。

3、使用sys库的argv方法,使其python脚本在服务器下命令化

4、使用time库的clock方法计算命令执行所用的时间


脚本代码:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值