我想知道人们用来pipe理服务器库存的各种不同的做法。 我的意思inventory of servers的inventory of servers基本上是跟踪主机名,OStypes,pipe理IP地址等服务器基本信息的数据库。
一些我能想到的解决scheme
什么是其他解决scheme? 这些解决scheme的优点和缺点是什么?
这很简单,使用一个可以为你做的软件,从我在这个问题上的经验,我使用了GLPI ,它得到了所有你可能需要的细节和更多。
您可以input有关服务器的所有详细信息,例如RAM,CPU,DISK等。 并添加一个参考ID,它有什么networkingconfiguration,谁使用该服务器。
您可以通过提交支持凭单来创build用户帐户,以便在其计算机出现问题时发出警报,pipe理员将通过电子邮件通知他,以便他可以立即回答问题或解决问题。 你将拥有与电脑有关的所有问题的历史。
GLPI是免费的开源软件,它有一个简单的网页界面,即使非技术使用它也很容易。
我已经使用了小型数据库甚至csv文件,并根据需要添加了前端界面。 例如,MySQL数据库中的一些表格前面带有一些python或php代码,为search和修改提供了一个用户友好的界面。
当然,这一切都需要pipe理员熟悉这些工具,但这意味着其余的用户基础不需要a)知道工具,b)可以直接访问数据存储,或c)查看数据和你一样。 您可以创build只读视图,添加身份validation,允许远程访问数据等。您也可以不做任何操作,只需要一个人员可以维护一个csv文件。 数据库更好,因为您可以在需要时添加字段,而无需对接口代码进行剧烈的更改。
请尝试在服务器上使用以下可视基本脚本,并在.csv文件中提取诸如主机名,品牌,型号,生物转换,操作系统,序列号,CPU,内存和磁盘驱动器等信息。 复制代码并将其保存为.vbs文件。 所有你需要做的是,用相应的path修改第6和第7行。 该文本文件必须具有将要执行的服务器的主机名或FQDN名称。
希望这可以帮助。
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