#!/usr/bin/python
# -*- coding: UTF-8 -*-
import paramiko
import re
# 远程操作命令行
def rcmd(command=None, host=None, passwd=None, user=None, port=22, save_path="C:/rcmd_error.txt"):
try:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=host, username=user, password=passwd, port=port)
try:
_stdin, _stdout, _stderr = ssh.exec_command(command)
bash_out = _stdout.readlines()
bash_err = _stderr.read()
if bash_err:
save_err = '[%s] bash input: %s, ERROR:\n%s' % (host, command, bash_err) + "\n"
with open(save_path, "a+") as f:
f.write(save_err)
return False
if bash_out:
return bash_out
except Exception as ssh_err:
save_err = '[%s] bash ERROR:\n%s' % (host, ssh_err) + "\n"
with open(save_path, "a+") as f:
f.write(save_err)
return False
finally:
ssh.close()
except Exception as ssh_err:
save_err = '[%s] bash ERROR:\n%s' % (host, ssh_err) + "\n"
with open(save_path, "a+") as f:
f.write(save_err)
return False
# 获取主从关系
def get_cluster_role(host=None, passwd=None, user='root', port=22):
cluster_role = -1
cmd_result = rcmd(command='ip a | grep \"inet \"', host=host, passwd=passwd, user=user, port=port)
if cmd_result:
cluster_role = "从"
for _ip in cmd_result:
if host[:6] in _ip and host not in _ip:
cluster_role = "主"
return cluster_role
else:
return cluster_role
# 获取sip
def get_sip(host=None, passwd=None, user='root', port=22):
sip = -1
cmd_result = rcmd(command='ip a | grep \"inet \"', host=host, passwd=passwd, user=user, port=port)
if cmd_result:
sip = ""
for _ip in cmd_result:
if host[:6] in _ip and host not in _ip:
sip = re.split(" |/", _ip.strip())[1]
return sip
else:
return sip
# 获取内网ip
def get_internal_sip(host=None, passwd=None, user='root', port=22):
internal_ip = -1
cmd_result = rcmd(command='ip a | grep \"inet \"', host=host, passwd=passwd, user=user, port=port)
if cmd_result:
internal_ip = ""
ip_to_remove = []
for _ip in cmd_result:
if host[:6] in _ip and host not in _ip:
ip_to_remove.append(_ip)
continue
if host in _ip:
ip_to_remove.append(_ip)
continue
if ("127.0.0.1" in _ip) or ("192.168.122.1" in _ip):
ip_to_remove.append(_ip)
continue
_all_ip = [item for item in cmd_result if item not in set(ip_to_remove)]
if len(_all_ip) > 0:
for _ip in _all_ip:
internal_ip += re.split(" |/", _ip.strip())[1] + "; "
return internal_ip
else:
return internal_ip
# 启动防火墙
def start_firewall(host=None, passwd=None, user='root', port=22):
cmd_result = rcmd(command='systemctl start firewalld', host=host, passwd=passwd, user=user, port=port)
return cmd_result
# 获取防火墙端口
def get_firewall_ports(host=None, passwd=None, user='root', port=22):
firewall_ports = -1
cmd_result = rcmd(command='firewall-cmd --list-ports', host=host, passwd=passwd, user=user, port=port)
if cmd_result:
firewall_ports = cmd_result[0][:-1]
return firewall_ports
else:
return firewall_ports
# 获取硬盘使用空间
def get_total_disk(host=None, passwd=None, user='root', port=22):
total_disk = -1
cmd_result = rcmd(command='df', host=host, passwd=passwd, user=user, port=port)
if cmd_result:
disk_out = cmd_result[1:]
total_disk = 0
for d in disk_out:
total_disk += int(d.split()[1])
total_disk = round(total_disk / 1024 / 1024 / 1024, 1)
return total_disk
else:
return total_disk
# 获取磁盘已使用空间
def get_used_disk(host=None, passwd=None, user='root', port=22):
used_disk = -1
cmd_result = rcmd(command='df', host=host, passwd=passwd, user=user, port=port)
if cmd_result:
used_disk = 0
disk_out = cmd_result[1:]
for d in disk_out:
used_disk += int(d.split()[2])
used_disk = round(used_disk / 1024 / 1024 / 1024, 3)
return used_disk
else:
return used_disk
# 获取总内存
def get_total_mem(host=None, passwd=None, user='root', port=22):
total_mem = -1
cmd_result = rcmd(command='free', host=host, passwd=passwd, user=user, port=port)
if cmd_result:
mem_out = cmd_result[1]
total_mem = int(mem_out.split()[1])
total_mem = round(total_mem / 1024 / 1024)
return total_mem
else:
return total_mem
# 获取已使用内存
def get_used_mem(host=None, passwd=None, user='root', port=22):
used_mem = -1
cmd_result = rcmd(command='free', host=host, passwd=passwd, user=user, port=port)
if cmd_result:
mem_out = cmd_result[1]
used_mem = int(mem_out.split()[2])
used_mem = round(used_mem / 1024 / 1024, 1)
return used_mem
else:
return used_mem
Powered by ddoss.cn 12.0
©2015 - 2025 ddoss
渝公网安备50011302222260号
渝ICP备2024035333号
【实验平台安全承诺书】
小绿叶技术社区,优化网络中,点击查看配置信息
主机监控系统: 安全防火墙已开启检查cc攻击-下载文件完成后等待10s 恢复访问,检查连接数低于峰值恢复访问
您的IP:216.73.216.110,2025-12-01 16:08:18,Processed in 0.01349 second(s).