Script gebruiken Windows voor aanpassen tcp/ipv4 instelling

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Franko P.
  • Registratie: December 2005
  • Laatst online: 26-04 13:46
Mijn vraag

Graag zou ik door middel van een simpel scriptje een aanpassing in Windows willen doen.
Het is de bedoeling dat ik door middel van een .bat file de adapter instellingen aanpas naar een door mij gekozen ip-adres range.
Dit gebruik ik vanwege mijn werk regelmatig, de machines (cnc freesmachines) draaien hun eigen software, en deze hebben ook verbinding met het klanten netwerk.
Hierdoor worden de ip instellingen van de machine regelmatig aangepast naar behoeven klant.

Als ik daar dan werkzaamheden aan moet verrichten waarvoor ik verbinding wil maken met de machine moet ik eerst naar mijn netwerkadapter instellingen, tcp/ip V4, en daaronder vul ik het ip adres in en het subnet.

Het ip-adres is dus vaak wisselend, netwerk instellingen op automatisch gebruiken in Windows werkt helaas niet.

Relevante software en hardware die ik gebruik
Windows 10

Wat ik al gevonden of geprobeerd heb
Het volgende heb ik na enige tijd prutsen zelf gemaakt;
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@echo off

echo Please enter the IP to which you want to connect

set /p ip="IP: "

netsh interface ip set address name="Ethernet" static %ip% 255.255.255.0

 

pause

netsh interface ip set address "Ethernet" dhcp

netsh interface ip set dns "Ethernet" dhcp

pause


Dit werkt, en doet wat het doen moet, maar nu komt het, de laatste 2 regels waarin ik eigenlijk probeer te bereiken dat bij het afsluiten van dit scriptje de adapter instellingen weer naar automatisch gaan, dat werkt dus niet.
Als ik dit gebruikt heb zijn daarna alle velden leeg.

Nu is mijn vraag, is het überhaupt mogelijk om dmv die 2 regels de adapter instellingen terug te zetten naar automatisch? Mocht dat mogelijk zijn, wat heb ik hier verkeerd gedaan?

It's 106 miles to Chicago, we got a full tank of gas, half a pack of cigarettes, it's dark... and we're wearing sunglasses.

Beste antwoord (via Franko P. op 21-07-2019 15:17)


  • NLMaca
  • Registratie: Maart 2015
  • Laatst online: 12-05 19:05
@Franko P. Vraag: klopt het dat je geen Gateway en DNS wil instellen? Anders kan ik die er nog bij zetten. Ik gok dat je rechtstreeks connect op het statische ipadres van de machine? Dan is die gateway inderdaad niet nodig.

Net getest en werkt met netsh. Commentaar in de code vind je terug achter REM
De reden waarom je 2 commands niet werkten is, omdat je aan moet geven dat het om ipv4 gaat. ip is het oude commando en je comand niet helemaal klopte. Zie de verschillen op regel 21/22

Ik zet hierna ook nog de adapter uit en weer aan, om zeker te weten dat je dhcp weer opgepakt wordt. regel 25/26

Dit script is een optie. Je zou eventueel ook voor elke klant een eigen script kunnen maken, of dit script uitbreiden met meer klant instellingen. Ik denk dat je vanuit hier wel je weg kunt vinden.
handig: https://michlstechblog.in...ork-settings-using-netsh/

Probeer dit maar eens uit. Wel als administrator draaien. Ik ga er vanuit dat jouw adapter ook Ethernet heet. Indien dit niet het geval is, pas dan de variabele aan op regel 4

Bat bestand: changeNIC.bat
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
@echo off
REM geef de naam op van de netwerkadapter. 
:startScript
set NIC=Ethernet

REM maak een keuze
echo Select task (1: DHCP / 2: customer)
set /p task=

REM navigatie
IF /i "%task%"=="1" goto resetDHCP
IF /i "%task%"=="2" goto setCustomer

REM geen geldig cijfer opgegeven. Return to start
goto :startScript

:resetDHCP
echo settings will be reset to DHCP.. Run a set of commands.

REM onderstaande commando's worden uitgevoerd om adapter weer op DHCP settings te zetten. 
netsh interface ipv4 set address name=%NIC% source=dhcp
netsh interface ipv4 set dns %NIC% dhcp

REM adapter uit- en weer inschakelen om zeker te weten dat DHCP weer werkt
netsh interface set interface %NIC% admin=disable
netsh interface set interface %NIC% admin=enable

echo settings have been reset to DHCP

REM wacht 4 seconden en vraag dan dhcp ipadres op.
timeout /t 4
echo refresh adapter to get current/new ipaddress
netsh interface ipv4 show addresses %NIC%
goto exit

:setCustomer
REM ip en subnet voor klant instellen
echo geef het ipadres op:
set /p ipaddress=
echo geef het subnetmask op:
set /p subnetmask=

netsh interface ipv4 set address name=%NIC% static %ipaddress% %subnetmask%
echo wait for changes to be affected
timeout /t 4
goto exit

:exit
REM einde script
echo press a key to exit the command prompt
pause

paar screenshotjes (heb nog wat tekst wijzigingen gedaan naderhand, maar dit is het resultaat).
Afbeeldingslocatie: https://tweakers.net/ext/f/klecTeCKcnTDhJf5YeIock2Q/full.jpg

Afbeeldingslocatie: https://tweakers.net/ext/f/EHvb9ZyDWlgc9jR5o1nnVKPd/full.jpg

Afbeeldingslocatie: https://tweakers.net/ext/f/aKlauMFdgcV94X2bRG1Z014M/full.jpg

Afbeeldingslocatie: https://tweakers.net/ext/f/eeEoTyAcjeN4YuSZhHCqttgg/full.jpg

Alle reacties


Acties:
  • 0 Henk 'm!

  • Mijzelf
  • Registratie: September 2004
  • Niet online
Misschien met
netsh interface set interface “Ethernet” disabled
netsh interface set interface “Ethernet” enabled

Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Volgens mij moet je je gaan richten op PowerShell, dan wordt er opeens een stuk meer mogelijk.

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • +1 Henk 'm!

  • Rmg
  • Registratie: November 2003
  • Laatst online: 23:04

Rmg

Je moet nog een dhcp request doen. ipconfig /renew naast die laatste 2e regels en je krijgt weer een ip

Acties:
  • 0 Henk 'm!

  • Franko P.
  • Registratie: December 2005
  • Laatst online: 26-04 13:46
Room42 schreef op donderdag 18 juli 2019 @ 20:15:
Volgens mij moet je je gaan richten op PowerShell, dan wordt er opeens een stuk meer mogelijk.
Zou het graag willen, maar ik ben geen programmeur, heb bovenstaande door mezelf dingen aan te leren in elkaar geknutseld.
Denk dat PowerShell iets te hoog gegrepen is voor me. ;)
Rmg schreef op donderdag 18 juli 2019 @ 20:16:
Je moet nog een dhcp request doen. ipconfig /renew naast die laatste 2e regels en je krijgt weer een ip
Geprobeerd, maar dan krijg ik de melding:
Invalid address parameter (ipconfig). It should be a valid IPv4 address.

It's 106 miles to Chicago, we got a full tank of gas, half a pack of cigarettes, it's dark... and we're wearing sunglasses.


Acties:
  • +1 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Franko P. schreef op donderdag 18 juli 2019 @ 22:09:
[...]


Zou het graag willen, maar ik ben geen programmeur, heb bovenstaande door mezelf dingen aan te leren in elkaar geknutseld.
Denk dat PowerShell iets te hoog gegrepen is voor me. ;)
Welnee, het gros van Powershell is al te googlen. En als je IT-er (beheerder) bent, zul je er toch aan moeten ;)
[...]


Geprobeerd, maar dan krijg ik de melding:
Invalid address parameter (ipconfig). It should be a valid IPv4 address.
ipconfig is een op zichzelf staand commando:
ipconfig /renew

Wat @Rmg bedoelt is dat je, naast je netsh commands, ook een ipconfig moet draaien :)

[ Voor 6% gewijzigd door Room42 op 18-07-2019 22:15 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • Franko P.
  • Registratie: December 2005
  • Laatst online: 26-04 13:46
Als ik het als losse regel toevoeg komt er: "DHCP is already enabled on this interface." te staan. Helaas komt dan niet alles op automatisch te staan.
Ik zal eens gaan kijken wat er met Powershell mogelijk is.

It's 106 miles to Chicago, we got a full tank of gas, half a pack of cigarettes, it's dark... and we're wearing sunglasses.


Acties:
  • +1 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Franko P. schreef op donderdag 18 juli 2019 @ 22:20:
Als ik het als losse regel toevoeg komt er: "DHCP is already enabled on this interface." te staan. Helaas komt dan niet alles op automatisch te staan.
Ik zal eens gaan kijken wat er met Powershell mogelijk is.
Kun je eens je volledige output geven? Dus @echo off even weghalen en dan het script draaien?

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • +2 Henk 'm!

  • Henk007
  • Registratie: December 2003
  • Laatst online: 06-04 00:29
In plaats van zelf knutselen zou je ook eens naar kant en klare tooltjes kunnen kijken:
pricewatch: NetSetMan
https://www.netsetman.com/en/freeware
https://github.com/Kurtis...Config/releases/tag/2.9.3

[ Voor 19% gewijzigd door Henk007 op 18-07-2019 22:29 ]


Acties:
  • +1 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
@Henk007 Wat leer je dáár nou van? O-)

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • Franko P.
  • Registratie: December 2005
  • Laatst online: 26-04 13:46
Room42 schreef op donderdag 18 juli 2019 @ 22:22:
[...]

Kun je eens je volledige output geven? Dus @echo off even weghalen en dan het script draaien?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
C:\WINDOWS\system32>echo Please enter the IP to which you want to connect
Please enter the IP to which you want to connect

C:\WINDOWS\system32>set /p ip="IP: "
IP: 1.2.3.4

C:\WINDOWS\system32>netsh interface ip set address name="Ethernet 2" static 1.2.3.4 255.255.255.0


C:\WINDOWS\system32>pause
Press any key to continue . . .

C:\WINDOWS\system32>netsh interface ip set address "Ethernet 2" dhcp
DHCP is already enabled on this interface.


C:\WINDOWS\system32>netsh interface ip set dns "Ethernet 2" dhcp


C:\WINDOWS\system32>pause
Press any key to continue . . .


De naam ethernet is vervangen door ethernet 2 ivm mijn eigen laptop waar ik nu op bezig ben.

It's 106 miles to Chicago, we got a full tank of gas, half a pack of cigarettes, it's dark... and we're wearing sunglasses.


Acties:
  • +1 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
@Franko P. Check voor de 'pause' eens wat de config is. (ipconfig /all of met "netsh interface ipv4 show config")

Ik heb geen Windows-machine bij de hand om te testen, dus ben ook maar even gaan Googlen. Probeer het eens met:

netsh int ipv4 set address name=%interface% source=dhcp
netsh int ipv4 set dnsservers name=%interface% source=dhcp

Overigens stel jij in jouw "netsh interface ip set address name="Ethernet 2" static 1.2.3.4 255.255.255.0" geen default gateway in. Die hoort na je subnet mask te komen. :)

[ Voor 4% gewijzigd door Room42 op 18-07-2019 22:43 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • Beste antwoord
  • +3 Henk 'm!

  • NLMaca
  • Registratie: Maart 2015
  • Laatst online: 12-05 19:05
@Franko P. Vraag: klopt het dat je geen Gateway en DNS wil instellen? Anders kan ik die er nog bij zetten. Ik gok dat je rechtstreeks connect op het statische ipadres van de machine? Dan is die gateway inderdaad niet nodig.

Net getest en werkt met netsh. Commentaar in de code vind je terug achter REM
De reden waarom je 2 commands niet werkten is, omdat je aan moet geven dat het om ipv4 gaat. ip is het oude commando en je comand niet helemaal klopte. Zie de verschillen op regel 21/22

Ik zet hierna ook nog de adapter uit en weer aan, om zeker te weten dat je dhcp weer opgepakt wordt. regel 25/26

Dit script is een optie. Je zou eventueel ook voor elke klant een eigen script kunnen maken, of dit script uitbreiden met meer klant instellingen. Ik denk dat je vanuit hier wel je weg kunt vinden.
handig: https://michlstechblog.in...ork-settings-using-netsh/

Probeer dit maar eens uit. Wel als administrator draaien. Ik ga er vanuit dat jouw adapter ook Ethernet heet. Indien dit niet het geval is, pas dan de variabele aan op regel 4

Bat bestand: changeNIC.bat
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
@echo off
REM geef de naam op van de netwerkadapter. 
:startScript
set NIC=Ethernet

REM maak een keuze
echo Select task (1: DHCP / 2: customer)
set /p task=

REM navigatie
IF /i "%task%"=="1" goto resetDHCP
IF /i "%task%"=="2" goto setCustomer

REM geen geldig cijfer opgegeven. Return to start
goto :startScript

:resetDHCP
echo settings will be reset to DHCP.. Run a set of commands.

REM onderstaande commando's worden uitgevoerd om adapter weer op DHCP settings te zetten. 
netsh interface ipv4 set address name=%NIC% source=dhcp
netsh interface ipv4 set dns %NIC% dhcp

REM adapter uit- en weer inschakelen om zeker te weten dat DHCP weer werkt
netsh interface set interface %NIC% admin=disable
netsh interface set interface %NIC% admin=enable

echo settings have been reset to DHCP

REM wacht 4 seconden en vraag dan dhcp ipadres op.
timeout /t 4
echo refresh adapter to get current/new ipaddress
netsh interface ipv4 show addresses %NIC%
goto exit

:setCustomer
REM ip en subnet voor klant instellen
echo geef het ipadres op:
set /p ipaddress=
echo geef het subnetmask op:
set /p subnetmask=

netsh interface ipv4 set address name=%NIC% static %ipaddress% %subnetmask%
echo wait for changes to be affected
timeout /t 4
goto exit

:exit
REM einde script
echo press a key to exit the command prompt
pause

paar screenshotjes (heb nog wat tekst wijzigingen gedaan naderhand, maar dit is het resultaat).
Afbeeldingslocatie: https://tweakers.net/ext/f/klecTeCKcnTDhJf5YeIock2Q/full.jpg

Afbeeldingslocatie: https://tweakers.net/ext/f/EHvb9ZyDWlgc9jR5o1nnVKPd/full.jpg

Afbeeldingslocatie: https://tweakers.net/ext/f/aKlauMFdgcV94X2bRG1Z014M/full.jpg

Afbeeldingslocatie: https://tweakers.net/ext/f/eeEoTyAcjeN4YuSZhHCqttgg/full.jpg

Acties:
  • +1 Henk 'm!

  • stuiterveer
  • Registratie: April 2014
  • Laatst online: 17:44
Franko P. schreef op donderdag 18 juli 2019 @ 22:09:
[...]


Zou het graag willen, maar ik ben geen programmeur, heb bovenstaande door mezelf dingen aan te leren in elkaar geknutseld.
Denk dat PowerShell iets te hoog gegrepen is voor me. ;)
Leuke protip: open standaard sowieso PowerShell, daarin kun je namelijk ook de normale commando's gebruiken die je in CMD gebruikt en ondertussen ook wat meer proberen met wat geavanceerdere dingen. ;)

