python 与linux交互 paramiko 自动化运维 批量登录控制多台主机执行命令

简介: 批量操作服务器

#!/usr/bin/python3
import paramiko
client = paramiko.SSHClient()                                   #创建连接对象
client.set_missing_host_key_policy(paramiko.AutoAddPolicy) 
                                                                                #设置自动添加主机名及主机密钥到本地HostKeys对 象,不依赖load_system_host_key的配置。跳过yes 连接确认提示
try:
    client.connect(hostname='eisc.cn',port=22,username='root',password='eisc.cn') #connetc为连接 函数
    print('主机连接成功!')
except:
    print('主机连接失败,请确认输入信息!')
stdin,stdout,stderr = client.exec_command(
'''
ip a; echo "我是来自python控制系统的进程在操批量操作其它主机;查看ip信息: " 
echo "需要集成文件修改板块函数"
ls -al ; pwd
'''
)                                                                               #stdout为指令正确信息,stderr为指令异常信息
print(stdout.read().decode('utf-8'))   
print(stderr.read().decode('utf-8'))
#####################################################
#!/usr/bin/python3
import paramiko   
def SSHLinux(ip,port,username,password,num):       # 程序SSH连接函数,也是本程序核心方法
    a=[]                                                                                # 定义变量a 为一个列表变量
    b=[]
    c=[]
    d=[]
    for i in range(num):                                                # 变量 i 是次数, range() [reɪndʒ] 范围 函数;可创建一个整数列表;如 range(5)  等于 range(0,5) 生成0到5的自然数
        a.append('client' + str(i))                             # append [əˈpɛnd] 附加 , 在列表里附加元素; str() 函数将对象转化字符串。等同于循环储存字符串到列表变量a; 
        b.append('stdin' + str(i))
        c.append('stdout' + str(i))
        d.append('stderr' + str(i))
        a[i] = paramiko.SSHClient()                             # 创建num个连接对象
                                                                                # client2 = paramiko.SSHClient()
        a[i].set_missing_host_key_policy(paramiko.AutoAddPolicy)  
                                                                                # 添加num个主机名及主机密钥到本地HostKeys对象
                                                                                # client2.set_missing_host_key_policy(paramiko.AutoAddPolicy)
        try:
            a[i].connect(hostname=ip[i],port=port[i],username=username[i],password=password[i]) #num个连接
                                                                                # client2.connect(hostname=ip[1],port=port[1],username=username[1],password=password[1])
            print(f'主机{ip[i]}连接成功!')
        except:
            print(f'主机{ip[i]}连接失败,请确认输入信息!')
            exit()
    while True:                                                         # while True 条件为真 一直进行loop(死循环)
                                                                                # while true 循环中会加入break条件判断用以在循环内部的某个条件达成时终止循环
        e = (
'''
ls 
echo "两条命令,"
'''
) 
        for i in range(num):
            b[i],c[i],d[i] = a[i].exec_command(e)       #num个对象执行e命令
                                                                                # b[1],c[1],d[1] = a[1].exec_command(e)
                                                                                # stdin1,stdout1,stderr1 = client2.exec_command(e)
            print(f'----------------------{ip[i]}信息----------------------')
            print(c[i].read().decode('utf-8'))                  # 打印正确输出
            print(d[i].read().decode('utf-8'))                  # 打印错误输出
                                                                                # print(f'----------------------{ip[1]}信息----------------------')
                                                                                # print(c[1].read().decode('utf-8'))
                                                                                # print(c[1].read().decode('utf-8'))
        if (i < num):                                                   # 要求循环次数 小于ip个数
            a[i].close()
            # a[1].close()
            print('已退出SSH连接')
            break                                                               # while true 的条件终止循环语句
def main():                                                             #主方法(运行函数),可以把批量ip端口账号密码对应的写入列表,然后把输入删掉运行
    ip=['hc3.ssh.gs','hc4.ssh.gs']
    port=[22,22]
    username=['root','root']
    password = ['eisc','eisc']
    num = len(ip)
    SSHLinux(ip,port,username,password,num)
if __name__ == '__main__':                                                                              # 程序运行入口
    main()
# 首先需要配置 python的 pip 的源 参考 linux centos7 编译安装python3 --shell脚本

地址1:https://www.eisc.cn/index.php?c=read&id=366&page=1
地址2:https://developer.aliyun.com/article/775858?spm=a2c6h.13148508.0.0.5ea04f0ek5uhm7
目录
相关文章
|
5月前
|
Web App开发 数据安全/隐私保护 Python
万能ck提取登录软件,京东贴吧淘宝拼多多cookie提取工具,python框架分享
这个框架使用了Selenium进行浏览器自动化操作,包含了京东和淘宝的登录示例。代码展示了如
|
4月前
|
安全 JavaScript 开发者
Python 自动化办公神器|一键转换所有文档为 PDF
本文介绍一个自动化批量将 Word、Excel、PPT、TXT、HTML 及图片转换为 PDF 的 Python 脚本。支持多格式识别、错误处理与日志记录,适用于文档归档、报告整理等场景,大幅提升办公效率。仅限 Windows 平台,需安装 Office 及相关依赖。
232 0
|
5月前
|
Web App开发 存储 前端开发
Python+Selenium自动化爬取携程动态加载游记
Python+Selenium自动化爬取携程动态加载游记
|
2月前
|
存储 数据采集 监控
Python定时爬取新闻网站头条:从零到一的自动化实践
在信息爆炸时代,本文教你用Python定时爬取腾讯新闻头条,实现自动化监控。涵盖请求、解析、存储、去重、代理及异常通知,助你构建高效新闻采集系统,适用于金融、电商、媒体等场景。(238字)
372 2
|
3月前
|
数据采集 监控 Shell
无需Python:Shell脚本如何成为你的自动化爬虫引擎?
Shell脚本利用curl/wget发起请求,结合文本处理工具构建轻量级爬虫,支持并行加速、定时任务、增量抓取及分布式部署。通过随机UA、异常重试等优化提升稳定性,适用于日志监控、价格追踪等场景。相比Python,具备启动快、资源占用低的优势,适合嵌入式或老旧服务器环境,复杂任务可结合Python实现混合编程。
|
5月前
|
数据采集 人工智能 API
推荐一款Python开源的AI自动化工具:Browser Use
Browser Use 是一款基于 Python 的开源 AI 自动化工具,融合大型语言模型与浏览器自动化技术,支持网页导航、数据抓取、智能决策等操作,适用于测试、爬虫、信息提取等多种场景。
813 4
推荐一款Python开源的AI自动化工具:Browser Use
|
5月前
|
存储 数据库 数据安全/隐私保护
抖音ck提取工具,快手小红书微博哔哩哔哩cookie提取登录软件,python框架
这个框架提供了完整的Cookie提取功能,支持抖音、快手、小红书、微博和哔哩哔哩平台。主要特点包括
|
5月前
|
存储 数据采集 数据可视化
Python自动化分析知网文献:爬取、存储与可视化
Python自动化分析知网文献:爬取、存储与可视化
|
5月前
|
数据采集 存储 监控
Python爬虫自动化:定时监控快手热门话题
Python爬虫自动化:定时监控快手热门话题
|
5月前
|
安全 数据库 数据安全/隐私保护
Python办公自动化实战:手把手教你打造智能邮件发送工具
本文介绍如何使用Python的smtplib和email库构建智能邮件系统,支持图文混排、多附件及多收件人邮件自动发送。通过实战案例与代码详解,帮助读者快速实现办公场景中的邮件自动化需求。
455 0

热门文章

最新文章