Hi RZR,
this was too obvious for me ;-) Thank you very much, with your tip i will get further...
Kind regards
Alex
this was too obvious for me ;-) Thank you very much, with your tip i will get further...
Kind regards
Alex
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
Show posts Menu
$OpnSenseCredentials = @{
'os1.irgendwo.local' = @{
UrlPort = '443'
ApiKey = 'Viele Zeichen und Buchstaben'
ApiSecret = 'Viele Zeichen und Buchstaben'
}
'os2.irgendwo.local' = @{
UrlPort = '443'
ApiKey = 'Viele Zeichen und Buchstaben'
ApiSecret = 'Viele Zeichen und Buchstaben'
}
'os3.irgendwo.local' = @{
UrlPort = '443'
ApiKey = 'Viele Zeichen und Buchstaben'
ApiSecret = 'Viele Zeichen und Buchstaben'
}
'os4.irgendwo.local' = @{
UrlPort = '443344'
ApiKey = 'Viele Zeichen und Buchstaben'
ApiSecret = 'Viele Zeichen und Buchstaben'
}
'os5.irgendwo.local' = @{
UrlPort = '443'
ApiKey = 'Viele Zeichen und Buchstaben'
ApiSecret = 'Viele Zeichen und Buchstaben'
}
}
# Das Ziel der Backups
$BackupDestination = "\\Backup_Server\Backup_Dir"
# E-Mail Sachen
$EmailSmtpServer = "mailer.irgendwo.local"
$EmailEmpfaenger = "admin@irgendwo.com"
$EmailSender = "dersender@irgendwo.com"
$EmailBetreff = "Backup-Script fuer OPNsense: "
$EmailText = "Folgendes ist aufgetreten:"
# Wie viele Backups pro Host behalten wir?
$AnzahlBackupsBehalten = 10
# Eine E-MAil-Versendefunktion
function SendMyMail {
Send-MailMessage -From $EmailSender -to $EmailEmpfaenger -Subject $EmailBetreff -Body $EmailText -SmtpServer $EmailSmtpServer
}
# Wir wollen in das $BackupDestination wechseln. Wenn nicht E-Mail und raus...
try {
Set-Location -Path $BackupDestination -ErrorAction Stop
}
catch {
$EmailBetreff = $EmailBetreff + "Fehler, kein Backup erstellt"
$EmailText = @"
Das Backup-Script konnte nicht in das Arbeitsverzeichnis wechseln.
"@
SendMyMail
exit 1
}
foreach ( $OpnSenseHost in $OpnSenseCredentials.Keys) {
$BackupDestinationHostDir = "$BackupDestination" + "\" + "$OpnSenseHost"
if ( -not (test-path -Path "$BackupDestinationHostDir" )) {
try {
New-Item -Path "$BackupDestinationHostDir" -ItemType Directory -ErrorAction Stop
}
catch {
$EmailBetreff = $EmailBetreff + "Fehler, kein Backup erstellt"
$EmailText = @"
Das Backup-Script konnte kein Unterverzeichnis erstellen. Das Backup File wurde NICHT
von \"$OpnSenseHost\" heruntergeladen!
"@
SendMyMail
continue
}
}
try {
Set-Location -Path $BackupDestinationHostDir -ErrorAction Stop
}
catch {
$EmailBetreff = $EmailBetreff + "Fehler, kein Backup erstellt"
$EmailText = @"
Das Backup-Script konnte nicht in das Arbeitsverzeichnis wechseln. Das Backup File wurde NICHT
von \"$OpnSenseHost\" heruntergeladen!
"@
SendMyMail
continue
}
$ApiCredentialPair = $OpnSenseCredentials[$OpnSenseHost]['ApiKey'] + ":" + $OpnSenseCredentials[$OpnSenseHost]['ApiSecret']
$Bytes = [System.Text.Encoding]::ASCII.GetBytes($ApiCredentialPair)
$Base64Coded = [System.Convert]::ToBase64String($Bytes)
$BasicAuthValue = "Basic $Base64Coded"
$Headers = @{ Authorization = $BasicAuthValue }
$Uri = "https://" + $OpnSenseHost + ":" + $($OpnSenseCredentials[$OpnSenseHost]['UrlPort']) + "/api/backup/backup/download"
try {
invoke-webrequest -uri $Uri -Headers $Headers -OutFile config.xml
}
catch {
$EmailBetreff = $EmailBetreff + "Fehler, kein Backup erstellt"
$EmailText = @"
Fehler beim web-request. Das Backup File wurde NICHT
von \"$OpnSenseHost\" heruntergeladen!
"@
SendMyMail
continue
}
Rename-Item config.xml backup_$(get-date -Format yyyyMMddhhmmss).xml
$AnzahlBackupDateien = $(Get-ChildItem -Path backup_??????????????.xml | measure-object).count
while ($AnzahlBackupDateien -gt $AnzahlBackupsBehalten) {
Get-ChildItem -Path backup_??????????????.xml | Sort-Object | Select-Object -First 1 | Remove-Item
$AnzahlBackupDateien = $(Get-ChildItem -Path backup_??????????????.xml | measure-object).count
}
}