Voor de rest moet ik @Room42 wel gelijk geven, CMD is een enorm gestripte versie van DOS (wat wel echt geweldig was, oh mooie tijden waarin het help commando een volledig menu gaf). Maar voor de huidige vraag zal een batch script ook voldoende moeten zijn.

Acties:
  • +3 Henk 'm!

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

stuiterveer schreef op vrijdag 19 juli 2019 @ 09:43:
[...]


Leuke protip: open standaard sowieso PowerShell, daarin kun je namelijk ook de normale commando's gebruiken die je in CMD gebruikt en ondertussen ook wat meer proberen met wat geavanceerdere dingen. ;)

Voor de rest moet ik @Room42 wel gelijk geven, CMD is een enorm gestripte versie van DOS (wat wel echt geweldig was, oh mooie tijden waarin het help commando een volledig menu gaf). Maar voor de huidige vraag zal een batch script ook voldoende moeten zijn.
Elke minuut die je tegenwoordig nog aan batch files besteed is een verloren minuut. De command prompt is dood. Gebruik die tijd om Powershell te leren.

Gebruik Powershell ook als batch files “simpeler” en “goed genoeg” lijken want vrijwel elke batch file wordt later complexer en dan moet je je alsnog in bochten wringen om dingen te doen die in Powershell simpel zijn. Hoe vaak ik al niet begon met een batch file om later alsnog de boel naar Powershell te herschrijven omdat die batch file toch wat complexer werd dan ik eerst dacht. En dan doe je dubbel werk.

En DOS was nooit “geweldig”. De meeste mensen die DOS “geweldig” vinden waren gebruikers van 4DOS, NDOS, DR-DOS, FreeDOS of andere klonen en/of 3rd party tools die DOS bruikbaar maakten. Veel van die mensen hebben alleen niet door dat die tools geen onderdeel van MS-DOS zelf waren.

Acties:
  • 0 Henk 'm!

  • Franko P.
  • Registratie: December 2005
  • Laatst online: 26-04 13:46
NLMaca schreef op vrijdag 19 juli 2019 @ 02:27:
@Franko P. Vraag: klopt het dat je geen Gateway en DNS wil instellen? Anders kan ik die er nog bij zetten. Ik gok dat je rechtstreeks connect op het statische ipadres van de machine? Dan is die gateway inderdaad niet nodig.

Net getest en werkt met netsh. Commentaar in de code vind je terug achter REM
De reden waarom je 2 commands niet werkten is, omdat je aan moet geven dat het om ipv4 gaat. ip is het oude commando en je comand niet helemaal klopte. Zie de verschillen op regel 21/22

Ik zet hierna ook nog de adapter uit en weer aan, om zeker te weten dat je dhcp weer opgepakt wordt. regel 25/26

Dit script is een optie. Je zou eventueel ook voor elke klant een eigen script kunnen maken, of dit script uitbreiden met meer klant instellingen. Ik denk dat je vanuit hier wel je weg kunt vinden.
handig: https://michlstechblog.in...ork-settings-using-netsh/

Probeer dit maar eens uit. Wel als administrator draaien. Ik ga er vanuit dat jouw adapter ook Ethernet heet. Indien dit niet het geval is, pas dan de variabele aan op regel 4

Bat bestand: changeNIC.bat
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
@echo off
REM geef de naam op van de netwerkadapter. 
:startScript
set NIC=Ethernet

REM maak een keuze
echo Select task (1: DHCP / 2: customer)
set /p task=

REM navigatie
IF /i "%task%"=="1" goto resetDHCP
IF /i "%task%"=="2" goto setCustomer

REM geen geldig cijfer opgegeven. Return to start
goto :startScript

:resetDHCP
echo settings will be reset to DHCP.. Run a set of commands.

REM onderstaande commando's worden uitgevoerd om adapter weer op DHCP settings te zetten. 
netsh interface ipv4 set address name=%NIC% source=dhcp
netsh interface ipv4 set dns %NIC% dhcp

