Python3 写的远程批量修改文件内容的脚本
Posted ld1977
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3 写的远程批量修改文件内容的脚本相关的知识,希望对你有一定的参考价值。
一、说明:
1、利用Python的paramiko模块,调用远程的shell命令去修改相应文件。
2、有一个专用配置文件,列出服务器清单。
3、Python循环读取配置文件的服务器IP去连接它,并执行相应的命令。
4、主要是有一个正则,匹配Zabbix agent中的IP设置。
[root@mysql-m ~]# sed -i \'s/^Server=[0-9]*\\.[0-9]*\\.[0-9]*\\.[0-9]*/Server=33.66.88.99/g\' zabbix_agentd.conf
脚本的内容如下:
#! /usr/bin/env python # -*- coding: utf-8 -*- # __author__ = "life" # Email: batistuta1977@163.com # Date: 2017/12/28 import paramiko list_file_content = [] def read_file(): with open(\'ip-list\',\'rU\',encoding=\'utf-8\') as f1: for i in f1.readlines(): list_file_content.append(i.strip()) print(list_file_content) def ssh_conn(hosts): for host in hosts: print(host) ssh = paramiko.SSHClient() # 创建ssh对象 # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器 ssh.connect(hostname=host, port=22, username=\'root\', password=\'1\') # 执行追加文件内容命令 # stdin, stdout, stderr = ssh.exec_command("echo \'nameserver 172.16.50.11\' >> /tmp/1.txt") # stdin,stdout,stderr = ssh.exec_command("echo \'nameserver 172.18.50.11\\n\' >> /tmp/1.txt") # 修改zabbix agent内容 stdin, stdout, stderr = ssh.exec_command\\ ("sed -i \'s/^Server=[0-9]*\\.[0-9]*\\.[0-9]*\\.[0-9]*/Server=33.66.88.99/g\' /etc/zabbix/zabbix_agentd.conf") if __name__ == \'__main__\': read_file() ssh_conn(list_file_content)
结果如下:
以上是关于Python3 写的远程批量修改文件内容的脚本的主要内容,如果未能解决你的问题,请参考以下文章