Я хочу знать различные методы, которые люди используют для управления инвентаризацией серверов. Что я имею в виду под inventory of servers
это в основном база данных, которая отслеживает основную информацию о серверах, такую как имя хоста, тип ОС, IP-адрес управления.
Несколько решений, которые я могу придумать
Какие еще есть решения? В чем плюсы и минусы этих решений?
Это очень просто, используйте программное обеспечение, которое может сделать это за вас, исходя из моего опыта в этом вопросе, я использовал GLPI, в нем есть вся необходимая информация и многое другое.
Вы можете ввести все данные о сервере, например, RAM, CPU, DISK и т. Д. и добавьте к нему ссылочный идентификатор, какую конфигурацию сети он имеет, кто использует этот сервер.
Вы можете создать учетные записи пользователей, чтобы предупреждать, если с их компьютером что-то не так, отправив заявку в службу поддержки, администратор получит уведомление по электронной почте, чтобы он мог сразу ответить или решить проблему. и у вас будет вся история проблем, связанных с компьютером.
GLPI - это бесплатное программное обеспечение с открытым исходным кодом, оно имеет простой веб-интерфейс, который позволяет легко использовать его даже для неспециалистов.
Я использовал небольшие базы данных или даже файлы csv, при необходимости добавляя интерфейсные интерфейсы. Например, несколько таблиц в базе данных MySQL с некоторым кодом python или php впереди, чтобы обеспечить удобный интерфейс для поиска и изменений.
Конечно, все это требует наличия администратора, который хорошо разбирается в этих инструментах, но это означает, что остальной части пользовательской базы не обязательно: а) знать инструменты, б) иметь прямой доступ к хранилищу данных или в) смотреть на данные так же, как и вы. Вы можете создавать представления только для чтения, добавлять аутентификацию, разрешать удаленный доступ к данным и т. Д. Или вы не можете ничего из этого делать, а просто иметь один файл csv для обслуживания одним человеком. База данных лучше, потому что вы можете добавлять поля, когда они вам нужны, без радикальных изменений в коде интерфейса.
Пожалуйста, попробуйте использовать следующий визуальный базовый сценарий на сервере и вытащите такую информацию, как имя хоста, марка, модель, биоверсия, операционная система, серийный номер, процессор, память и диски в файле .csv. Скопируйте код и сохраните его как файл .vbs. Все, что вам нужно сделать, это изменить 6-ю и 7-ю строки соответствующими путями. Текстовый файл должен иметь имя хоста или полное доменное имя сервера, на котором он будет выполняться.
Надеюсь это поможет.
Option Explicit
Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20
Const PATH_TO_INPUT = "D:\MachineName.txt"
Const PATH_TO_OUTPUT = "D:\MachineInventory.csv"
Dim fso
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Dim shl
Set shl = WScript.CreateObject("WScript.Shell")
Dim input
Set input = fso.OpenTextFile(PATH_TO_INPUT)
Dim output
Set output = fso.CreateTextFile(PATH_TO_OUTPUT, True)
output.WriteLine "Hostname,Serial Number,Make,Model,BIOS Version,Operating System,CPU,Memory (MB),Disk Drives"
Dim wmiService
Dim wmiResults
Dim hostname
Dim make
Dim model
Dim biosversion
Dim operatingSystem
Dim serialNumber
Dim cpu
Dim memory
Dim drives
Dim line
Dim exec
Dim pingResults
While Not input.AtEndOfStream
line = input.ReadLine
hostname = ""
make = ""
model = ""
biosversion = ""
operatingSystem = ""
serialNumber = ""
cpu = ""
memory = ""
drives = ""
Set exec = shl.Exec("ping -n 2 -w 1000 " & line)
pingResults = LCase(exec.StdOut.ReadAll)
If InStr(pingResults, "reply from") Then
On Error Resume Next
Set wmiService = GetObject("winmgmts:\\" & line & "\root\CIMV2")
If Not Err.Number = 0 Then
output.WriteLine line & ",Error: " & Err.Description
WScript.Echo line & ",Error: " & Err.Description
On Error GoTo 0
Else
On Error GoTo 0
hostname = line
Set wmiResults = wmiService.ExecQuery("SELECT * FROM Win32_BIOS", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
Dim item
For Each item In wmiResults
serialNumber = Trim(item.SerialNumber)
biosversion = Trim(item.SMBIOSBIOSVersion)
Next
Set wmiResults = wmiService.ExecQuery("SELECT * FROM Win32_ComputerSystem", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
For Each item In wmiResults
make = Trim(item.Manufacturer)
model = Trim(item.Model)
Next
Set wmiResults = wmiService.ExecQuery("SELECT * FROM Win32_OperatingSystem", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
For Each item In wmiResults
operatingSystem = Trim(item.Name)
operatingSystem = Split(operatingSystem, "|")(0)
memory = Round(Trim(item.TotalVisibleMemorySize) / 1024, 2)
Next
Set wmiResults = wmiService.ExecQuery("SELECT * FROM Win32_Processor", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
For Each item In wmiResults
cpu = Trim(item.Name)
Next
Set wmiResults = wmiService.ExecQuery("SELECT * FROM Win32_LogicalDisk WHERE DriveType=3", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
For Each item In wmiResults
drives = drives & Trim(item.DeviceID) & "" & Round(Trim(item.Size) / (1024^2), 2) & "; "
Next
output.WriteLine hostname & "," & serialNumber & "," & make & "," & model & "," & biosversion & "," & operatingSystem & "," & cpu & "," & memory & "," & drives
End If
Else
output.WriteLine line & ",No Response"
WScript.Echo line & ",No Response"
End If
Wend
output.Close
input.Close
Set wmiService = Nothing
Set wmiresults = Nothing