Help me een uitgebreide serverinventarisatie script te maken
description
Door dit script te gebruiken, kunt u uw serverinventaris effectief beheren, het risico op afwijkingen verminderen en zorgen voor naleving van softwarelicentievereisten.
prompt
try_prompt
Ik wil een Bash- of PowerShell-script ontwikkelen dat me helpt de inventaris van hardware- en softwarecomponenten op mijn servers te beheren. Geef alstublieft het type componenten dat moet worden gevolgd: {{component_types}}. Geef ook ... more
generate_helper
...
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Hieronder vindt u een overzicht van de componenten die u moet volgen en een basisvoorbeeld voor een script dat u kunt aanpassen aan uw behoeften:
Componenten om te volgen:
- Servers
- Routers
- Switches
Frequentie van bijwerken:
- Dagelijks (daily)
Inhoud van het rapport:
- Huidige inventarisstatus
- Eventuele afwijkingen of afwijkingen ten opzichte van de vorige inventaris
Voorbeeld in PowerShell (voor Windows-servers):
```powershell
# Bestandspad voor de inventarisgegevens
$inventoryFile = "C:\Inventaris\inventory.json"
$reportFile = "C:\Inventaris\rapport.txt"
# Functie om hardware- en softwaregegevens te verzamelen
function Get-ServerInfo {
$os = Get-CimInstance Win32_OperatingSystem
$cpu = Get-CimInstance Win32_Processor
$memory = Get-CimInstance Win32_ComputerSystem
$software = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, InstallDate
return @{
Hostname = $env:COMPUTERNAME
OS = $os.Caption
OSVersion = $os.Version
CPU = $cpu.Name
MemoryGB = [math]::Round($memory.TotalPhysicalMemory / 1GB, 2)
Software = $software
Type = "Server"
LastUpdate = Get-Date
}
}
# Functie om netwerkapparaten te verzamelen (vereist SNMP of andere methodes)
# Voorbeeld voor routers/switches zou afhankelijk zijn van je netwerkbeheer
# Hier wordt een placeholder gebruikt
function Get-NetworkDeviceInfo {
param([string]$DeviceType)
# Placeholder voor daadwerkelijke verzameling
return @{
Hostname = "Device$DeviceType"
IP = "192.168.1.1"
Model = "ModelX"
Firmware = "1.0.0"
Type = $DeviceType
LastUpdate = Get-Date
}
}
# Inventaris verzamelen
$inventory = @()
# Voeg server info toe
$inventory += Get-ServerInfo
# Voeg routers en switches toe (voorbeeld)
$inventory += Get-NetworkDeviceInfo -DeviceType "Router"
$inventory += Get-NetworkDeviceInfo -DeviceType "Switch"
# Laad vorige inventaris
if (Test-Path $inventoryFile) {
$prevInventory = Get-Content $inventoryFile | ConvertFrom-Json
} else {
$prevInventory = @()
}
# Detecteer afwijkingen
$afwijkingen = @()
foreach ($item in $inventory) {
$match = $prevInventory | Where-Object { $_.Hostname -eq $item.Hostname }
if ($match) {
# Controleer op verschillen
foreach ($prop in $item.PSObject.Properties.Name) {
if ($match.$prop -ne $item.$prop) {
$afwijkingen += "Afwijking gevonden op $($item.Hostname): $prop is gewijzigd."
}
}
} else {
$afwijkingen += "Nieuw apparaat toegevoegd: $($item.Hostname)."
}
}
# Opslaan van de nieuwe inventaris
$inventory | ConvertTo-Json | Out-File -FilePath $inventoryFile -Encoding UTF8
# Rapport genereren
$rapport = "Inventaris Rapport - $(Get-Date)" + "`n`n"
$rapport += "Huidige status:" + "`n"
$rapport += ($inventory | ConvertTo-Json -Depth 3) + "`n`n"
if ($afwijkingen.Count -gt 0) {
$rapport += "Afwijkingen:" + "`n"
$afwijkingen | ForEach-Object { $rapport += $_ + "`n" }
} else {
$rapport += "Geen afwijkingen gevonden." + "`n"
}
# Rapport opslaan
$rapport | Out-File -FilePath $reportFile -Encoding UTF8
```
U kunt dit script automatiseren door het dagelijks uit te voeren via Windows Taakplanner. Voor Linux-servers zou u een vergelijkbaar Bash-script kunnen maken dat gebruik maakt van tools zoals `lshw`, `dmidecode`, `lsusb`, en andere netwerkbeheerhulpmiddelen.
Heeft u verdere hulp nodig bij het aanpassen of uitbreiden van het script?
provider: deepseek
model: deepseek-chat
Voor uw inventarisbeheer van servers, routers en switches raad ik het volgende aan:
**Te volgen componenten:**
- Servers (fysiek/virtueel)
- Routers
- Switches
**Inventarisatiefrequentie:** Dagelijks
**Aanbevolen scripttype:** PowerShell (vanwege brede ondersteuning voor Windows-omgevingen en betere integratie met netwerkapparatuur via SNMP)
**Componentdetails om bij te houden:**
- Hostnaam/IP-adres
- Type apparaat (server/router/switch)
- Serienummer
- Firmware/OS-versie
- Hardware-specificaties (CPU, RAM, storage)
- Netwerkconfiguratie
- Status (online/offline)
- Laatste onderhoudsdatum
**Scriptfunctionaliteiten:**
1. Automatische detectie van apparaten in het netwerk
2. SNMP-polling voor routers/switches
3. WMI/SSH-verbindingen voor servers
4. Vergelijking met vorige inventaris
5. Rapportage van wijzigingen/afwijkingen
6. Logging van inventarisresultaten
**Rapportage:**
- Overzicht huidige inventaris
- Gewijzigde componenten (markeren)
- Offline apparaten
- Firmware/OS-versie wijzigingen
- Nieuwe/verwijderde apparaten
Het script kan worden gepland via Taakplanner (Windows) of cron (Linux) voor dagelijkse uitvoering. Voor netwerkapparatuur is SNMP-configuratie vereist.

