Archivo por lotes para obtener información del sistema de la lista de servidores remotos con credenciales de inicio de sesión únicas

Archivo por lotes para obtener información del sistema de la lista de servidores remotos con credenciales de inicio de sesión únicas

No estoy familiarizado con las secuencias de comandos. Tengo una tarea entre manos que requiere verificar los tiempos de actividad del servidor para asegurarme de si realmente se reiniciaron cuando se supone que deben hacerlo.

Estaba revisando la Búsqueda de Google y encontré una idea de un input.txtarchivo que contiene todos los nombres de los servidores y output.txtque contiene el resultado.

El problema es que cada servidor tiene un inicio de sesión general único. Por ejemplo, el nombre de inicio de sesión es domain\server1y la contraseña es server1domain. Mi archivo de entrada es como:

domain\server1, server1domain
domain\server2, server2domain
domain\sevrer3, server3domain

Me gustaría usar serverinfo /s | find "uptime" >>c:\output.txty output.txtme gustaría ser:

domain\server1      uptime   <uptime of server>
domain\server2      uptime   <uptime of server>
domain\server3      uptime   <uptime of server>

y así sucesivamente hasta el final del input.txtarchivo.

¿Alguien podría crear un archivo por lotes muy básico?

Respuesta1

He hecho algunos cambios, espero que ayude. Lo que tengo en este momento es un archivo por lotes que intenté modificar según mi entorno:

Tengo un input.txt que contiene una lista de los nombres de mis servidores, donde este bucle recoge los nombres de los servidores línea tras línea. Al mismo tiempo, estoy intentando tener credenciales de inicio de sesión únicas dentro del script, de esta manera no tendré que ingresar manualmente las credenciales de inicio de sesión. Aquí está mi guión. El problema al que me enfrento es que las credenciales de inicio de sesión no se pasan como valores cuando se ejecuta systeminfo.exe.

for /f "delims=" %%a in (c:\Uptime\Input.txt) do (  
    echo %%a  
    set x=yellow  
    set login=%x%%%a  
    set pwd=%%a%x%  
    echo %login% pwd %pwd%  
    systeminfo /s %%a /u %login% /p %pwd% | find "System Up Time" >> c:\Uptime\A.txt  
    pause  
)  

Cuando ejecuto este archivo por lotes, obtengo lo siguiente:

C:\Uptime>(  
echo Server1  
 set x=yellow  
 set login=Server1 <- it should be: yellowServer1  
 set pwd=Server1  <- it should be: Server1yellow  
 echo  pwd <- not showing the values of variables from above, should be: yellowServer1 Server1yellow  
 systeminfo /s Server1 /u  /p    | find "System Up Time"  1>>c:\Uptime\A.txt  
 pause  
)  
Server1  
 pwd  
ERROR: Invalid Syntax. Value expected for '/u'.  
Type "SYSTEMINFO /?" for usage.  
Press any key to continue . . .  

No estoy seguro de por qué no toma los valores de las variables en la línea cmd de información del sistema.

Respuesta2

Probablemente sea demasiado tarde para usted, pero debería ser útil para cualquiera que busque algo similar, como lo hice yo recientemente...

No estás especificando la información correcta en tu línea de comando. Además, el systeminfocomando solo tiene un tiempo de inicio, no un tiempo de actividad. Eso crearía un archivo vacío.

systeminfo /s Server1 /u %login%  /p %pwd%   | find "System Boot Time"  >> c:\Uptime\A.txt

Puede utilizar cutfrom unixutilspara limpiar más el archivo.

información relacionada