Autor
|
Tema: A que lenguaje traduzco un Script hecho en linux (Leído 10,078 veces)
|
desorder
Desconectado
Mensajes: 54
|
Hola Tengo hecho un script en linux que comprueba si un gateway esta funcionando y en caso de que no responda pues el script cambia de gateway.
Lo que quiero es utilizar este Script en windows pero no se en que lenguaje script para windows implementarlo
Tengo conocimientos de VB y estaba animado a hacerlo en VBScript pero por lo que he leido este tipo de lenguaje esta orientado para las paginas html y no se si se puede utilizar si no se embebe en estas paginas
¿Esto es asi?
¿Podriais recomendarme algun lenguaje en el que pueda implementar el script y que no me obligue a instalar nada a mayores en los equipos windows?
Gracias y un saludo
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Vbs se puede usar como un lenguaje independiente de una pagina html.... si te fijas bien, basta con poner msgbox "esto es una prueba" , en cualquier editor de texto, como el notepad, y guardarlo con la extension vbs, y listo... salu2
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
desorder
Desconectado
Mensajes: 54
|
ok, gracias por tu respuesta
Lo intentare hacer entonces con vbscript
salu2
|
|
|
En línea
|
|
|
|
ne0x
Desconectado
Mensajes: 270
|
Un leguaje de scripting mas basico es batch, podrias usar el comando ipconfig, ping y route. Si te entendido bien con estos comandos podras hacer el script que tenias en linux.
Si tengo tiempo lo hare yo y lo posteo, la idea esta bien.
|
|
|
En línea
|
|
|
|
desorder
Desconectado
Mensajes: 54
|
te pego mi codigo por si te sirve de ayuda:
ahi te va:
#! /bin/sh a=0 r1="169.254.0.27" r2="169.254.0.200"
while true do ping -c 4 169.254.1.1 > /dev/null case $? in 0) logger "Hay red, todo Ok" echo "todo ok" a=0;; *) ping -c 4 `route -n | grep UG | awk '{print $2}'` > /dev/null case $? in 0) if [ `route -n | grep UG | awk '{print $2}'` = "$r1" ] then echo "Eliminando 0.27 red interna ok" route del -net `route -n | grep UG | awk '{print $1}'` netmask 255.255.255.0 echo "...eliminada" echo "Añadiendo nuevo GW" route add -net 169.254.1.0 netmask 255.255.255.0 gw 169.254.0.200 echo "Nuevo GW añadido" else echo "Eliminando 0.200" route del -net `route -n | grep UG | awk '{print $1}'` netmask 255.255.255.0 echo "...eliminada" echo "Añadiendo nuevo GW" route add -net 169.254.1.0 netmask 255.255.255.0 gw 169.254.0.27 echo "Nuevo GW añadido" fi;;
*) if [ `route -n | grep UG | awk '{print $2}'` = "$r1" ] then ping -c 4 $r2 > /dev/null
case $? in 0) echo "Eliminando 0.27.Fallo en r1" route del -net `route -n | grep UG | awk '{print $1}'` netmask 255.255.255.0 echo "...eliminada" echo "Añadiendo nuevo GW" route add -net 169.254.1.0 netmask 255.255.255.0 gw $r2 echo "Nuevo GW añadido";;
*) echo "Error en la red interna.";;
esac
else
ping -c 4 $r1 > /dev/null
case $? in 0) echo "Eliminando 0.27.Fallo en r2" route del -net `route -n | grep UG | awk '{print $1}'` netmask 255.255.255.0 echo "...eliminada" echo "Añadiendo nuevo GW" route add -net 169.254.8.0 netmask 255.255.255.0 gw $r1 echo "Nuevo GW añadido";;
*)
echo "Error en la red interna. Revisar Capa fisica";;
esac
fi;;
esac esac
sleep 5
done
Cualquier duda, no dudes en preguntarme
Gracias
|
|
|
En línea
|
|
|
|
ne0x
Desconectado
Mensajes: 270
|
Ya lo tengo casi traducido, pero tengo algunas dudas. ping -c 4 `route -n | grep UG | awk '{print $2}'` > /dev/null Que hace? if [ `route -n | grep UG | awk '{print $2}'` = "$r1" ] Aqui comprueba si algo es igual a la variable $r1, que es ese algo? Es lo unico que me falta por traducir ....
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Bueno, yo tambien lo estaba pasando a vbs........ pero tengo problemas para obtener el gateway actual.... para asi cambiar al otro, segun caso y caso, tengo el code que encontre por ahi, pero no me funciona... igual no me termina de quedar claro el code anterior.... eso me pasa por no adentrarme mas en linux
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
desorder
Desconectado
Mensajes: 54
|
Código: ping -c 4 `route -n | grep UG | awk '{print $2}'` > /dev/null
Esta linea hace un ping al gateway por defecto. Para obtener la ip del gw activo utilizo "route -n | grep UG | awk '{print $2}"
He encontrado un editor llamado VBSEdit y que trae ejemplos ya hechos de como hacer ping y como cambiar el gw Estoy peleandome con esos codigos para ver si lo doy quitado
Ya os comentare
Salu2
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Vbsedit facilita mucho las cosas, no me acordaba de los ejemplos que tenia.. igualmente tengo los codes necesario.. bueno , eso creo, si quieres es mas sencillo explicarte, o armarte tu script a partir de lo que tienes......
salu2
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
ne0x
Desconectado
Mensajes: 270
|
Algo asi.. funciona de manera distinta. @echo off
:: Completar estas variables...
set gw alternativo1= set gw alternativo2=
ping 169.254.1.1 > nul if %errorlevel%==0 ( echo "Todo Ok" echo "Hay red, todo ok >> ruta_log exit /B )
:: Conseguir puerta de enlace...
ipconfig | find "Puerta de enlace predeterminada . . . . . 1" > %TMP%\fr.tmp for /F "tokens=11" %%A IN (%TMP%\fr.tmp) DO set gw actual=%%A
echo Puerta de enlace actual: %gw actual% echo Comprobando disponibilidad... ping %gw actual%
if %errorlevel% NEQ 0 ( echo %gw actual% no disponible) echo Comprobando disponibilidad de puertas de enlace alternativas. ping %gw alternativo1% > nul if %errorlevel%==0 call:ngw %gw alternativo1% ping %gw alternativo2% > nul if %errorlevel%==0 call:ngw %gw alternativo2% ) ELSE ( echo %gw actual disponible% & exit /B )
:ngw route change MASK 255.255.255.0 %1 METRIC métrica IF numero_interfaz echo Puerta de enlace actual %1 ping -n 6 127.0.0.1 > nul exit /B
Tienes que modificar las variables del principio y la función ngw. Lo que hace es un ping a una dirección, si responde bien dice que todo ok, si no, hace un ping al gw actual, si no funciona hace pings a los gw alternativos y si responden usa el comando route para cambiarlos. Habra que usar un ipconfig /release o /renew ???
|
|
|
En línea
|
|
|
|
|
|