Python使用paramiko进行远程交互

该博客介绍了如何使用Python的paramiko库进行远程服务器的连接和负载监测。通过创建线程池,实现并行连接多个服务器,获取每个服务器的`uptime`命令输出,计算平均负载,并按负载值排序显示结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import sys, getopt
import paramiko,socket
import Queue
import threading
import time
import operator
import re
from bcolors import bcolors


servers = open("").readlines()
servers = [s.strip() for s in servers]
validServerNum = len(servers)
sevnumLock = threading.Lock()

serverQueue = Queue.Queue()
serverLock = threading.Lock()

loadSum = {}
loadLock = threading.Lock()

optargs = sys.argv[1:]
paramiko.util.log_to_file('paramiko.log')
try:
    opts, args = getopt.getopt(optargs, "s:n:", ["sample=", "number="])
except getopt.GetoptError as err:
    sys.stderr.write("[ERROR] Invalid Syntax\n")
    sys.exit(1)


for opt, arg in  opts:
    if opt in ("-s", "--sample="):
        stimes = int(arg)
    elif opt in ("-n", "--number="):
        number = int(arg)


if not locals().has_key("stimes"):
    stimes = 3

if not locals().has_key("number"):
    number = len(servers)
        

class ThreadSniffer(threading.Thread):
    def __init__(self, queue, threadID, stimes, loadsum):
        threading.Thread.__init__(self)
        self.queue = queue
        self.ssh = paramiko.SSHClient()
        self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        self.id = threadID
        se
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值