Ir ao conteúdo

Bat Script para capturar o gatway da máquina e executar uma ação de acordo com o val


Ir à solução Resolvido por Nihilzin,

Posts recomendados

Postado

Pessoal, bom dia.

Sou novo aqui no fórum.
Preciso de ajuda pra criar um algoritmo que vai ler o IP da máquina, salvar somente o gatway em uma variável e executar uma condicional após isso.
A condicional seria tipo assim:

Se ( gatway da máquina = 192.168.0.1) então {

Robocopy... 

}

Senao {

Robocopy... 

}

Aqui na empresa nós temos a matriz e uma base de operações em outro lugar, e temos dois servidores com um scopo de IPS diferentes para as duas, por exemplo:

Gatway da matriz = 192.168.0.1
Gatway da base de operações = 192.168.1.1

O que eu quero é executar um script de logon que vai ler o gatway e executar um robocopy de acordo com local onde a pessoa está, para que a cópia seja feita mais rápida e no servidor de origem correto.
O script precisa ser .bat ou .sh pois vou executar por GPO, mas se alguém tiver outra solução melhor podem me falar.

  • Solução
Postado

Imagino que possa ser algo do tipo, claro com isso se assume que o ipconfig vai puxar o gateway, o que pode não ocorrer em certos casos então é bom se atentar a isso, espero ter ajudado.
 

@echo off
setlocal enabledelayedexpansion

rem Obter o IP da máquina
for /f "tokens=2 delims=:" %%a in ('ipconfig ^| find "Gateway"') do (
    set "gateway=%%a"
)

rem Remover espaços em branco no início e no final do IP
set "gateway=!gateway:~1!"

rem Verificar o Gateway e executar o Robocopy conforme necessário
if "%gateway%"=="192.168.0.1" (
    echo Gateway da Matriz detectado. Executando Robocopy para a Matriz...
    rem Adicione aqui o comando Robocopy para a Matriz
) else if "%gateway%"=="192.168.1.1" (
    echo Gateway da Base de Operações detectado. Executando Robocopy para a Base de Operações...
    rem Adicione aqui o comando Robocopy para a Base de Operações
) else (
    echo Gateway desconhecido. Nenhuma ação específica realizada.
)

endlocal

Gateway Reader.txt

  • Curtir 1
Postado

@Wallas Pavão o powershell aceita cmd, e nele existe uma forma de pegar exatamente o gateway.
 

(Get-NetRoute -DestinationPrefix 0.0.0.0/0).NextHop


(claro, isso considerando que seu usuário tenha uma interface de rede apenas, ou apenas uma conectada a um gateway, ou mais de uma para o mesmo gateway.)

aí, seu código fica assim:
 

if ((Get-NetRoute -DestinationPrefix 0.0.0.0/0).NextHop -eq "192.168.0.1"){
# aqui você manda fazer o que quiser
}


-eq significa equal (igual)
 

você pode usar }else{ caso queira que algo seja feito se não for nenhum dos ip's de gateway da sua lista, mas se quiser que ocorra só se for um dos ips, use apenas if.

 

 

if ((Get-NetRoute -DestinationPrefix 0.0.0.0/0).NextHop -eq "192.168.0.1"){
# aqui você manda fazer o que quiser
}
if ((Get-NetRoute -DestinationPrefix 0.0.0.0/0).NextHop -eq "192.168.1.1"){
# aqui você manda fazer o que quiser
}


Se a maquina cliente não permitir scripts com extensão .ps1 que são o padrão do powershell (vem bloqueado por padrão em alguns windows), você pode chamar pelo cmd usando o comando powershell.

 

No cmd, há o route print, que certamente vai mostrar o gateway, mas é difícil como um parto para tratar aquele texto.

 

 

  • Curtir 2
Postado

@Nihilzin Obrigado amigo, seu código funcionou aqui. Eu deixei mais simples, apaguei um "if" e deixei o "else" sozinho.

Ficou assim:

 

@echo off
setlocal enabledelayedexpansion

rem Obter o IP da máquina
for /f "tokens=2 delims=:" %%a in ('ipconfig ^| find "Gateway"') do (
    set "gateway=%%a"
)

rem Remover espaços em branco no início e no final do IP
set "gateway=!gateway:~1!"

rem Verificar o Gateway e executar o Robocopy conforme necessário
if "%gateway%"=="192.168.0.1" (
    echo Gateway da Matriz detectado. Executando Robocopy para a Matriz...
    rem Adicione aqui o comando Robocopy para a Matriz
) else (
    echo Gateway da Base de Operações detectado. Executando Robocopy para a Base de Operações...
    rem Adicione aqui o comando Robocopy para a Base de Operações

 

endlocal

 

Se futuramente abrirmos novas bases e instalarmos novos servidores, vou adicionando no cógido.

valeu mesmo!

@ricardo_br se não fosse nenhum dos dois, ia executar o padrão, que é o "robocopy" para a matriz, mas já consegui resolver com a solução do amigo a cima.

De qualquer forma, obrigado.

@Swalls Obrigado amigo, tentei usar a sua solução mas não consegui fazer funcionar rodando por GPO. Criei um .bat e executei certinho os comandos, mas quando coloco no Logon não funciona, tentei criar um .ps1 e até rodou certinho no Logon, mas a condicional não funcionou.

  • Curtir 2
Postado

@Wallas Pavão @NihilzinPara mim esse código copia para a base de operações sempre independente do gateway....

 

Como o Nihilzin já tinha dito: "claro com isso se assume que o ipconfig vai puxar o gateway, o que pode não ocorrer em certos casos então é bom se atentar a isso"

 

image.png.c16cc2375bb58e2c32f434f1aeb97988.png

Postado

@ricardo_br @Nihilzin eu adaptei o código para a minha estrutura aqui, deixei a condicional somente para o gatway da base de operações. Se o gatway capturado for igual, fará a cópia da base de operações, se for direfente, ou seja, da matriz ou se não for capturado por alguma razão, fará a cópia da matriz.

 

Ficou assim:

 

setlocal enabledelayedexpansion

for /f "tokens=2 delims=:" %%a in ('ipconfig ^| find "Gateway"') do (
    set "gateway=%%a"
)

set "gateway=!gateway:~1!"

if "%gateway%"=="192.168.1.1" (
    robocopy ...
) else (
    robocopy ...

endlocal

 

Exemplo que usei:

 

Gatway da matriz: 192.168.0.1

Gatway da base de operações: 192.168.1.1

 

De qualque forma ele fará o robocopy, o que vai definir a origem da cópia vai ser o Gatway.

 

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...