Visual Basic Script para conocer el propietario de un archivo.

Active Directory, Scripts No hay Comentarios »

Este es un script sencillo que nos permite conocer quien es el propietario de un archivo.

Evidentemente en este script el nombre del archivo va incluido dentro del código pero bien utilizado nos amplia un abanico de posibilidades para catalogar ficheros de un directorio de red u otras características que queramos extraer de las propiedades de un fichero.

On Error Resume Next

strComputer = “.”
Set objWMIService = GetObject(“winmgmts:” _
& “{impersonationLevel=impersonate}!\\” & strComputer & “\root\cimv2″)

strFile = “P:\EUROCAJA.XLS” ‘El fichero, cámbialo por lo que quieras

Set colItems = objWMIService.ExecQuery _
(“ASSOCIATORS OF {Win32_LogicalFileSecuritySetting=’” & strFile & “‘}” _
& ” WHERE AssocClass=Win32_LogicalFileOwner ResultRole=Owner”)

For Each objItem in colItems
Wscript.Echo objItem.ReferencedDomainName
Wscript.Echo objItem.AccountName
Next

Copiar el código, pegarlo en un documento de notepad (por ejemplo) y guardarlo como FileOwner.vbs

Solucion al error 0×80041014 de Visual Basic Script

Scripts 1 Comentario »

Aquí dejo este pequeño post con contenido importante sobre este error.

En los usuarios tengo un acceso directo en el escritorio que apunta a un vbs en el que se realizan una serie de tareas y en algún que otro ordenador me daba el error del titulo.

En concreto en la función que llamaba de la siguiente manera.

If IsRunning("wscript.exe") Then
WScript.Echo "La aplicación ya esta ejecutándose, espere a que termine."
WScript.Quit
End If

El motivo de la función es el destinado a esos usuarios que se impacientan y pulsan 50 veces por segundo el icono de la aplicación porque no ven que ésta “arranque”. No son capaces de pensar que por detrás puede estar haciendo otras funciones antes de mostrar el formulario de Login a la aplicación.

La función:

Function IsRunning(strName)
Set objWMI = GetObject("winmgmts:\\.\root\cimv2")
Set colProcesses = objWMI.ExecQuery("Select * From Win32_Process " & _
"Where Caption = '" & strName & "'")
If colProcesses.Count > 1 Then 'cuento que exista mas de un proceso wscript ejecutandose
IsRunning = True
Else
IsRunning = False
End If
End Function

El error era marcado en la primera linea de la función.

Pues después de probar y probar resulta que según parece este error es causado por el incorrecto registro de algunas dlls implicadas.

Para solucionarlo solo hay que abrir una ventana de comandos de msdos e irse hasta %windir%\System32\Wbem y cuando estemos con el prompt allí escribimos:

for %i in (*.dll) do regsvr32 -s %i

Esto registra de nuevo en modo silencioso todas las dlls de ese directorio y acaba con el problema.

Conectarte por SSH, SFTP o SCP sin password

Scripts, Ubuntu 1 Comentario »

Para realizar scripts que se ejecuten automáticamente con un cron nos puede ser muy útil hacer una conexión por ssh, sftp o scp sin contraseña ya que el hecho de que te pregunte la contraseña hace que no se puedan automatizar labores sin intervención humana.

Este artículo describe la forma de conectarse entre dos máquinas con seguridad y sin solicitar la contraseña.

Esto se hace a través de las claves RSA. Las podemos crear con el comando:

$ ssh-keygen -t rsa

Esto nos generará dos archivos, “id_rsa.pub” e” id_rsd”. Ahora hemos de copiar el contenido del archivo “id_rsa.pub” (clave pública como indica su extensión) al servidor de destino y al archivo authorized_keys dentro de ~/.ssh/.

Primero copiamos el archivo al servidor de destino con scp o sftp. Por ejemplo:

$ sftp usuarioremoto@servidordestino
(debemos introducir la contraseña por última vez)
$put id_rsa.pub
$mv id_rsa.pub .ssh/authorized_keys

(si no existe el directorio .ssh en el servidor de destino podemos crearlo)

Si el archivo “authorized_keys” existe significa que ya había otras relaciones de confianza. Entonces tendremos que añadir el contenido de id_rsa.pub al archivo existente con el comando:

$ cat id_rsa.pub >> .ssh/authorized_keys

Esto es todo. Ya podemos ejecutar comandos sin introducir la contraseña.

Para comprobar que está todo correcto puedes ejecutar:

$ ssh usuarioremoto@servidordestino uname -a

y ya no debe pedirte contraseña alguna.

Ejecutar un shutdown, reboot o halt con sudo sin introducir password

Scripts, Ubuntu No hay Comentarios »

Andaba hace tiempo detrás de esta manera de poder ejecutar remotamente un shutdown -h now.

Mi intento está basado en un script que me realizaba una serie de copias de seguridad y las alojaba en un servidor remoto en mi casa, Me faltaba este pequeño paso pero que me tenia amargado. Se trata de que después de hacer las distintas copias de seguridad, subirlas al servidor de mi casa y al termino necesitaba que el servidor alojado en mi casa se apagase después de haber terminado de subir el backup.

No voy a detallar el script porque no viene al caso. Evidentemente para la conexión remota en mi casa utilicé las claves publicas y privadas, de esta forma no es necesario introducir la contraseña y puede hacerse un script bash (sh) para que no sea necesaria la intervención humana.

Hasta que di con esta solución, el servidor de mi casa permanecía encendido hasta que por la mañana lo apagaba con el sudo shutdown -h now que inevitablemente me pedia la contraseña de sudo.

Asi de sencillos son los pasos:

  1. Usa el comando: $ sudo visudo
  2. Busca la linea que pone "# User alias specification" y añade tu usuario que tendrá ese privilegio. La linea quedará:
    #User alias specification
    User_Alias USERS = tuusuario
  3. Ahora busca la linea # Cmnd alias specification" y añade una lista de comando como la siguiente:
    # Cmnd alias specification
    Cmnd_Alias SHUTDOWN_CMDS = /sbin/shutdown, /sbin/reboot, /sbin/halt
  4. Ahora busca la linea que contiene "%admin ALL=(ALL) ALL" y añade el comando SHUTDOWN_CMDS que dejarás al usuario ejecutar sin contraseña de la siguiente manera:
    %admin ALL=(ALL) ALL
    USERS ALL=(ALL) NOPASSWD: SHUTDOWN_CMDS

Ya no te preguntará la contraseña de sudo para ese usuario.

Puedes añadir el privilegio a mas usuarios añadelos después de tuusuario (en el punto 2) con una coma de la forma:
User_Alias USERS = tuusuario, otro_usuario

Después de esto, al poner en mi script remoto "ssh tuusuario@servidor sudo shutdown -h now" se apaga el servidor sin solicitar la contraseña de sudo y hace posible el apagado remoto.

WP Theme & Icons originales por N.Design Studio.
Aviso Legal Entradas RSS Comentarios RSS Acceder