Página 1 de 1

[RESUELTO] Ejecutar archivos bat

Publicado: 22 de agosto de 2022 - 13:42
por HugoDams
Buen día,
Estoy usando WAPT 2.2.1, en un entorno completamente Windows.

Quiero ejecutar un archivo .bat con una línea de comando muy simple:

Código: Seleccionar todo

ipconfig /all > Y:\SimonP\MAC\%username%.txt



Aquí está el paquete que puse en marcha (igual de simple):

Código: Seleccionar todo

# -*- coding: utf-8 -*-
from setuphelpers import *

def install():
    run("ipconfig.bat")
Este es el error que me aparece:

Código: Seleccionar todo

*** Remote Interpreter Reinitialized ***
Command Line : install "c:\waptdev\dams-ipconfig_0_PROD-wapt\WAPT\.."
Using config file: C:\Program Files (x86)\wapt\wapt-get.ini
Installing WAPT files c:\waptdev\dams-ipconfig_0_PROD-wapt
2022-08-22 11:47:00,203 CRITICAL Fatal error in install script: CalledProcessErrorOutput: Command 'ipconfig.bat' returned non-zero exit status 1.
Output:
c:\waptdev\dams-ipconfig_0_PROD-wapt>ipconfig /all  1>Y:\SimonP\MAC\h.veyrent.txt 
The system cannot find the path specified.
:
Traceback (most recent call last):
  File "C:\Program Files (x86)\wapt\common.py", line 4035, in install_wapt
    exitstatus = setup.install()
  File "c:\waptdev\dams-ipconfig_0_PROD-wapt\setup.py", line 5, in install
    run("ipconfig.bat")
  File "C:\Program Files (x86)\wapt\common.py", line 3817, in run
    return ensure_unicode(run(*arg, pidlist=self.pidlist,**args))
  File "C:\Program Files (x86)\wapt\waptutils.py", line 2126, in run
    raise CalledProcessErrorOutput(proc.returncode, cmd, ''.join(output))
waptutils.CalledProcessErrorOutput: Command 'ipconfig.bat' returned non-zero exit status 1.
Output:
c:\waptdev\dams-ipconfig_0_PROD-wapt>ipconfig /all  1>Y:\SimonP\MAC\h.veyrent.txt 
The system cannot find the path specified.


FATAL ERROR : CalledProcessErrorOutput: Command 'ipconfig.bat' returned non-zero exit status 1.
Output:
c:\waptdev\dams-ipconfig_0_PROD-wapt>ipconfig /all  1>Y:\SimonP\MAC\h.veyrent.txt 
The system cannot find the path specified.

Exit code:  3
>>> 
No encuentro nada concreto con "Código de salida: 3"...
¿Qué hice mal o qué olvidé?
Coloqué correctamente el archivo .bat en el paquete (como con una instalación .msi o .exe), el archivo .bat iniciado manualmente funciona y envía correctamente el resultado al directorio compartido.

GRACIAS
Buen día,
Hugo

Re: Ejecutar archivos bat

Publicado: 22 de agosto de 2022 - 15:00
por dcardon

Código: Seleccionar todo

c:\waptdev\dams-ipconfig_0_PROD-wapt>ipconfig /all  1>Y:\SimonP\MAC\h.veyrent.txt 
The system cannot find the path specified.
Como indica el mensaje, Y:\ probablemente no existe en el contexto de ejecución.

Atentamente,

Denis

Re: Ejecutar archivos bat

Publicado: 22 de agosto de 2022 - 15:33
por HugoDams
Hola Denis,
Y: es una unidad de red; existe, pero el script necesita crear el archivo de texto a partir del registro del usuario (h.veyrent.txt en mi caso).
Esta unidad es accesible para todos sin restricciones (es nuestra unidad compartida).

Hugo

Re: Ejecutar archivos bat

Publicado: 22 de agosto de 2022 - 15:38
por HugoDams
Me equivoqué, funciona con mi unidad C:\... ¿
Los paquetes no pueden escribir en la red?
Si tienes otra solución para obtener las direcciones MAC de los PC usando el registro de usuario a través de WAPT, te lo agradecería, porque la consola muestra todas las direcciones MAC, pero solo queremos la activa.
Gracias,
Hugo.

Re: Ejecutar archivos bat

Publicado: 22 de agosto de 2022 - 15:56
por dcardon
HugoDams escribió: 22 de agosto de 2022 - 15:38 Mi error, funciona con mi unidad C:\... ¿
Los paquetes no pueden escribir en la red?
El contexto de la cuenta SYSTEM no es el mismo que el del usuario; no tiene conocimiento de Y:\

Puedes montar un lector en el contexto del SISTEMA, pero no es específico de WAPT (y yo diría que no es muy bonito).
Si tenéis otra solución para obtener la dirección MAC de las PCs usando el log de usuarios vía WAPT, soy todo oídos, ya que desde la consola tenemos todas las direcciones MAC pero nos gustaría solo la activa.
En la versión Enterprise puedes utilizar la función de auditoría para recuperar datos periódicamente, como por ejemplo un ipconfig.

En la versión Discovery, si es una necesidad única, puedes crear un paquete con una def install() que inicia la función, recupera el resultado y luego desinstala el paquete.

Atentamente,

Denis