linux检查python安装情况,使用Python检测Linux服务器连接状态

在对Linux服务器的维护过程中,有时需要及时的知道这些服务器能不能正常连接,以便及时联系管理员进行处理。假设这批服务器都是使用ssh的方式登陆,需要通过python程序进行检测:

安装Python第三方模块paramiko

pip install paramiko

在程序当前目录下建一份Linux服务器配置文档(servers.txt)

#内容如下(地址 账号 密码)空格分隔,多台服务器换行

112.33.33.33 root password

编写python脚本

#!/usr/bin/python

# coding=utf-8

"""

Server对象用来定义server的ip、用户名、密码以及连接日志等属性,

包含connect方法用于ssh登陆, run_cmd方法用于执行linux命令

"""

import paramiko

class Server():

def __init__(self, ip, username, password):

self.username = username

self.password = password

self.ip = ip

self.connect_result = ""

# ssh登陆并反馈连接成功或失败信息

def connect(self):

conn = paramiko.SSHClient()

conn.set_missing_host_key_policy(paramiko.AutoAddPolicy())

try:

conn.connect(self.ip, username=self.username, password=self.password)

self.connection = conn

self.connect_result = "Connect Server {0} {1} {2} Successfully!\n".format(

self.ip, self.username, self.password)

except:

self.connect_result = "Connect Server {0} {1} {2} Failed!\n".format(

self.ip, self.username, self.password)

#不能正常连接的server打印信息到控制台

print(self.connect_result)

return self.connect_result

# 该方法运行建立连接后执行linux命令

def run_cmd(self, command):

if self.connection is None:

print("Please run connect")

raise ValueError("Not connected")

(stdin, stdout, stderr) = self.connection.exec_command(command)

return stdout.read()

# 从文件读取servers信息ip 用户名 密码

def get_all_servers_login_info(server_file="./servers.txt"):

try:

f = open(server_file)

all_servers = f.read()

except:

print("ERROR: 读取文件{0}失败".format(server_file))

finally:

f.close()

all_servers = all_servers.split('\n')

ssh_list = []

for ssh in all_servers:

if (len(ssh) > 0):

ssh_list.append(ssh.split())

return ssh_list

if __name__ == '__main__':

# 读取servers.txt中的ip username password信息

all_servers_info = get_all_servers_login_info()

# 记录ssh登陆日志信息

connection_log = ""

# 逐个检查每个server ssh登陆情况

for server in all_servers_info:

ip, username, password = server[0], server[1], server[2]

conn = Server(ip, username, password)

connection_log += conn.connect()

# 将所有服务器ssh登陆检查信息写入日志文件

log_file = open("connect_result.log", 'w')

log_file.write(connection_log)

log_file.close()

运行脚本就可以检查所有的服务器状态了,模拟检查结果如下:

5649e8ed6347e670bdace270c1c2a451.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值