REM adapter uit- en weer inschakelen om zeker te weten dat DHCP weer werkt
netsh interface set interface %NIC% admin=disable
netsh interface set interface %NIC% admin=enable

echo settings have been reset to DHCP

REM wacht 4 seconden en vraag dan dhcp ipadres op.
timeout /t 4
echo refresh adapter to get current/new ipaddress
netsh interface ipv4 show addresses %NIC%
goto exit

:setCustomer
REM ip en subnet voor klant instellen
echo geef het ipadres op:
set /p ipaddress=
echo geef het subnetmask op:
set /p subnetmask=

netsh interface ipv4 set address name=%NIC% static %ipaddress% %subnetmask%
echo wait for changes to be affected
timeout /t 4
goto exit

:exit
REM einde script
echo press a key to exit the command prompt
pause

paar screenshotjes (heb nog wat tekst wijzigingen gedaan naderhand, maar dit is het resultaat).
[Afbeelding]

[Afbeelding]

[Afbeelding]

[Afbeelding]
Excuses voor de late reactie, maar heb het erg druk.
Zojuist je bestandje eens laten lopen maar ik heb ergens iets niet goed gedaan denk ik:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Select task (1: DHCP / 2: customer)
1
settings will be reset to DHCP.. Run a set of commands.

Invalid address parameter (2). It should be a valid IPv4 address.

Kan element niet vinden.


2 is not an acceptable value for connect.
De parameter is onjuist.


2 is not an acceptable value for connect.
De parameter is onjuist.


settings have been reset to DHCP

Waiting for 1 seconds, press a key to continue ...

It's 106 miles to Chicago, we got a full tank of gas, half a pack of cigarettes, it's dark... and we're wearing sunglasses.


Acties:
  • +1 Henk 'm!

  • NLMaca
  • Registratie: Maart 2015
  • Laatst online: 12-05 19:05
@Franko P.
trap de commands eens handmatig af dan? Op welk command gaat het fout?
code:
1
2
3
4
5
netsh interface ipv4 set address name=Ethernet source=dhcp
netsh interface ipv4 set dns Ethernet dhcp

netsh interface set interface Ethernet admin=disable
netsh interface set interface Ethernet admin=enable

edit: krijgt je adapter uiteindelijk wel een nieuw ipadres van je router?

[ Voor 10% gewijzigd door NLMaca op 20-07-2019 17:46 . Reden: edit, vraag toegevoegd ]


Acties:
  • 0 Henk 'm!

  • Franko P.
  • Registratie: December 2005
  • Laatst online: 26-04 13:46
Zo, ben weer wat verder.
Als ik de naam in deze regel:
code:
1
set NIC=Ethernet

tussen " " zet werkt het ip adres kiezen en subnet kiezen zoals zou moeten.

code:
1
set NIC="Ethernet"


Zo dus.

Ip adres kiezen werkt ook als er geen netwerk kabel is aangesloten.

Terug naar dhcp werkt alleen als de netwerk kabel aangesloten is.
Dat was dus het probleem waarom het niet werkte. :9
Zoals ik hier en daar lees kan dit ook niet anders.

Ben erg blij met het behaalde resultaat zover, morgen eens gaan testen bij klant.

[ Voor 5% gewijzigd door Franko P. op 21-07-2019 10:28 ]

It's 106 miles to Chicago, we got a full tank of gas, half a pack of cigarettes, it's dark... and we're wearing sunglasses.


Acties:
  • 0 Henk 'm!

  • NLMaca
  • Registratie: Maart 2015
  • Laatst online: 12-05 19:05
@Franko P.
Klopt, voor DHCP moet je eigenlijk wel je kabel aangesloten hebben.

Met het tussen quotes zetten had ik het probleem precies andersom. Maar goed, mooi dat het zo werkt. Succes met testen
Pagina: 1