性能工具部署 - 自动在30多台机器上部署发流工具,并自动配置各自的参数,一键控制所有节点工具的启动、停止、重启

本文主要是介绍性能工具部署 - 自动在30多台机器上部署发流工具,并自动配置各自的参数,一键控制所有节点工具的启动、停止、重启,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

需求1:脚本快速上传文件到制定目录并解压

import paramiko
import scp
import os
import pexpect# SSH连接信息
ssh_host = '162.14.xx'
ssh_port = 22  # 默认的SSH端口
ssh_username = 'root'  # 登录用户名
ssh_password = 'xx'  # 登录密码
sudo_password = 'xx'  # 登录密码# 本地zip文件路径
local_zip_path = './file.zip'# 远程虚拟机的目标路径
remote_zip_path = '/root'
remote_unzip_path = '/home/paasuser'  # 解压的目标目录
remote_conf_path = '/home/paasuser/file/test.conf'  # 要修改的文件的路径def put_gb(ssh_host=ssh_host):# 创建SSH客户端对象ssh = paramiko.SSHClient()# 允许连接不在know_hosts文件中的主机ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())try:# 连接SSH服务器ssh.connect(ssh_host, port=ssh_port, username=ssh_username, password=ssh_password)# 使用SCP上传zip文件with scp.SCPClient(ssh.get_transport()) as scp_client:scp_client.put(local_zip_path, remote_zip_path)# 发送命令到远程服务器解压zip文件stdin, stdout, stderr = ssh.exec_command(f'unzip {remote_zip_path}/file.zip -d {remote_unzip_path}')print(stdout.read().decode())print(stderr.read().decode())except paramiko.AuthenticationException:print("Authentication failed, please verify your credentials")except paramiko.SSHException as sshException:print(f"Unable to establish SSH connection: {sshException}")except Exception as e:print(f"Error: {e}")finally:# 关闭SSH连接ssh.close()if __name__ == '__main__':# 上传一个文件到服务器下并解压put_gb(ssh_host="xxx")# # 上传所有文件到服务器下# # 所有服务器的IP值# list1 = []# for i in list1:#     put_gb(ssh_host=i)

需求2:根据excel配置好的参数,修改32个节点每个工具的参数值;
1、在excel中输出一张表,该表内容包含各个虚拟机节点的IP、要配置的文件各个参数的值
2、读取excel中的每一行的数据,拿到第一行数据,开始连接第一行的虚拟机,切root,修改指定文件的参数值,值从表格中获取。校验,配置完成。
3、重复执行32次,完成工具的快速部署。

import openpyxl
import pandas"""
从excel中获取数据信息
"""import pandas as pd# Excel文件路径
file_path = 'example.xlsx'# 使用pandas的read_excel函数读取Excel文件
# 这里假设Excel文件使用的是.xlsx格式,且第一行是列名
# 如果不是,则需要相应地调整header参数
df = pd.read_excel(file_path, engine='openpyxl')# 获取第一行的数据
# 注意:Python中索引是从0开始的,所以第一行的索引是0
first_row_data = df.iloc[0]# 输出第一行的数据
print(first_row_data)
"""
姓名     张三
年龄     12
身高    1.5
Name: 0, dtype: object
"""# 输出第一行指定列的值
print("打印第一个的信息")
print(first_row_data["姓名"])
print(first_row_data["年龄"])
"""
打印第一个的信息
张三
12
"""
import paramiko
import scp
import os
import pexpect"""
修改一个文件的参数
"""ssh_host = '162.14.xx'
ssh_port = 22  # 默认的SSH端口
ssh_username = 'root'  # 登录用户名
ssh_password = 'xx'  # 登录密码
sudo_password = 'xx'  # 登录密码
remote_conf_path = '/home/paasuser/file/test.conf'  # 要修改的文件的路径# 使用pexpect切换到root用户并输入密码
child = pexpect.spawn('ssh', [ssh_username + '@' + ssh_host, '-p', str(ssh_port), '-tt'])
child.expect('password:')
child.sendline(ssh_password)
child.expect('$')
child.sendline('sudo -i')
child.expect('\[sudo\] password for ' + ssh_username + ':')
child.sendline(sudo_password)
child.expect('#')# 使用pexpect发送命令修改test.conf文件中的Aa字段值
sed_command = f'sed -i "s/^Aa *= *.*$/Aa = 111/" {remote_conf_path}'
child.sendline(sed_command)
child.expect('#')# 退出root shell
child.sendline('exit')
child.expect(pexpect.EOF)"""
修改所有服务器文件的参数
1、读取excel数据,将{”IP1“:{参数1:值1,参数2:值2,参数3:值3}, "IP2":{参数1:值1,参数2:值2,参数3:值3}}
2、读取第一行数据,连接第一个服务器,切root后修改这个服务器test.conf文件的相关参数值
3、读取第二行数据,连接第二个服务器,一样的操作,值不一样"""

