Asignar unidad de red por IP (3er octeto)

Asignar unidad de red por IP (3er octeto)

Me gustaría asignar la unidad de red correcta (de varias) a una computadora usando la IP asignada por DHCP a través de un script por lotes.

Entonces, cuando la computadora se conecta y, por ejemplo, se le asigna la IP 192.168.1.10 a través de DHCP, debe asignar la unidad de red a 192.168.1.11.

Si la computadora obtiene la IP 192.168.2.10 a través de DHCP, debe asignar la unidad de red a 192.168.2.11. Y así sucesivamente y así sucesivamente.

Por lo tanto, me gustaría asignar la IP correcta del dispositivo de red utilizando el tercer octeto de la IP de la computadora. Las IP de la unidad de red son estáticas. Sólo la IP del ordenador es aleatoria (DHCP) en la red.

Supongo que el guión debería verse así:

  1. comprobar IP --> ipconfig | findstr IPv4 (¿o interfaz de red ""Ethernet"?)
  2. dividir IP en 4 octetos (¿o tokens?)
  3. asignar a una unidad de red específica (¿de una lista?) hasta el 3er octeto --> uso neto z: \PATH-NETWORK-SHARE\FOLDER-NAME

¡Espero que puedas ayudarme aquí!

Muchas gracias de antemano.

Respuesta1

Podrías intentar algo así (suponiendo que cada host tenga solo una dirección IP):

@echo off
set address_begining=192.168
set host_octet=11
set ip_address_string="IPv4 Address"
REM Get IP Address
for /f "usebackq tokens=2 delims=:" %%f in (`ipconfig ^| findstr /c:%ip_address_string%`) do set ip_addr=%%f
REM Get 3rd octet
for /F "tokens=1,2,3,4 delims=." %%a in ('echo %ip_addr%') do set third_octet=%%c
net use z: \\%address_begining%.%third_octet%.%host_octet%

Respuesta2

Recomendaría usar PowerShell, ya que de todos modos viene con Windows y los pasos son bastante sencillos (como lo serían en cualquier lenguaje de programación sensato):

comprobar IP --> ipconfig | findstr IPv4 (¿o interfaz de red ""Ethernet"?)

$result = (Get-NetIPAddress -InterfaceAlias "Ethernet" -AddressFamily IPv4)

$client_addr = $result[0].IPAddress

dividir IP en 4 octetos (¿o tokens?)

$octets = $client_addr.Split(".")

asignar a una unidad de red específica (¿de una lista?) hasta el tercer octeto

Por ejemplo, si el servidor es siempre 192.168.x.11:

# array elements are numbered 0..3
$octets[3] = 11

$server_addr = $octets -join "."

uso neto z: \RUTA-RED-COMPARTIR\NOMBRE-CARPETA

net use Z: "\\$server_addr\The_folder"

información relacionada