1、說明:python
一、利用Python的paramiko模塊,調用遠程的shell命令去修改相應文件。mysql
二、有一個專用配置文件,列出服務器清單。sql
三、Python循環讀取配置文件的服務器IP去鏈接它,並執行相應的命令。shell
四、主要是有一個正則,匹配Zabbix agent中的IP設置。bash
[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)
結果以下:app