需求3:脚本一键启动、停止所有相机,每个启动时间间隔2分钟。

需求4:脚本定时重启32个节点的发流工具

import paramiko
import scp
import os
import pexpect# SSH连接信息
ssh_host = '162.14.xx'
ssh_port = 22  # 默认的SSH端口
ssh_username = 'root'  # 登录用户名
ssh_password = 'xx'  # 登录密码
sudo_password = 'xx'  # 登录密码# 本地zip文件路径
local_zip_path = './file.zip'# 远程虚拟机的目标路径
remote_zip_path = '/root'
remote_unzip_path = '/home/paasuser'  # 解压的目标目录
remote_conf_path = '/home/paasuser/file/'  # 要修改的文件的路径def put_gb(ssh_host=ssh_host):# 创建SSH客户端对象ssh = paramiko.SSHClient()# 允许连接不在know_hosts文件中的主机ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())try:# 连接SSH服务器ssh.connect(ssh_host, port=ssh_port, username=ssh_username, password=ssh_password)# 使用SCP上传zip文件with scp.SCPClient(ssh.get_transport()) as scp_client:scp_client.put(local_zip_path, remote_zip_path)# 发送命令到远程服务器解压zip文件stdin, stdout, stderr = ssh.exec_command(f'cd {remote_conf_path}')stdin, stdout, stderr = ssh.exec_command(f'sh restart.sh')print(stdout.read().decode())print(stderr.read().decode())except paramiko.AuthenticationException:print("Authentication failed, please verify your credentials")except paramiko.SSHException as sshException:print(f"Unable to establish SSH connection: {sshException}")except Exception as e:print(f"Error: {e}")finally:# 关闭SSH连接ssh.close()if __name__ == '__main__':# 上传一个文件到服务器下并解压put_gb(ssh_host="xxx")# # 上传所有文件到服务器下# # 所有服务器的IP值# list1 = []# for i in list1:#     put_gb(ssh_host=i)

这篇关于性能工具部署 - 自动在30多台机器上部署发流工具,并自动配置各自的参数,一键控制所有节点工具的启动、停止、重启的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/811893

相关文章

SQLite3命令行工具最佳实践指南

《SQLite3命令行工具最佳实践指南》SQLite3是轻量级嵌入式数据库,无需服务器支持,具备ACID事务与跨平台特性,适用于小型项目和学习,sqlite3.exe作为命令行工具,支持SQL执行、数... 目录1. SQLite3简介和特点2. sqlite3.exe使用概述2.1 sqlite3.exe

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

Python pip下载包及所有依赖到指定文件夹的步骤说明

《Pythonpip下载包及所有依赖到指定文件夹的步骤说明》为了方便开发和部署,我们常常需要将Python项目所依赖的第三方包导出到本地文件夹中,:本文主要介绍Pythonpip下载包及所有依... 目录步骤说明命令格式示例参数说明离线安装方法注意事项总结要使用pip下载包及其所有依赖到指定文件夹,请按照以

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

Nexus安装和启动的实现教程

《Nexus安装和启动的实现教程》:本文主要介绍Nexus安装和启动的实现教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Nexus下载二、Nexus安装和启动三、关闭Nexus总结一、Nexus下载官方下载链接:DownloadWindows系统根

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri