Sử dụng module socket built-in để lấy hostname và IP address cục bộ (local IP) của máy đang chạy script.
Mã nguồn
import socket
hostname = socket.gethostname()
ip_address = socket.gethostbyname(hostname)
print(f"Hostname: {hostname}")
print(f"IP Address: {ip_address}")Kết quả mẫu
Hostname: DESKTOP-A0PM5GD IP Address: 192.168.43.15
Giải thích
socket.gethostname(): Trả về tên máy tính (hostname) theo OS.socket.gethostbyname(hostname): Phân giải hostname thành IPv4 address.- Kết quả là IP nội bộ (private IP) trong LAN (192.168.x.x, 10.x.x.x, 172.16-31.x.x).
Lấy Public IP (IP ngoài internet)
Cần gọi API bên ngoài vì socket chỉ thấy interface local.
import requests
try:
response = requests.get('https://api.ipify.org', timeout=5)
public_ip = response.text.strip()
print(f"Public IP: {public_ip}")
except Exception as e:
print(f"Lỗi lấy public IP: {e}")Lấy tất cả IP của máy (multi-interface)
import socket
hostname = socket.gethostname()
all_ips = socket.gethostbyname_ex(hostname)
print(f"Hostname: {hostname}")
print(f"Aliases: {all_ips[0]}")
print(f"IPs: {all_ips[2]}")Kết luận
socket.gethostbyname(gethostname()) nhanh, không cần internet, cho IP local. Dùng requests + ipify/api.ipify.org cho public IP. Lưu ý: máy có thể có nhiều IP (VPN, Docker, VM, WiFi+Ethernet).