利用python如何远程服务器,获取其基本信息

 我来答
若以下回答无法解决问题,邀请你更新回答
网站安全服务器安全
2018-05-26 · 百度认证:青岛四海通达电子科技有限公司官方账号
网站安全服务器安全
青岛四海通达电子科技有限公司坐落于美丽的海滨城市青岛,是专业致力于网站安全和服务器安全的领导者和推动者。安全服务于互联网金融、游戏平台、移动APP软件、O2O&电商、支付平台、企业网站等
向TA提问
展开全部

#!/usr/bin/python
#coding:utf-8

from subprocess import Popen,PIPE
import re
import os,sys
import paramiko


class GetLinuxMessage:
#登录远程Linux系统
def session(self, host, port, username, password):

try:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, int(port), username, password)
print "Login %s is successful" % host
return ssh
except Exception as e:
print e.message


#获取Linux主机名


def get_hostname(self, host, port=22, username="root", password="baicells"):
cmd_hostname = "hostname"
client = self.session(host, port, username, password)
stdin, stdout, stderr = client.exec_command(cmd_hostname)
hostname = stdout.read()
return hostname


#获取Linux网络ipv4信息


def get_ifconfig(self, host, port=22, username="root", password="baicells"):
client = self.session(host, port, username, password)
stdin, stdout, stderr = client.exec_command("ifconfig")
data = stdout.read()
#ret = re.compile('((?:1[0-9][0-9]\.)|(?:25[0-5]\.)|(?:2[0-4][0-9]\.)|(?:[1-9][0-9]\.)|(?:[0-9]\.)){3}((1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])|([1-9][0-9])|([0-9]))')
ret = re.compile('(?:19[0-9]\.)((?:1[0-9][0-9]\.)|(?:25[0-5]\.)|(?:2[0-4][0-9]\.)|(?:[1-9][0-9]\.)|(?:[0-9]\.)){2}((1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])|([1-9][0-9])|([0-9]))')
match = ret.search(data).group()
return match      


#获取Linux系统版本信息


def get_version(self, host, port=22, username="root", password="baicells"):

client = self.session(host, port, username, password)
stdin, stdout, stderr = client.exec_command("cat /etc/redhat-release")
data = stdout.read()
return data
#获取Linux系统CPU信息
def get_cpu(self, host, port=22, username="root", password="baicells"):

cpunum = 0
processor = 0
client = self.session(host, port, username, password)
stdin, stdout, stderr = client.exec_command("cat /proc/cpuinfo")
cpuinfo = stdout.readlines()
#with stdout.read() as cpuinfo:
for i in cpuinfo:
if i.startswith('physical id'):
cpunum = i.split(":")[1]
if i.startswith('processor'):
processor = processor + 1
if i.startswith('model name'):
cpumode = i.split(":")[1]
return int(cpunum)+1, processor,cpumode



#获取Linux系统memory信息
def get_memory(self, host, port=22, username="root", password="baicells"):

client = self.session(host, port, username, password)
stdin, stdout, stderr = client.exec_command("cat /proc/meminfo")
meminfo = stdout.readlines()
#with open('/proc/meminfo') as meminfo:
for i in meminfo:
if i.startswith('MemTotal'):
memory = int(i.split()[1].strip())
memory = '%.f' %(memory / 1024.0) + 'MB'
else:
pass
return memory


#获取Linux系统网卡信息
def get_ethernet(self, host, port=22, username="root", password="baicells"):

client = self.session(host, port, username, password)
stdin, stdout, stderr = client.exec_command("lspci")
data = stdout.read()
ret = re.compile('Eth[^\d].*')
eth = ret.search(data).group()
return eth



if __name__ == '__main__':

host = raw_input("please input the hostname: ")
result = GetLinuxMessage()
result1 = result.get_hostname(host)
print ('主机名:%s' %result1)
result2 = result.get_ifconfig(host)
print ('主机IP:%s' %result2)
result3 = result.get_version(host)
print ('版本信息:%s' %result3)
result4,result5,result6 = result.get_cpu(host)
print ('物理CPU数量:%s' %result4)
print ('逻辑CPU数量:%s' %result5)
print ('物理CPU型号:%s' %result6)
result7 = result.get_memory(host)
print ('物理内存:%s' %result7)
result8 = result.get_ethernet(host)
print ('网卡型号:%s' %result8)

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式