Пакетный файл для получения системной информации списка удаленных серверов с уникальными учетными данными

4910
user196506

Я не знаком со сценариями. У меня есть задача, которая требует проверки времени простоя сервера, чтобы убедиться, что они действительно были перезагружены, когда они предполагают.

Я просматривал Google Search и нашел идею input.txtфайла, который содержит все имена серверов и output.txtкоторый содержит результат.

Проблема в том, что каждый сервер имеет уникальный общий логин. например, логин есть domain\server1, пароль есть server1domain. Мой входной файл выглядит так:

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

Я хотел бы использовать serverinfo /s | find "uptime" >>c:\output.txt, и output.txtя хотел бы быть:

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

и так до конца input.txtфайла.

Может ли кто-нибудь создать очень простой пакетный файл?

-1
Привет, Бен! Во-первых, добро пожаловать в Super User! Пожалуйста, проверьте ваше форматирование при публикации. Есть окно предварительного просмотра, чтобы показать вам, как будет выглядеть ваш вопрос. Вам необходимо проверить нашу [справку по форматированию] (http://superuser.com/editing-help). Не могли бы вы [отредактировать] свой вопрос и показать нам, что у вас уже есть и где конкретно вы застряли? Не забудьте сделать отступ в 4 пробела (или выделите его и нажмите `Ctrl-K`). slhck 11 лет назад 2

2 ответа на вопрос

0
Ben

Я внес некоторые изменения, надеюсь, это поможет. В настоящее время у меня есть пакетный файл, который я пытался изменить в соответствии со своей средой:

У меня есть input.txt, содержащий список имен моих серверов, где этот цикл выбирает имена серверов строка за строкой. В то же время я пытаюсь использовать уникальные учетные данные для входа в сценарий, поэтому мне не нужно вручную вводить учетные данные для них. Вот мой сценарий. Проблема, с которой я сталкиваюсь, заключается в том, что учетные данные для входа в систему не передаются в качестве значений при выполнении 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  )  

Когда я выполняю этот командный файл, я получаю следующее:

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 . . .  

Я не уверен, почему он не берет значения из переменных в строке systeminfo cmd.

0
Peter van der Struys

This is probably too late for you but should be useful for anyone else looking for something similar, as I was recently...

You are not specifying the correct information in your command line. Also The systeminfo command only has a boot time, not an uptime. That would create an empty file.

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

You can use cut from unixutils to cleanup the file more.