Blog — by Andrii Dykhlin

Скрипт для базового збору інформації про систему

Наразі виникло питання про написання невеличкого скрипту, який показує необхідну для підключення інформацію про систему (хостнейм, ім'я користувача та IP адреса системи). Спочатку це було доволі швидко та красиво реалізовано на PowerShell, але оскільки його не всюди активовано, а PowerGUI не захотіло "компілювати" скрипт - було вирішено перевести все в bat-файл. За пропозицією колеги я також додав функцію відкриття файлу після генерації поточної інформації.

Спочатку хотілося додавати всю інформацію в мережеву теку та прохати у користувача номер тікету в системі для легкого сортування, проте потім цю ідею було відкинуто. Не скажу, що поточний варіант ідеальний, проте він працює як слід та створює файл на робочому столі користувача, який запустив скрипт.

Код:

@echo off

title My Info

echo This will generate and open the file MyInfo.txt on your desktop
echo Please share the details from it with your Sysadmin team
pause

set infofile=%UserProfile%‍\Desktop‍\MyInfo.txt
echo|set /p=Hostname:>%infofile%    &hostname>>%infofile%
echo|set /p=Username:>>%infofile%    &whoami>>%infofile%
for /F "tokens=2 delims=:" %%i in ('"ipconfig | findstr IPv4"') do echo|set /p=IP address:>>%infofile%    &echo%%i>>%infofile%

notepad %infofile%

Як ми бачимо - спочатку просто інформація щоб затримати скрипт та користувач міг прочитати що від нього вимагають. Це добра практика, оскільки в такому випадку система затримає запуск notepad.exe

"Це згенерує та відкриє файл MyInfo.txt на вашому робочому столі", "Будь ласка, поділіться деталями з нього з вашою командою сисадмінів".

Краще робити на кількох рядках, класичне вікно cmd має обмеження в кількості символів, а тому звернення може виглядати не дуже красиво.

Ми задаємо змінній infofile шлях до файлу на робочому столі (%UserProfile%‍ - це шлях до теки поточного користувача в C:\\Users\\, а наступною командою гарантуємо, що файл буде перезаписано під час наступного запуску, оскільки там стоїть ">", далі вже ">>", а це - додавання рядків в кінець файлу.

Доволі складний для розуміння фрагмент

Код:

for /F "tokens=2 delims=:" %%i in ('"ipconfig | findstr IPv4"') do echo|set /p=IP address:>>%infofile%    &echo%%i>>%infofile%

Записує у файл всі IPv4 адреси з виводу ipconfig, але оскільки вивід цієї команди містить специфічне форматування, нам необхідно отримати лише число. І власне це ми й отримаємо.

Вживання echo|set /p= замість echo дозволить прописати на одному рядку Hostname та відповідне ім'я машини тощо.

Останній рядок відкриває щойно створений файл, з якого можна легко скопіювати необхідну інформацію.

У моєму випадку 2 адреси через запущений VirtualBox:

myinfo



Прокоментуйте!