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 写的远程批量修改文件内容的脚本的主要内容,如果未能解决你的问题,请参考以下文章

python3写的一个检测远程服务器端口脚本

Python脚本批量给文件添加内容

Python 远程批量修改密码脚本

Shell脚本实战之文件批量创建和修改

python写的selenium测试脚本,run.py文件引测试脚本怎么批量引入?

expect脚本同步文件expect脚本指定host和同步的文件构建文件分发系统批量远程执行命