Files
atap/ATAPAuditor/Helpers/LinuxHelper.ps1
T
2026-05-11 09:15:08 +02:00

107 lines
2.5 KiB
PowerShell

$script:LinuxDistroId = $null
$rcTrue = "True"
$rcCompliant = "Compliant"
$rcFalse = "False"
$rcNone = "None"
$rcNonCompliant = "Non-Compliant"
$rcNonCompliantManualReviewRequired = "Manual review required"
$rcCompliantIPv6isDisabled = "IPv6 is disabled"
if (Test-Path "/etc/os-release") {
$osRelease = @{}
Get-Content "/etc/os-release" | ForEach-Object {
if ($_ -match "^(?<key>\w+)=(?<val>.+)$") {
$osRelease[$matches.key] = $matches.val.Trim('"')
}
}
$script:LinuxDistroId = $osRelease["ID"]
if (-not $script:LinuxDistroId) {
throw "Could not detect Linux distribution from /etc/os-release"
}
switch ($script:LinuxDistroId) {
"ubuntu" {}
"debian" {}
"rhel" {}
"centos" {}
"fedora" {}
"opensuse" {}
default {
throw "Unsupported Linux distribution: $script:LinuxDistroId"
}
}
Write-Verbose "Detected $script:LinuxDistroId"
} else {
throw "/etc/os-release not found. Cannot detect Linux distribution."
}
function Test-PackageInstalled {
param (
[Parameter(Mandatory = $true)]
[string]$PackageName
)
switch ($script:LinuxDistroId) {
"ubuntu"
{
dpkg-query -W -f='${db:Status-Abbrev}' $PackageName 2>/dev/null | Out-Null
return ($LASTEXITCODE -eq 0)
}
"debian"
{
dpkg-query -W -f='${db:Status-Abbrev}' $PackageName 2>/dev/null | Out-Null
return ($LASTEXITCODE -eq 0)
}
"rhel"
{
rpm -q $PackageName >/dev/null 2>&1
return ($LASTEXITCODE -eq 0)
}
"centos"
{
rpm -q $PackageName >/dev/null 2>&1
return ($LASTEXITCODE -eq 0)
}
"fedora"
{
rpm -q $PackageName >/dev/null 2>&1
return ($LASTEXITCODE -eq 0)
}
"opensuse"
{
rpm -q $PackageName >/dev/null 2>&1
return ($LASTEXITCODE -eq 0)
}
default
{ throw "Unexpected distro in module runtime: $script:LinuxDistroId" }
}
}
function Test-ServiceActiveOrEnabled {
param (
[Parameter(Mandatory = $true)]
[string]$ServiceName
)
# Check if the service is active
systemctl is-active --quiet $ServiceName
$isActive = ($LASTEXITCODE -eq 0)
# Check if the service is enabled
systemctl is-enabled --quiet $ServiceName
$isEnabled = ($LASTEXITCODE -eq 0)
return ($isActive -or $isEnabled)
}