linux,  python

Python-服务器&交换机自动化巡检

功能

远程登录多台linux服务器或交换机执行相应命令输出到txt文本。其中服务器ip列表(ip_file.txt)自定义,巡检命令列表(cmd_file.txt)自定义。
注意:交换机必须设置look_for_keys(bool类型),设置为False时用来禁用在~/.ssh中搜索私钥文件

环境准备

  • linux系统
  • python3环境
  • python3模块paramiko
脚本内容

#vim check.py

#!/usr/bin/env python3
# -*- coding:utf-8 -*-

import re
import paramiko
import time
import datetime


def sshexeccmd(ip):
    try:
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(hostname=ip.strip(), port=22, username='用户名', password='密码', look_for_keys=False)
        print("You have successfully connect to ", ip)

        command = ssh.invoke_shell()
        cmdlist = open(r"./cmd_file.txt", 'r')

        cmdlist.seek(0)
        for line in cmdlist.readlines():
            if len(line.strip()) == 0:
                continue
            command.send(line.strip())
            command.send("\n")
        time.sleep(3)
        cmdlist.close()
        output = command.recv(65535)
        t = datetime.datetime.now()
        # 对现在时间格式化,以此作为文件名
        cur_time = t.strftime('%Y-%m-%d_%H-%M-%S')

        save_file = open(ip.strip() + '_' + cur_time + '.txt', "wb")
        save_file.seek(0)
        save_file.write(output)
        save_file.close()
        ssh.close()
        change_file = open(ip.strip() + '_' + cur_time + '.txt', "r")
        alllines = change_file.readlines()
        change_file.close()
        change_file = open(ip.strip() + '_' + cur_time + '.txt', "w+")
        for eachline in alllines:
            a = re.sub(r"\[\?2004h", '', eachline)
            a = re.sub(r"\[\?2004l", '', a)
            change_file.writelines(a)
        change_file.close()

    except Exception as e:
        print(e)


def main():
    iplist = open(r"./ip_file.txt", 'r')
    for line in iplist.readlines():
        if len(line.strip()) == 0 :
            continue
        sshexeccmd(line)

main()

备注:username=’用户名’, password=’密码’ 记得修改

ip列表

#vim ip_file.txt

192.168.1.1
192.168.1.2
巡检命令列表

#vim cmd_file.txt

ifconfig
hostname
执行脚本

条件:ip列表文件巡检命令列表文件python脚本文件要在同级目录下

#python3 check.py

结果

脚本执行完成之后会生成对应的结果文件

192.168.1.1_2022-09-16_09-09-56.txt
192.168.1.2_2022-09-16_09-09-57.txt

留言

您的邮箱地址不会被公开。 必填项已用 * 标注