import paramiko
from ws.base_ws import BaseWs
REMOTE_PROPERTIES_FILE = '远程路径/application.properties'
LOCAL_PROPERTIES_FILE = 'application.properties'
class OPConfigFile:
@staticmethod
def modify_ymp_config_file(key, new_value):
"""
功能:修改配置文件application.properties
参数:key:配置文件application.properties中需要修改的键
new_value:修改的值
"""
# 远程主机信息'
hostname = host
port = port
username = user
password = passwd
# 创建SSH对象
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 自动添加主机密钥
try:
# 建立SSH连接
ssh.connect(hostname, port, username, password)
# 使用SFTP客户端
sftp = ssh.open_sftp()
# 下载远程.properties文件
sftp.get(REMOTE_PROPERTIES_FILE, LOCAL_PROPERTIES_FILE)
# 关闭SFTP连接
sftp.close()
# 读取并修改本地.properties文件
with open(LOCAL_PROPERTIES_FILE, 'r', encoding='utf-8') as file:
lines = file.readlines()
# 修改配置项,例如将key=value修改为key=new_value
with open(LOCAL_PROPERTIES_FILE, 'w', encoding='utf-8') as file:
for line in lines:
if key in line:
# 假设我们要修改的键是'key',新的值是'new_value'
line = f'{key}={new_value}\n'
file.write(line)
# 重新建立SFTP连接进行上传
sftp = ssh.open_sftp()
# 上传修改后的文件到远程主机
sftp.put(LOCAL_PROPERTIES_FILE, REMOTE_PROPERTIES_FILE)
# 关闭SFTP连接
sftp.close()
print(f"Updated '{REMOTE_PROPERTIES_FILE}' on {hostname} successfully.")
ssh.exec_command("chmod 777 远程路径/application.properties ; sed -i 's/\r//g' 远程路径/application.properties") #文件修改权限及centos文件格式化,windows、centos系统上字符表现不同
stdin, stdout, stderr = ssh.exec_command("sh 远程路径/app.sh restart")
# 读取输出和错误
print(stdout.read().decode())
if stderr.read().decode():
print("命令执行出错:", stderr.read().decode())
except Exception as e:
print(f"An error occurred: {e}")
finally:
ssh.close() # 无论是否发生异常,都关闭SSH连接
@staticmethod
def get_ymp_config_file_value_by_key(keyName):
# 远程主机信息
hostname = host
port = port1
username = user
password = passwd
# 创建SSH对象
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 自动添加主机密钥
try:
# 建立SSH连接
ssh.connect(hostname, port, username, password)
# 使用SFTP客户端
sftp = ssh.open_sftp()
# 下载远程.properties文件
sftp.get(REMOTE_PROPERTIES_FILE, LOCAL_PROPERTIES_FILE)
# 关闭SFTP连接
sftp.close()
# 读取本地.properties文件
properties = {}
with open(LOCAL_PROPERTIES_FILE, 'r', encoding='utf-8') as file:
for line in file:
# 忽略注释和空行
if line.strip() and not line.strip().startswith('#'):
key, value = line.strip().split('=', 1)
properties[key.strip()] = value.strip()
# print("_______________properties:",properties)
# print(f"_______________key:{keyName},properties:{properties[keyName]}")
return properties[keyName]
except Exception as e:
print(f"An error occurred: {e}")
finally:
# 无论是否发生异常,都关闭SSH连接
ssh.close()
SSH实现远程文件修改
猜你喜欢
转载自blog.csdn.net/qq_30068487/article/details/140559747
今日推荐
周排行