Pythonサーバモニタ
Pythonサーバモニタ一、paramikoとpsutil をインストールする二、遠隔監視を実現する 三、問題CryptographyDepresationWarning 一、paramikoとpsuilのインストール
二、遠隔監視を実現するモニタ入口run_perf.py リモート接続utils.py モニタスクリプトscript.py
三、問題CryptographyDepresationWarning原因:paramikoはcryptographyに依存し、最新のcryptographyには廃棄されたAPIがある. 解放方案uninstall最新版、インストール2.4.2 pip uninstall cryptography pip install cryptography=2.4.2 PS:リファレンスリンクhttps://psutil.readthedocs.io/en/latest/
pip install paramiko
pip install psutil
二、遠隔監視を実現する
import os
from utils import *
def run_perf(host, port, user, password):
"""
,
""""
base = os.getcwd()
cmd_file = base + r'/script.txt'
client = connect_to_server(host, port, user, password)
with open(cmd_file) as fp:
cmd = fp.read()
exec_script(client, cmd)
close_connection(client)
if __name__ == '__main__':
run_perf('10.2.2.100', 22, 'root', 'password')
import json
import paramiko
import psutil
def connect_to_server(host, port, user, password):
"""
SSH
""""
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(host, port, user, password)
return client
def exec_script(client, script):
"""
""""
stdin, stdout, stderr = client.exec_command(script)
for line in stdout.readlnes():
data = json.loads(line)
print(data)
def close_connection(client):
"""
""""
client.clsoe()
python <<EOF
import json
import psutil as pu
data = ()
mem_info = {}
mem = pu.virtual_memory()
mem_info['total'] = mem.total
mem_info['available'] = mem.available
mem_info['percent'] = mem.percent
mem_info['used'] = mem.used
mem_info['free'] = mem.free
cpu_info = pu.cpu_percent(interval=2, percpu=True)
data['mem_info'] = mem_info
data['cpu_info '] = cpu_info
data = json.dumps(data)
print(data)
EOF
三、問題CryptographyDepresationWarning