Página 1 de 1

Reseteo de un servidor netbios freenas.org - Discos IP (NAS)

Publicado: 24 Nov 2006, 02:36
por BasicOs
Ahora están de moda las UNIDADES DE DISCO DURO POR RED IP (NAS), Este Script se puede aplicar a otros discos. Lo que hacemos realmente es como entrar como admin y apretar el boton REBOOT.

A veces se necesita resetear el servidor freenas.org, por motivos de desbloquear unas shares o bien compactar una base de datos.
Seguramente no deseas proporcionar la clave de administrador del servidor, ni que arranquen el Explorador (se arranca oculto), tampoco que rellenen el formulario de administrador.
Además la ventaja de este reseteo es que super rápido, e inatendido. Que se reconecta justo en el momento cuando se acaba de desconectar.

Los parametros son:
$usuarionas = "myusuario" ;el que usas para admin de la web nas
$contranas = "mypass" ; el mismo
$claveInterna = "JUAN" ; una clave interna para que te use el programa solo quien tenga la clave
$IpdelServidorNas = "192.168.0.8" ; la ip del servidor
$rutadelServidor = "\\myservidor\Carpeta" ; una carpeta cualquiera del servidor que se usa para comprobar cuando realmente se ha producido la desconexión.

Es posible que si cambian la versión del formulario del freenas hay que ajustar el programa al formulario nuevo o a otra unidad NAS.
(Este script es nivel 7 del uno al 10)
;Author Basicos http://www.autoit.es 29/09/06
Opt("WinWaitDelay", 100)
Opt("WinTitleMatchMode", 1)
Opt("WinDetectHiddenText", 1)
Opt("MouseCoordMode", 0)
#include <IE>
#include <Misc>
;para XP
$usuarionas = "myusuario"
$contranas = "mypass"
$claveInterna = "JUAN"
$IpdelServidorNas = "192.168.0.8"
$rutadelServidor = "\\myservidor\Carpeta"
$acceso = StringUpper(InputBox("Clave", "Acceso a reconectar el servidor freenas", "0", "*"))
$acceso = StringUpper($acceso)
SplashTextOn("Proceso de limpieza", "Proceso de limpieza", 180, 100, 550, 1, 4, "")
If Not ($acceso = $claveInterna) Then
MsgBox(0, "Error en la clave", "Repita clave")
Exit
Else
If MsgBox(1, "Clave Correcta", "Acepte para que se desconecten los pcs del servidor", 40) = 1 Then
Else
MsgBox(0, "Anulado", "Se cancelo la desconexión", 15)
Exit
EndIf
EndIf
$oIE = _IECreate($IpdelServidorNas & "/services_samba.php", 1, _Iif($acceso = "EFL", 1, 0), 0)
If @OSTYPE = "WIN32_NT" Then
$escribecontra = "Conectar a "$IpdelServidorNas
Else
$escribecontra = "Escribir"
EndIf
ControlSetText("Proceso de limpieza", "", "Static1", "Cargando el programa, espere " & $escribecontra)
If WinWait($escribecontra, "", 9) Then
If Not WinActive($escribecontra, "") Then WinActivate($escribecontra, "")
WinWaitActive($escribecontra, "")
ControlSetText($escribecontra, "", _Iif(@OSTYPE = "WIN32_NT", "Edit2", "Edit1"), "admin1")
ControlSetText($escribecontra, "", _Iif(@OSTYPE = "WIN32_NT", "Edit3", "Edit2"), "CEBRIAN24")
Sleep(300)
ControlClick($escribecontra, "", "Button2")
_IELoadWait($oIE)
EndIf
ControlSetText("Proceso de limpieza", "", "Static1", "Cargando procesos")
If WinWait("freenas", "", 9) Then
$oForm = _IEFormGetObjByName($oIE, "iform")
$oButton = _IEFormElementGetObjByName($oForm, "Submit")
$oButton.click
_IELoadWait($oIE)
Sleep(1000)
If StringInStr(_IEBodyReadText($oIE), "applied successfully") <0> 0 Then
ControlSetText("Proceso de limpieza", "", "Static1", "Proceso de reinicio iniciado con exito, Esperando que se reinicie el servidor")
EndIf
EndIf
;VERIFICANDO DESCONEXION PARA LIMPIAR
For $i = 1 To 100
If Not FileExists($rutadelServidor) Then
ControlSetText("Proceso de limpieza", "", "Static1", "Esperando que se apague el servidor num " & $i)
ExitLoop
EndIf
ControlSetText("Proceso de limpieza", "", "Static1", "Apagando" & $i)
Sleep(100)
Next
If WinWait("freenas", "", 9) Then
For $i = 1 To 100
ControlSetText("Proceso de limpieza", "", "Static1", "Esperando que se encienda el servidor")
If FileExists($rutadelServidor) Then
$VentanaUtilidadCompactacion=""
If WinExists($VentanaUtilidadCompactacion) Then
;Si lo desea aqui una rutina de compactación o de arranque de algo ya que el servidor esta recien
;reseteado
EndIf
ControlSetText("Proceso de limpieza", "", "Static1", "Se encendió compactar")
ExitLoop
EndIf
Sleep(100)
Next
Else
MsgBox(0, "Error", "No se cargo el programa, fallo en la limpieza")
EndIf
_IEQuit($oIE)
Exit