14 votes

script pour changer l'adresse IP sous Windows

J'utilise mon ordinateur pour communiquer avec un matériel via ethernet. Pour communiquer avec ce matériel, je règle mon adresse IP sur 192 168 0 11, le masque de sous-réseau sur 255 255 255 0 et la passerelle par défaut sur 192 168 0 1 pour l'IPv4. Pour utiliser l'internet, je choisis "Obtenir une adresse IP automatiquement" via le panneau de configuration.

J'aimerais avoir un script qui me permette de choisir rapidement l'un ou l'autre des paramètres ethernet - matériel ou internet.

Je programme principalement en python, mais il existe peut-être une solution par fichier batch.

Merci,

Barry.

27voto

msanders Points 2921

Vous pouvez utiliser le logiciel Python Module WMI pour ce faire (installer le Extensions PyWin32 et le module WMI avant d'exécuter ces scripts). Voici comment configurer les choses pour parler au périphérique matériel :

import wmi

# Obtain network adaptors configurations
nic_configs = wmi.WMI().Win32_NetworkAdapterConfiguration(IPEnabled=True)

# First network adaptor
nic = nic_configs[0]

# IP address, subnetmask and gateway values should be unicode objects
ip = u'192.168.0.11'
subnetmask = u'255.255.255.0'
gateway = u'192.168.0.1'

# Set IP address, subnetmask and default gateway
# Note: EnableStatic() and SetGateways() methods require *lists* of values to be passed
nic.EnableStatic(IPAddress=[ip],SubnetMask=[subnetmask])
nic.SetGateways(DefaultIPGateway=[gateway])

Voici comment revenir à l'obtention automatique d'une adresse IP (via DHCP) :

import wmi

# Obtain network adaptors configurations
nic_configs = wmi.WMI().Win32_NetworkAdapterConfiguration(IPEnabled=True)

# First network adaptor
nic = nic_configs[0]

# Enable DHCP
nic.EnableDHCP()

Note : dans un script de production, vous devez vérifier les valeurs renvoyées par EnableStatic() , SetGateways() y EnableDHCP() . (0 signifie succès, 1 signifie redémarrage requis et les autres valeurs sont décrites dans les pages MSDN auxquelles renvoient les noms des méthodes. Remarque : pour EnableStatic() et SetGateways(), les codes d'erreur sont renvoyés sous forme de listes).

Des informations complètes sur toutes les fonctionnalités de la classe Win32NetworkAdapterConfiguration peuvent également être obtenues auprès de l'Office national de l'énergie. trouvé sur MSDN .

Note : J'ai testé ceci avec Python 2.7, mais comme les modules PyWIn32 et WMI sont disponibles pour Python 3, je pense que vous devriez être en mesure de faire fonctionner ceci pour Python 3 en supprimant le "u" avant les chaînes littérales.

6voto

rocksportrocker Points 3031

Vous pouvez utiliser le sous-processus module à démarrer

netsh interface ip set address [params]

Lancez ce programme à partir de la ligne de commande (sans [params]) pour obtenir de l'aide sur la façon de l'utiliser. Ensuite, vous pouvez faire

import subprocess
subprocess.call("netsh interface ip set address ....".split())

Mise à jour :

Pour ceux qui sont trop occupés pour faire du rtfm,

netsh interface ip set address lan static 192.168.0.100 255.255.255.0
netsh interface ip set address lan dhcp

ici lan est le nom de l'interface réseau à configurer, 192.168.0.100 est l'adresse IP, 255.255.255.0 est le masque de réseau. La première commande définit une adresse statique, la seconde revient à dhcp.

-1voto

mayank1234r56 Points 1

En fait, c'est très simple à réaliser (sous Windows uniquement) (utilisation des bibliothèques préinstallées uniquement) :

import os; os.system("ipconfig /renew")

-1voto

akash pawar Points 1
import os
import subprocess

from subprocess import PIPE
def find_net_device():
    cmd ='netsh interface ipv4 show interfaces'.split()

    result = subprocess.run(cmd, universal_newlines = True,
                            stdout = subprocess.PIPE)                              
    result = result.stdout
    result = result.split('connected')[2]
    result = result.split('\n')[0]
    result = result.strip()
    return result

def change_ip(ip):
    adapter = find_net_device()
    change =f'netsh interface ip set address {adapter} static {ip} 255.255.255.0'
    change = change.split()

change_ip('165.22.64.68')

Retour à la normale

def back2normal():
    adapter = find_net_device()
    normal = f'netsh interface ip set address {adapter} dhcp'
    subprocess.run(normal,stdout=PIPE, universal_newlines=True)

-2voto

Tester Points 1

Vous pouvez utiliser vbscript pour modifier l'adresse IP,

Dim strIPAddress, strSubnetMask,strGateway, intGatewayMetric, strDns1, strDns2, objWMIService, colItems, stradaptername, objFSO
Const ForReading = 1 
Const ForAppending = 8
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set OutPutFile = objFSO.CreateTextFile("C:\ProgramData\test.txt" ,2 , True)
Set InterfaceName = objWMIService.ExecQuery ("Select * From Win32_NetworkAdapter Where NetConnectionStatus >= 0")
If objFSO.FileExists("C:\ProgramData\test.txt") Then
Set OutPutFile = objFSO.CreateTextFile("C:\ProgramData\test1.txt" ,2 , True)
End If
For Each objItem in InterfaceName
If objFSO.FileExists("C:\ProgramData\test.txt") Then
arrInterfaces = objItem.NetConnectionID
'wscript.echo "test: " &arrInterfaces
Set objFileToWrite = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\ProgramData\test.txt",8,true)
ObjFileToWrite.WriteLine(arrInterfaces)
objFileToWrite.Close
Set objFileToWrite = Nothing
End If
next
If objFSO.FileExists("C:\ProgramData\test.txt") Then
Set objFileToRead = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\ProgramData\test.txt",1)
strFileText = objFileToRead.ReadAll()
objFileToRead.Close
Set objFileToRead = Nothing
'wscript.echo "obtained" &strFileText
End If
Result = inputbox("Enter the AdapterName: " &vbCrLf &strFileText)
If Result = "" then
'wscript.echo "user selected cancel"
Else
strIPAddress=InputBox("Enter Static IP Adrress: ")
strSubnetMask =InputBox("Enter SubnetMask: " )
strGateway=InputBox("Enter Default Gateway: ")
strDns1=InputBox("Enter Preferred DNS: ")
strDns2=InputBox("Enter Alternate DNS: ")
Set objShell = WScript.CreateObject("Wscript.Shell")
objShell.CurrentDirectory = "C:\Windows\System32"
objShell.Run "netsh interface ip set address name=""" & Result & """ static " & strIPAddress & " " & strSubnetMask & " " & strGateway & " " & intGatewayMetric, 0, True
objShell.Run "netsh interface ip set dns name=" & Result & " static "& strDns1, 0, True
objShell.Run "netsh interface ip add dns name=" & Result & " addr="& strDns2, 0, True
Set objShell = Nothing: Set obj=Nothing
End If
WScript.Quit

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X