|
from flask import Flask |
|
import requests |
|
import psutil |
|
import socket |
|
|
|
app = Flask(__name__) |
|
|
|
def get_private_ip_addresses(): |
|
private_ip_addresses = [] |
|
interfaces = psutil.net_if_addrs() |
|
for interface_name, interface_addresses in interfaces.items(): |
|
for address in interface_addresses: |
|
if address.family == socket.AF_INET and not address.address.startswith('127.') and not address.address.startswith('169.254.'): |
|
private_ip_addresses.append((interface_name, address.address)) |
|
return private_ip_addresses |
|
|
|
def get_public_ip_address(): |
|
try: |
|
response = requests.get('https://api.ipify.org') |
|
if response.status_code == 200: |
|
return response.text |
|
else: |
|
return "Failed to retrieve public IP address" |
|
except Exception as e: |
|
return str(e) |
|
|
|
def get_system_info(): |
|
system_info = {} |
|
system_info['Hostname'] = socket.gethostname() |
|
system_info['Private IP Addresses'] = get_private_ip_addresses() |
|
system_info['Public IP Address'] = get_public_ip_address() |
|
system_info['CPU'] = f"{psutil.cpu_count()} cores" |
|
mem_info = psutil.virtual_memory() |
|
system_info['RAM'] = f"{mem_info.total / (1024 ** 3):.2f} GB" |
|
disk_info = psutil.disk_usage('/') |
|
system_info['Disk Usage'] = f"{disk_info.used / (1024 ** 3):.2f} GB / {disk_info.total / (1024 ** 3):.2f} GB" |
|
return system_info |
|
|
|
@app.route('/') |
|
def index(): |
|
system_info = get_system_info() |
|
output = "System Information:\n" |
|
for key, value in system_info.items(): |
|
if isinstance(value, list): |
|
output += f"{key}:\n" |
|
for item in value: |
|
output += f" {item[0]}: {item[1]}\n" |
|
else: |
|
output += f"{key}: {value}\n" |
|
return output |
|
|
|
if __name__ == '__main__': |
|
app.run(host='0.0.0.0', port=7860) |
|
|