Apagado automático en un script.

Todo bien.

Necesito crear un script que apague automáticamente un equipo después de que no sea devuelto un ping.

Ejemplo:

Hago ping a la ip 192.168.1.1 si no se me contesta el ping, entonces que se apague automáticamente el equipo con un init 0.

El asunto es que el anterior ejemplo se haga en un script, luego yo lo introduzco en el cron del equipo.

2 Respuestas

Respuesta
1

Para ayudarte de mejor manera, podrías detallar que sistema operativo usas.

Si claro, ubuntu 10.04 desktop.

'Este script sirve para apagar una lista de equipos remotos
'listados en un archivo de texto en grupos de dos lineas
'primera linea el nombre del equipo
'segunda linea la ip del equipo
'(c) Juansa 9-10-2008
Function fl_responde_al_ping (StrEquipo)
'aquí intentaremos comprobar que el equipo está conectado
'mediante un ping a su IP.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPingedComputers = objWMIService.ExecQuery _
("Select * from Win32_PingStatus Where Address = '" & StrEquipo & "'")
For Each objComputer in colPingedComputers
If objComputer.StatusCode = 0 Then
fl_responde_al_ping = True
Else
fl_responde_al_ping = false
End If
Next
End Function
'cuerpo del script
Const ForReading = 1, ForWriting = 2
Dim TabStop, NewLine
TabStop = Chr(9)
NewLine = Chr(10)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFSO2 = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\scripts\juansa.txt", ForReading)
Set objFile2 = objFSO2.OpenTextFile("C:\scripts\LogApagados.txt", ForWriting, True)
Do Until objFile.AtEndOfStream
StrEquipo = objFile.ReadLine
StrIP = objFile.ReadLine
If fl_responde_al_ping(StrIP) then
Wscript.Echo StrEquipo & " responde. Se intentará realizar el apagado."
objFile2.WriteLine Date & TabStop & StrIP & TabStop & StrEquipo & TabStop & "APAGADO"
'establecemos control de errores
On Error Resume Next
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Shutdown)}!\\" & StrEquipo & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
ObjOperatingSystem.Win32Shutdown(1)
Next
if Err.Number <> 0 Then
'mostramos el error o lo guardamos en el log
WScript.Echo vbCrLf & vbCrLf & _
Err.Number & ": " & Err.Description
objFile2.WriteLine Date & TabStop & StrIP & StrEquipo & TabStop & "Hay un Error!" & Err.Number & ": " & Err.Description
'vaciamos el objeto Err
Err.Clear
end if
else
Wscript.Echo StrEquipo & " NO responde. Se saltará éste equipo del apagado."
objFile2.WriteLine Date & TabStop & StrIP & TabStop & StrEquipo & TabStop & " NO APAGADO"
end if
Loop
ObjFile2. Close
ObjFile. Close
Wscript. Echo "Puedes comprobar el Log en C:\scripts\LogApagados.txt"
----------------
Lo que tienen los archivos:
C:\scripts\juansa.txt
juansa
192.168.0.10
ONO
192.168.0.1
Noexiste
192.168.0.11
C:\scripts\LogApagados
09/10/2008 192.168.0.10 juansa APAGADO
09/10/2008 192.168.0.1 ONO APAGADO
09/10/2008 192.168.0.11 Noexiste NO APAGADO

Ojala te sirva.

Respuesta

Slds. Estoy interesado en el mismo script pero para debían wheezy 7, es decir que:

1ro Realice ping a una determinada ip cada cierto tiempo

2do Si el ping es negativo que apague el equipo, si es positivo que continué haciendo ping

3ro. Que todos los archivos necesario la programación sean almacenados en una determinada carpeta como por ejemplo /var o /etc

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas