Python通过paramiko批量远程主机执行命令

更新时间:2023-12-09 21:22:39 阅读: 评论:0

2023年12月9日发(作者:刘邦)

-

Python通过paramiko批量远程主机执行命令

Python通过paramiko批量远程主机执行命令

一、前言

在日常运维的过程中,经常需要登录主机去执行一些命令,有时候需要登录一批主机执行相同的命,手动登录执行的化效率太慢, 所以可

以通过Python的paramiko模块批量执行,本篇文章基于python2.7。

二、同步执行

根据ip列表按顺序执行,缺点是如果命令耗时长,主机很多的话,执行效率较慢

# -*- encoding: utf-8 -*-

import paramiko

import traceback

def ssh(sys_ip, urname, password, cmds):

try:

# 创建ssh客户端

client = ent()

# 第一次ssh远程时会提示输入yes或者no

_missing_host_key_policy(dPolicy())

# 密码方式远程连接

t(sys_ip, 22, urname=urname, password=password, timeout=5)

# 互信方式远程连接

# key_file = _private_key_file("/root/.ssh/id_rsa")

# t(sys_ip, 22, urname=urname, pkey=key_file, timeout=20)

# 执行命令

stdin, stdout, stderr = _command(cmds)

# 获取命令执行结果,返回的数据是一个list

result = nes()

if len(result)>0:

return sys_ip + ":" + str(result[0])

el:

return sys_ip + ":" + "none"

except Exception, e:

print sys_ip+" error:"+str(e)

print _exc()

finally:

()

if __name__ == "__main__":

ips='''10.198.1.1

10.198.1.2

10.198.1.3

10.198.1.4

10.198.1.5

10.198.1.6

10.198.1.7

10.198.1.8

10.198.1.9

'''

#根据n分割ip

ip_list = ("n")

urname = "test"#主机用户名

password = "test"#主机密码

cmds = "pwd"#需要执行的命令

for ip in ip_list:

ssh(ip, urname, password, cmds)

二、异步执行

同步执行如果机器太多耗时长,效率就比较低,就可以使用异步方法同时执行,缺点是如果同时执行太多程序会有问题,所以加了sleep。

# -*- encoding: utf-8 -*-

import time

import paramiko

import traceback

from threading import Thread

def async(f): def wrapper(*args, **kwargs):

thr = Thread(target=f, args=args, kwargs=kwargs)

()

return wrapper

@async

def ssh(sys_ip, urname, password, cmds):

try:

# 创建ssh客户端

client = ent()

# 第一次ssh远程时会提示输入yes或者no

_missing_host_key_policy(dPolicy())

# 密码方式远程连接

t(sys_ip, 22, urname=urname, password=password, timeout=5)

# 互信方式远程连接

# key_file = _private_key_file("/root/.ssh/id_rsa")

# t(sys_ip, 22, urname=urname, pkey=key_file, timeout=20)

# 执行命令

stdin, stdout, stderr = _command(cmds,timeout=30)

# 获取命令执行结果,返回的数据是一个list

result = nes()

if len(result)>0:

print sys_ip + ":" + str(result[0])

el:

print sys_ip + ":" + "none"+"n"

except Exception, e:

print sys_ip+" error:"+str(e)+"n"

print _exc()

finally:

()

if __name__ == "__main__":

ips='''10.198.1.1

10.198.1.2

10.198.1.3

10.198.1.4

10.198.1.5

10.198.1.6

10.198.1.7

10.198.1.8

10.198.1.9

'''

#根据n分割ip

ip_list = ("n")

urname = "test"#主机用户名

password = "test"#主机密码

cmds = "pwd"#需要执行的命令

while (True):

ipl = ip_list[0:5]#每次拿五个

for ip in ipl:

ssh(ip, urname, password, cmds)

(3)

del ip_list[0:5]#删除5个

if len(ip_list) == 0: break#如果没了退出

-

Python通过paramiko批量远程主机执行命令

本文发布于:2023-12-09 21:22:39,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/1702128159241127.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:Python通过paramiko批量远程主机执行命令.doc

本文 PDF 下载地址:Python通过paramiko批量远程主机执行命令.pdf

标签:执行   远程   命令   需要   结果   连接
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|