Зміна IP за допомогою Python

Автор | 12.04.2023

Простий скрипт, який змінює ip адресу вибраного інтерфейса на введений, шлюз генеруєтся відповідно введеного ip

import os

ip_address = input("Enter the IP address to set: ")
interface = input("Enter the interface name to set (e.g. Ethernet, Wi-Fi): ")

# Generate gateway based on the IP address
gateway = f"{ip_address.split('.')[0]}.{ip_address.split('.')[1]}.{ip_address.split('.')[2]}.1"

# Run netsh command to set the IP address
os.system(f"netsh interface ip set address \"{interface}\" dhcp" if ip_address.lower() == "auto dhcp" else f"netsh inte>
print(f"IP address {ip_address} has been set on interface {interface} with gateway {gateway} .")

Ось так виглядає робота скрипта:

от так в властивостях мережі показує:

Що наразі не працює: відновлення на “auto” та не пише нормально dns. В моєму випадку це не критично, хоча над цим працюю ))

Також колись бачив програму, для швидкої зміни ip з профілем та іншими блекджеками, але хотів мінімальний скрипт для швидкого переключання.

о, доречі є ще так:

import os

ip_address = input("Enter the IP address to set: ")
interface = input("Enter the interface name to set (e.g. Ethernet, Wi-Fi): ")

# Set subnet mask and default gateway based on the IP address entered
if ip_address.startswith('192.168.7.'):
    subnet_mask = '255.255.255.0'
    default_gateway = '192.168.7.1'
elif ip_address.startswith('192.168.0.'):
    subnet_mask = '255.255.255.0'
    default_gateway = '192.168.0.1'
elif ip_address.startswith('192.168.2.'):
    subnet_mask = '255.255.255.0'
    default_gateway = '192.168.2.1'
else:
    print(f"IP address {ip_address} not supported.")
    exit()

# Run netsh command to set the IP address
os.system(f"netsh interface ip set address \"{interface}\" dhcp" if ip_address.lower() == "auto dhcp" else f"netsh interface ip set address \"{interface}\" static {ip_address} {subnet_mask} {default_gateway}")

# Set DNS servers
os.system(f"netsh interface ipv4 set dns name=\"{interface}\" static 192.168.7.1 primary validate=no")
os.system(f"netsh interface ipv4 add dns name=\"{interface}\" 1.1.1.1 index=2 validate=no")

print(f"IP address {ip_address} with gateway {default_gateway} and DNS servers 192.168.7.1 and 1.1.1.1 has been set on interface {interface}.")

тут можно зробити готовий скрипт, якщо треба часто якусь певну мережу, та нехватає пам’яті для всіх команд на світі ))

ще щось таке писав:

import netifaces

interface_name = "eth0"
addresses = netifaces.ifaddresses(interface_name)

ip_address = addresses[netifaces.AF_INET][0]["addr"]
subnet_mask = addresses[netifaces.AF_INET][0]["netmask"]
gateway = netifaces.gateways()["default"][netifaces.AF_INET][0]

print(f"Interface: {interface_name}")
print(f"IP Address: {ip_address}")
print(f"Subnet Mask: {subnet_mask}")
print(f"Gateway: {gateway}")

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *