借助Python工具完善主机相关信息

借助Python工具从数据库读取主机的基本信息(IP、账号、密码),然后验证ssh登录情况,并在主机上执行shell命令查询主机上的操作系统、rpm包等相关信息,将查询结果插入到数据库。

# coding=utf-8
import paramiko
import mysql.connector
import time
#
db_connection = mysql.connector.connect(
  user="admin",
  password="password",
  host="192.168.87.79",
  database="hosts_info"
)
#
cursor = db_connection.cursor()
#
# 执行查询语句
cursor.execute('SELECT * FROM host_tmp')

# 获取查询结果
result = cursor.fetchall()

# 处理查询结果
    try:
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(hostname=row[0], username=row[1], password=row[2])
        print(f"Successfully logged into {row[0]}");
       #get os
        stdin, stdout, stderr = ssh.exec_command("cat /etc/redhat-release")
       # print(stdout.read().decode())
        os_results = stdout.read().decode('utf-8')
       # print("abc:", os_results)

       # hostname
        stdin, stdout, stderr = ssh.exec_command("hostname")
        hostname_results = stdout.read().decode('utf-8')

       # rpm -qa openssh
        stdin, stdout, stderr = ssh.exec_command("rpm -qa openssh")
        openssh_results = stdout.read().decode('utf-8')

       # rpm -qa openssl
        stdin, stdout, stderr = ssh.exec_command("rpm -qa openssl")
        openssl_results = stdout.read().decode('utf-8')

       # rpm -qa ntp
        stdin, stdout, stderr = ssh.exec_command("rpm -qa ntp")
        ntp_results = stdout.read().decode('utf-8')

        time1 = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

        sql = "INSERT INTO host_info (ip,is_reachable,is_login,os,hostname,username,password,openssh,openssl,ntp,time) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
        val = (row[0],'1','1',os_results,hostname_results,row[1],row[2],openssh_results,openssl_results,ntp_results,time1)
        cursor.execute(sql, val)
        ssh.close()
    except paramiko.AuthenticationException:
        print(f"Failed to log into {row[0]}")
    except Exception as e:
        print(f"Error connecting to {row[0]}: {e}")

# 提交事务
db_connection.commit()

# 关闭游标和连接
cursor.close()
db_connection.close()
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值