[Aporte] Actualizar DDNS con powershell y cURL

Aportes, dudas y guías referidas al software en general. Windows, Linux, MAC OS.
Responder
tomisuka
Nuevo Usuario
Nuevo Usuario
Mensajes: 46
Registrado: Lun May 04, 2009 10:24 am
Ubicación: mnes obera
Agradecido: 0
Agradecimiento recibido: 0

[Aporte] Actualizar DDNS con powershell y cURL

Mensaje por tomisuka »

Hola

La mayoria supongo usa para actualizar los ddns el dynsite,
Adjunto unas lineas en powershell, que cumplen la misma funcion
Si alguien tiene tiempo de mirar las lineas las podemos corregir
Y la idea es mejorarlo entre todos

Si abren el archivo recomiendo el notepad++ o el powergui porque te muesta los bucles y las palabras clave las marca
para mirar el block de notas sirve, pero por ahi podemos poner algun caracter de mas

La configuracio inicial es sencilla hay que poner los datos de las ubicaciones de:

*programa del modem de per5onal,
*descargar el cURL del sitio oficial cURL (Win32 2000/XP 7.21.3 binary SSL enabled) y colocarlo en una carpeta del disco
*colocar los datos de Dynsite (user, pass, nombre ddns)

Dejo parte del codigo de como se ve mas o menos

Código: Seleccionar todo

# datos coneccion ddns
$usuario = "miusuario"
$contrasena = "micontraseña"
$ipletras = "midns"

# si tenes mas de un ddns descomenta la linea de abajo(modificala) y la 149, y comenta la 150
# $ipletrasa = "cyndi.ath.cx" 

#datos coneccion y nombre de modem
$nombreconexion = "mms"
$nombredelmodem = "WAN (PPP/SLIP) Interface"

# ubicacion ejecutables
$personalmente = "C:\Program Files\PER5ONAL\GSM\Per5onal.exe"
$curl = "C:\curl-7.21.3-ssl-sspi-zlib-static-bin-w32\curl.exe"

# mensaje para cada ciclo
$mensajepersonalizado = $ipletras + " es alcansable por ip del modem y por ddns"
en las lineas anteriores se observa lo que modificamos sea nombres o ubicaciones, tiene que quedar entre comillas hay una que esta como ejemplo, no tiene otro valor,  
los nombres de las variables estan con $ por delante, si se modifica el nombre de la variable, se tiene que modificar las ocurrencias en el documento
los comentarios son las lineas que comiezan por # (numeral) esas lineas el interprete las obvia.

para los usuarios de winxp/server tiene que instalar dos cosas el PowerShell de lo posible el 2.0 pero yo uso el 1.0 y anda

powershell

y el rktools (Herramientas del kit de recursos de Windows Server 2003) este unicamente por el comando sleep (pausa de la pila)

kit de recursos

Los usuarios de vista pueden provar el power2.0 si es que no se actualizo solo, los de win 7 no necesitan (ya viene instalado).

para ejecutar el archivo si le das doble click, se abre en el editor, para ejecutarlo se puede desde el editor o sino desde click derecho, > ejecutar con powershell.
Yo en particular lo uso como tarea programada y la sentencia es asi

Código: Seleccionar todo

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe C:\marcar.ps1
el programa del modem es necesario, para el caso que el modem se desconecte y quede como disco usb, si es otra clase de modem hay que ver como expulsar o resetear el puerto usb y el cURL resuelve desde la linea de comando la url de la forma http://$usuario:[email protected] ... $modemenip , para otro ddns habria que ver como es el url, desde el internet explorer seria mas facil como evento, pero desde la actualizacion kb834489 no admite user y pass en el url, y con otro navegador, por ejemplo (gecko) no tiene los eventos com, y el hacer click , asi como el tiempo de respuesta no es seguro

El cURL se puede cambiar por otro que haga lo mismo algun equivalente al wget o unas lineas en visual u otro

Si parece que esta un poco mezclado los idiomas en la linea del ps, sorry lo hice con fragmentos que encontre en internet



para los que no quieran usar el sleep  se puede hacer una funcion de la forma

Código: Seleccionar todo

function pausa {
  param([int]$tiempo = 10)
  Start-Sleep -seconds $tiempo
o usar el comando Start-Sleep -seconds tiempo directamente

si alguien tiene problemas por favor pegue las lineas de error que da el power shell algo como esto

Código: Seleccionar todo

cyndi.ath.cx es ALCANZABLE por ping
Missing statement block after if ( condition ).
At :line:93 char:1
+ $ <<<< contador = 0

Missing statement block after if ( condition ).
At :line:93 char:1
+ $ <<<< contador = 0

iniciando programa modem
Conectando a mms
Se ha discado corectamente la coneccion mms
cyndi.ath.cx es alcansable por ip del modem y por ddns
si en las lineas queda algun dato importante, como usuario y contraseña, cambienlos por letras como xxxxx , etc

Bueno hasta aca, espero que a alguien le sirva

Saludos
No tienes los permisos requeridos para ver los archivos adjuntos a este mensaje.
Última edición por movimientourbano el Sab Ene 01, 2011 7:24 pm, editado 1 vez en total.
Avatar de Usuario
movimientourbano
Moderador Global
Moderador Global
Mensajes: 2314
Registrado: Dom Feb 22, 2009 6:56 pm
Ubicación: Gualeguaychú - Entre Rios
Agradecido: 0
Agradecimiento recibido: 0

Re:Actualizar DDNS con powershell y cURL

Mensaje por movimientourbano »

Lo probaste para corroborar que funciona?
tomisuka
Nuevo Usuario
Nuevo Usuario
Mensajes: 46
Registrado: Lun May 04, 2009 10:24 am
Ubicación: mnes obera
Agradecido: 0
Agradecimiento recibido: 0

Re:Actualizar DDNS con powershell y cURL

Mensaje por tomisuka »

Si, esta es mas o menos la version 3 del script. lo empece para gestionar los cel, y despues empece a tener problemas entre el dynsite y el dyndns, lo testee primero en win 7 y ahora (actualmente) con el server, el que uso yo es mas largo en realidad, porque hace tareas adicionales , basicamente arranca con el SO y levanta unas maquinas virtuales, expulsa el modem y conecta, si modificas las lineas puede gestionar mas modems inclusive o hacer otro tipo de tareas, dentro del bucle, de manera secuencial,
quedo escrito de esa forma, porque me parece mas facil, pero se puede invertir el bucle para el caso que se necesite.
Si el powershell no fue usado en el equipo hay que darle permisos de ejecucion de scripts, no se en que entorno sea ejecutado, pero yo le doy permisos desde la consola con el comando

Código: Seleccionar todo

Set-ExecutionPolicy RemoteSigned 
(Y) o (S) depende del idioma del SO,
yo en la medida que tenga problemas lo voy a ir corrigiendo, pero actualmente en mi sistema, responde bien los errores, por ahi los tiempos se pueden corregir de manera que impacte mas o menos en el equipo, si se reinicia cada 76 horas o cada 1 o 2 dias no usa mucha ram (30 mg),

Imagen

El que esta escrito no da muchos mensajes, porque puede resultar molesto, pero eso y los colores es cuestion de cada uno

Saludos
Responder