Stránka 1 z 1

jak napsat script pro změnu ip adresy

Napsal: 02 srp 2019 16:04
od ciscotomas
Dobrý den, dnes jsem zkoušel změnit si ip adresu pomocí scriptu. Když otevřu příkazový řádek jako správce zadám příkaz ->netsh a potom zadám například: interface ip set address name = "Ethernet" static 192.168.10.20 255.255.255.0 192.168.1.1 tak mi to změní ip adresu potom když zadám interface ip set dns "Ethernet" static 193.85.1.100 primary tak mi to sice změní jen jedno dns a to druhé nastavit nejde, ale funguje to. Problém přichází ve chvíli kdy se z toho snažím udělat soubor .bat a spustit to najednou. V poznámkovém bloku to napíšu takto
@echo off

netsh
interface ip set address name = "Ethernet" static 192.168.10.20 255.255.255.0 192.168.1.1
interface ip set dns "Ethernet" static 193.85.1.100 primary
PAUSE


ale vždy se provede jen ta první akce a to, že se to dostane do toho modu netsh. Nějaké rady jak by to mělo být správně popřípadě jiný způsob, budu rád za jakékoliv rady.

Re: jak napsat script pro změnu ip adresy

Napsal: 02 srp 2019 16:37
od Uziv00
Vítej na PC-HELP!
netsh dnsclient add dnsserver "Ethernet" address=192.168.1.4 1
netsh dnsclient add dnsserver "Ethernet" address=192.168.1.5 2
ke druhému problému - netsh musí být na každém řádku. BAT neumí pracovat v interaktivním režimu.
Abych řekl pravdu, nemám to ověřeno...
Používám tyto příkazy ve vbs:

Kód: Vybrat vše

Set objShell = WScript.CreateObject("WScript.Shell")
strRun = "%COMSPEC% /c netsh int ipv4 set address name=" & Chr(34) & "Připojení k místní síti" & Chr(34) & " static 192.168.1.106 255.255.255.0 192.168.1.1 1"
objShell.Run strRun,,True
strRun = "%COMSPEC% /c netsh dnsclient add dnsserver " & Chr(34) & "Připojení k místní síti" & Chr(34) & " address=192.168.1.4 1"
objShell.Run strRun,,True
strRun = "%COMSPEC% /c netsh dnsclient add dnsserver " & Chr(34) & "Připojení k místní síti" & Chr(34) & " address=192.168.1.5 2"
objShell.Run strRun,,True


Dodatečně přidáno po 11 minutách 2 vteřinách:
A měl by fungovat i tento skript ve vbs:

Kód: Vybrat vše

strComputer = "."
arrIPAddress = Array("192.168.1.106")
arrSubNetMask = Array("255.255.255.0")
arrGateway = Array("192.168.1.1")
arrDNS = Array("192.168.1.4", "192.168.1.5")

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration WHERE MACAddress='D4:4A:3E:92:FD:29'")
For Each objItem in colItems
  intValue = objItem.EnableStatic(arrIPAddress, arrSubNetMask)
  intValue = objItem.SetGateways(arrGateway)
  intValue = objItem.SetDNSServerSearchOrder(arrDNSServers)
Next

Je to vázáno přímo na MAC adresu, takže se to nesplete :-)

Re: jak napsat script pro změnu ip adresy

Napsal: 02 srp 2019 16:51
od petr22
Tvuj problem byl ten ze to delalo presne to, co jsi zadal, a ne to co chces.

BAT soubor funguje tak, ze spusti to co mas na radku a dokud to neukoncis
tak se nepohne dal.

Tedy prvnim radkem jsi spustil netsh - a nezavrel ho. Uz je jasne, proc to neslo ?

Spravne reseni viz vyse, na kazdem radku musi byt cely prikaz netsh.

Re: jak napsat script pro změnu ip adresy

Napsal: 02 srp 2019 17:07
od Uziv00
A ještě doplním - tvé příkazy pro dns by mohly vypadat takto:
netsh interface ip set dns name="Local Area Connection" source=static addr=202.138.18.2 register=PRIMARY
netsh interface ip add dns name="Local Area Connection" addr=10.255.255.20 index=2
Můžeš vyzkoušet :-)

Re: jak napsat script pro změnu ip adresy

Napsal: 05 srp 2019 16:31
od ciscotomas
ITCrowd píše:A ještě doplním - tvé příkazy pro dns by mohly vypadat takto:
netsh interface ip set dns name="Local Area Connection" source=static addr=202.138.18.2 register=PRIMARY
netsh interface ip add dns name="Local Area Connection" addr=10.255.255.20 index=2
Můžeš vyzkoušet :-)

Tyto 2 příkazy fungují skvěle, nastaví jak primární DNS tak druhou. Ale když jsem se snažil ve .vbs tak mi to nějak nešlo, ještě to nějak prozkouším, ale provizorně budu používat
netsh interface ip set address name = "Ethernet" static 192.168.10.20 255.255.255.0 192.168.1.1
netsh interface ip set dns name="Ethernet" source=static addr=202.138.18.2 register=PRIMARY
netsh interface ip add dns name="Ethernet" addr=10.255.255.20 index=2
PAUSE

Moc děkuji za odpovědi