uj könyvtär Scripts

This commit is contained in:
2025-12-15 10:00:38 +01:00
parent c06d51509d
commit 0c3b5e75a6
43 changed files with 1957 additions and 0 deletions

View File

@@ -0,0 +1,67 @@
#!/bin/sh
# ovh-dynhost-update.sh - POSIX sh verzió
# ---------- Konfiguráció ----------
DH_USER="meszely.eu-matrix"
DH_PASS="virgI6774#Panda"
HOSTNAME="home.meszely.eu"
LOGFILE="/var/log/ovh-dynhost-update.log"
# ---------- VÉGE konfiguráció ----------
log() {
echo "$(date -Iseconds) - $*" >> "${LOGFILE}" 2>/dev/null || echo "$*"
}
get_public_ip() {
curl -fsS https://api.ipify.org || echo ""
}
get_dns_ip() {
dig +short A "${HOSTNAME}" | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | head -n1 || echo ""
}
update_ovh() {
ip="$1"
curl -fsS --max-time 30 --user "${DH_USER}:${DH_PASS}" \
"https://www.ovh.com/nic/update?system=dyndns&hostname=${HOSTNAME}&myip=${ip}" || echo ""
}
main() {
log "Script indítva — host: ${HOSTNAME}"
public_ip="$(get_public_ip)"
if [ -z "$public_ip" ]; then
log "Hiba: nem sikerült lekérni a publikus IP-t."
exit 1
fi
log "Publikus IP: $public_ip"
dns_ip="$(get_dns_ip)"
if [ -z "$dns_ip" ]; then
log "Nincs A rekord jelenleg vagy nem elérhető (dns_ip üres)."
else
log "DNS-en található A rekord: $dns_ip"
fi
if [ "$public_ip" = "$dns_ip" ]; then
log "IP nem változott (nochg). Nem frissítünk."
exit 0
fi
log "IP eltér — frissítés OVH felé..."
response="$(update_ovh "$public_ip")"
log "OVH válasz: $response"
case "$response" in
good*|nochg*)
log "Sikeres frissítés: $response"
exit 0
;;
*)
log "Frissítés sikertelen: $response"
exit 2
;;
esac
}
main "$@"

View File

@@ -0,0 +1,11 @@
# COMx port Speed 115200
#
show images
mount usb
copy usb:/AOS-CX_6100-6000_10_16_1006.swi primary
boot system primary
erase all zeroize

View File

@@ -0,0 +1,33 @@
Import-Module ActiveDirectory -ErrorAction Stop
$out = 'C:\Apps\all_ad_users.csv'
Get-ADUser -Filter * -Properties mail,telephoneNumber,mobile,fax,physicalDeliveryOfficeName,department,title,Enabled |
Select-Object @{
Name='Name';Expression={$_.Name}
}, @{
Name='SamAccountName';Expression={$_.SamAccountName}
}, @{
Name='Mail';Expression={$_.mail}
}, @{
Name='Telephone';Expression={$_.telephoneNumber}
}, @{
Name='Mobile';Expression={$_.mobile}
}, @{
Name='Fax_business';Expression={$_.fax}
}, @{
Name='Office';Expression={$_.physicalDeliveryOfficeName}
}, @{
Name='Department';Expression={$_.department}
}, @{
Name='Title';Expression={$_.title}
}, @{
Name='Enabled';Expression={$_.Enabled}
} |
Tee-Object -Variable Results |
Export-Csv -Path $out -NoTypeInformation -Encoding UTF8
# konzolra formázott megjelenítés (szükség szerint szűrj)
$Results | Format-Table Name,SamAccountName,Mail,Telephone,Mobile,Fax_business,Office,Department,Title,Enabled -AutoSize
Write-Host "Kimenet: $out ($($Results.Count) felhasználó)"

View File

@@ -0,0 +1,58 @@
Import-Module ActiveDirectory -ErrorAction Stop
# --- Állítsd be a csoport e-mail címét vagy nevét ---
$groupEmail = "abteilungsleitungen-jenfeld@aps-hh.de"
$out = "C:\Tools\group_members.csv"
# --- Csoport objektum lekérése az e-mail cím alapján ---
$group = Get-ADGroup -Filter "mail -eq '$groupEmail'" -Properties mail
if (-not $group) {
Write-Host "Nem található csoport ezzel az e-mail címmel: $groupEmail" -ForegroundColor Red
exit
}
Write-Host "Csoport megtalálva: $($group.Name) ($($group.DistinguishedName))"
# --- Csoporttagok lekérése ---
$members = Get-ADGroupMember -Identity $group.DistinguishedName -Recursive | Where-Object { $_.ObjectClass -eq 'user' }
if (-not $members) {
Write-Host "Nincsenek felhasználók a csoportban vagy nincs jogosultság a lekérdezéshez." -ForegroundColor Yellow
exit
}
# --- AD-felhasználói adatok lekérése ---
$Results = $members | ForEach-Object {
Get-ADUser -Identity $_.SamAccountName -Properties mail,telephoneNumber,mobile,fax,physicalDeliveryOfficeName,department,title,Enabled |
Select-Object @{
Name='Name';Expression={$_.Name}
}, @{
Name='SamAccountName';Expression={$_.SamAccountName}
}, @{
Name='Mail';Expression={$_.mail}
}, @{
Name='Telephone';Expression={$_.telephoneNumber}
}, @{
Name='Mobile';Expression={$_.mobile}
}, @{
Name='Fax_business';Expression={$_.fax}
}, @{
Name='Office';Expression={$_.physicalDeliveryOfficeName}
}, @{
Name='Department';Expression={$_.department}
}, @{
Name='Title';Expression={$_.title}
}, @{
Name='Enabled';Expression={$_.Enabled}
}
}
# --- Export CSV ---
$Results | Export-Csv -Path $out -NoTypeInformation -Encoding UTF8
# --- Konzolos megjelenítés ---
$Results | Format-Table Name,SamAccountName,Mail,Telephone,Mobile,Fax_business,Office,Department,Title,Enabled -AutoSize
Write-Host "`nCsoport: $($group.Name)"
Write-Host "Kimenet: $out ($($Results.Count) felhasználó)" -ForegroundColor Green

View File

@@ -0,0 +1,39 @@
Import-Module ActiveDirectory -ErrorAction Stop
$in = 'C:\Tools\users.txt'
$out = 'C:\Tools\selected_users.csv'
# Felhasználónevek beolvasása a txt-ből, üres sorokat kihagyva, szóközöket levágva
$userList = Get-Content -Path $in | Where-Object { $_.Trim() -ne "" } | ForEach-Object { $_.Trim() }
# AD-lekérdezés és szűrés a txt alapján
Get-ADUser -Filter * -Properties mail,telephoneNumber,mobile,fax,physicalDeliveryOfficeName,department,title,Enabled |
Where-Object { $userList -contains $_.Name } |
Select-Object @{
Name='Name';Expression={$_.Name}
}, @{
Name='SamAccountName';Expression={$_.SamAccountName}
}, @{
Name='Mail';Expression={$_.mail}
}, @{
Name='Telephone';Expression={$_.telephoneNumber}
}, @{
Name='Mobile';Expression={$_.mobile}
}, @{
Name='Fax_business';Expression={$_.fax}
}, @{
Name='Office';Expression={$_.physicalDeliveryOfficeName}
}, @{
Name='Department';Expression={$_.department}
}, @{
Name='Title';Expression={$_.title}
}, @{
Name='Enabled';Expression={$_.Enabled}
} |
Tee-Object -Variable Results |
Export-Csv -Path $out -NoTypeInformation -Encoding UTF8
# konzolra formázott megjelenítés
$Results | Format-Table Name,SamAccountName,Mail,Telephone,Mobile,Fax_business,Office,Department,Title,Enabled -AutoSize
Write-Host "Kimenet: $out ($($Results.Count) felhasználó)"

View File

@@ -0,0 +1,47 @@
$events = Get-WinEvent -LogName "Microsoft-Windows-PrintService/Operational" -MaxEvents 500 |
Where-Object { $_.Id -eq 307 }
$logList = @()
foreach ($event in $events) {
$message = $event.Message
$user = ""
$document = ""
$printer = ""
$pages = ""
# Felhasználó (pl. L.Vogt auf APS-NB072)
if ($message -match "im Besitz von (.+?) wurde auf") {
$user = $matches[1].Trim()
}
# Nyomtató neve (pl. Jasenitz)
if ($message -match "wurde auf (.+?) über Port") {
$printer = $matches[1].Trim()
}
# Oldalszám (pl. Gedruckte Seiten: 1)
if ($message -match "Gedruckte Seiten:\s+(\d+)") {
$pages = $matches[1]
}
# Dokumentum sorszám (pl. Dokument 62) jobb híján
if ($message -match "^Dokument\s+(\d+)") {
$document = "Dokument " + $matches[1]
}
$logList += [PSCustomObject]@{
Datum = $event.TimeCreated
Benutzer = $user
Dokument = $document
Drucker = $printer
Seiten = $pages
}
}
# Exportálás CSV-be
$exportPfad = "$env:USERPROFILE\Desktop\drucklog_export.csv"
$logList | Export-Csv -Path $exportPfad -NoTypeInformation -Encoding UTF8
Write-Host "Exportálás kész: $exportPfad"

View File

@@ -0,0 +1,54 @@
$events = Get-WinEvent -LogName "Microsoft-Windows-PrintService/Operational" -MaxEvents 500 |
Where-Object { $_.Id -eq 307 }
$logList = @()
foreach ($event in $events) {
$message = $event.Message
$user = ""
$computer = ""
$document = ""
$printer = ""
$pages = ""
# Felhasználó és gép különválasztása
if ($message -match "im Besitz von (.+?) wurde auf") {
$fullUser = $matches[1].Trim()
if ($fullUser -match "^(.+?) auf (.+)$") {
$user = $matches[1].Trim()
$computer = $matches[2].Trim()
} else {
$user = $fullUser
}
}
# Nyomtató neve (pl. Jasenitz)
if ($message -match "wurde auf (.+?) über Port") {
$printer = $matches[1].Trim()
}
# Oldalszám (pl. Gedruckte Seiten: 1)
if ($message -match "Gedruckte Seiten:\s+(\d+)") {
$pages = $matches[1]
}
# Dokument sorszám (pl. Dokument 62)
if ($message -match "^Dokument\s+(\d+)") {
$document = "Dokument " + $matches[1]
}
$logList += [PSCustomObject]@{
Datum = $event.TimeCreated
Benutzer = $user
Computer = $computer
Dokument = $document
Drucker = $printer
Seiten = $pages
}
}
# Exportálás CSV-be
$exportPfad = "$env:USERPROFILE\Desktop\drucklog_export.csv"
$logList | Export-Csv -Path $exportPfad -NoTypeInformation -Encoding UTF8
Write-Host "Exportálás kész: $exportPfad"

View File

@@ -0,0 +1,75 @@
# Printer Log Report 0.3
#
# Get-WinEvent on Englische Windows : Get-WinEvent -LogName "Microsoft-Windows-PrintService/Operational"
# Get-WinEvent on Deutsche Windows : Get-WinEvent -LogName "Microsoft-Windows-PrintService/Betriebsbereit"
$events = Get-WinEvent -LogName "Microsoft-Windows-PrintService/Operational" -MaxEvents 500 |
Where-Object { $_.Id -eq 307 }
$logList = @()
foreach ($event in $events) {
$message = $event.Message
$user = ""
$computer = ""
$document = ""
$printer = ""
$pages = 0
# Felhasználó és gép különválasztása
if ($message -match "im Besitz von (.+?) wurde auf") {
$fullUser = $matches[1].Trim()
if ($fullUser -match "^(.+?) auf (.+)$") {
$user = $matches[1].Trim()
$computer = $matches[2].Trim()
} else {
$user = $fullUser
}
}
# Nyomtató neve (pl. Jasenitz)
if ($message -match "wurde auf (.+?) über Port") {
$printer = $matches[1].Trim()
}
# Oldalszám (pl. Gedruckte Seiten: 1)
if ($message -match "Gedruckte Seiten:\s+(\d+)") {
$pages = [int]$matches[1]
}
# Dokument sorszám (pl. Dokument 62)
if ($message -match "^Dokument\s+(\d+)") {
$document = "Dokument " + $matches[1]
}
$logList += [PSCustomObject]@{
Datum = $event.TimeCreated
Benutzer = $user
Computer = $computer
Dokument = $document
Drucker = $printer
Seiten = $pages
}
}
# Export részletes lista
$exportPfad = "$env:USERPROFILE\Desktop\drucklog_export.csv"
$logList | Export-Csv -Path $exportPfad -NoTypeInformation -Encoding UTF8
# ✅ Összesítés felhasználónként
$summary = $logList | Group-Object -Property Benutzer | ForEach-Object {
$userGroup = $_.Group
[PSCustomObject]@{
Benutzer = $_.Name
Anzahl_Dokumente = $userGroup.Count
Gesamt_Seiten = ($userGroup | Measure-Object -Property Seiten -Sum).Sum
}
}
# Export összesítés
$summaryPfad = "$env:USERPROFILE\Desktop\drucklog_summary.csv"
$summary | Export-Csv -Path $summaryPfad -NoTypeInformation -Encoding UTF8
Write-Host "Exportálás kész:"
Write-Host "- Részletes lista: $exportPfad"
Write-Host "- Felhasználónkénti összesítés: $summaryPfad"

View File

@@ -0,0 +1,152 @@
# Printer Log Report 0.3
#
# Get-WinEvent on Englische Windows : Get-WinEvent -LogName "Microsoft-Windows-PrintService/Operational"
# Get-WinEvent on Deutsche Windows : Get-WinEvent -LogName "Microsoft-Windows-PrintService/Betriebsbereit"
$events = Get-WinEvent -LogName "Microsoft-Windows-PrintService/Operational" -MaxEvents 2000 |
Where-Object { $_.Id -eq 307 }
$logList = @()
foreach ($event in $events) {
$message = $event.Message
$user = ""
$computer = ""
$document = ""
$printer = ""
$pages = 0
if ($message -match "im Besitz von (.+?) wurde auf") {
$fullUser = $matches[1].Trim()
if ($fullUser -match "^(.+?) auf (.+)$") {
$user = $matches[1].Trim()
$computer = $matches[2].Trim()
} else {
$user = $fullUser
}
}
if ($message -match "wurde auf (.+?) über Port") {
$printer = $matches[1].Trim()
}
if ($message -match "Gedruckte Seiten:\s+(\d+)") {
$pages = [int]$matches[1]
}
if ($message -match "^Dokument\s+(\d+)") {
$document = "Dokument " + $matches[1]
}
$logList += [PSCustomObject]@{
Datum = $event.TimeCreated
Tag = $event.TimeCreated.Date.ToString("yyyy-MM-dd")
Woche = Get-Date $event.TimeCreated -UFormat "%Y-W%V"
Benutzer = $user
Computer = $computer
Dokument = $document
Drucker = $printer
Seiten = $pages
}
}
# 🔹 Export részletes lista
$exportPfad = "$env:USERPROFILE\Desktop\drucklog_export.csv"
$logList | Export-Csv -Path $exportPfad -NoTypeInformation -Encoding UTF8
# 🔸 Összesítés felhasználónként (teljes)
$summary = $logList | Group-Object -Property Benutzer | ForEach-Object {
$userGroup = $_.Group
[PSCustomObject]@{
Benutzer = $_.Name
Anzahl_Dokumente = $userGroup.Count
Gesamt_Seiten = ($userGroup | Measure-Object -Property Seiten -Sum).Sum
}
}
$summary | Export-Csv -Path "$env:USERPROFILE\Desktop\drucklog_summary.csv" -NoTypeInformation -Encoding UTF8
# 🔸 Napi összesítés felhasználónként
$dailySummary = $logList | Group-Object -Property Tag, Benutzer | ForEach-Object {
$day = $_.Group[0].Tag
$user = $_.Group[0].Benutzer
$pages = ($_.Group | Measure-Object -Property Seiten -Sum).Sum
$docs = $_.Count
[PSCustomObject]@{
Datum = $day
Benutzer = $user
Dokumente = $docs
Seiten = $pages
}
}
$dailySummary | Export-Csv -Path "$env:USERPROFILE\Desktop\drucklog_daily.csv" -NoTypeInformation -Encoding UTF8
# 🔸 Heti összesítés felhasználónként (ISO hét formátum: pl. 2025-W30)
$weeklySummary = $logList | Group-Object -Property Woche, Benutzer | ForEach-Object {
$week = $_.Group[0].Woche
$user = $_.Group[0].Benutzer
$pages = ($_.Group | Measure-Object -Property Seiten -Sum).Sum
$docs = $_.Count
[PSCustomObject]@{
Woche = $week
Benutzer = $user
Dokumente = $docs
Seiten = $pages
}
}
$weeklySummary | Export-Csv -Path "$env:USERPROFILE\Desktop\drucklog_weekly.csv" -NoTypeInformation -Encoding UTF8
Write-Host "Exportálás kész:"
Write-Host "- Részletes lista: drucklog_export.csv"
Write-Host "- Összesítés: drucklog_summary.csv"
Write-Host "- Napi összesítés: drucklog_daily.csv"
Write-Host "- Heti összesítés: drucklog_weekly.csv"
# 🔸 Nyomtatónkénti összesítés
$printerSummary = $logList | Group-Object -Property Drucker | ForEach-Object {
$printer = $_.Name
$pages = ($_.Group | Measure-Object -Property Seiten -Sum).Sum
$docs = $_.Count
[PSCustomObject]@{
Drucker = $printer
Dokumente = $docs
Seiten = $pages
}
}
$printerSummary | Export-Csv -Path "$env:USERPROFILE\Desktop\drucklog_by_printer.csv" -NoTypeInformation -Encoding UTF8
# 🔸 Napi összesítés nyomtatónként
$dailyPrinterSummary = $logList | Group-Object -Property Tag, Drucker | ForEach-Object {
$day = $_.Group[0].Tag
$printer = $_.Group[0].Drucker
$pages = ($_.Group | Measure-Object -Property Seiten -Sum).Sum
$docs = $_.Count
[PSCustomObject]@{
Datum = $day
Drucker = $printer
Dokumente = $docs
Seiten = $pages
}
}
$dailyPrinterSummary | Export-Csv -Path "$env:USERPROFILE\Desktop\drucklog_daily_by_printer.csv" -NoTypeInformation -Encoding UTF8
# 🔸 Heti összesítés nyomtatónként
$weeklyPrinterSummary = $logList | Group-Object -Property Woche, Drucker | ForEach-Object {
$week = $_.Group[0].Woche
$printer = $_.Group[0].Drucker
$pages = ($_.Group | Measure-Object -Property Seiten -Sum).Sum
$docs = $_.Count
[PSCustomObject]@{
Woche = $week
Drucker = $printer
Dokumente = $docs
Seiten = $pages
}
}
$weeklyPrinterSummary | Export-Csv -Path "$env:USERPROFILE\Desktop\drucklog_weekly_by_printer.csv" -NoTypeInformation -Encoding UTF8

View File

@@ -0,0 +1,98 @@
# Drucklog_Export.ps1
# Nyomtatási napló beolvasása Event Log-ból, feldolgozása és mentése SQLite adatbázisba duplikációk nélkül
# Fontos modul SQLite feldolgozäshoz
# Install-Module -Name SQLite -Scope CurrentUser
# Import-Module SQLite
# --- Beállítások ---
$logName = "Microsoft-Windows-PrintService/Operational"
$dbPath = "$env:USERPROFILE\Desktop\drucklog_APS-PRINT01.db"
# $dbPath = "$env:USERPROFILE\Desktop\drucklog_APS-PRINT02.db"
# --- SQLite kapcsolat ---
# Add-Type -Path "C:\Tools\SQLite\System.Data.SQLite.dll"
$connectionString = "Data Source=$dbPath;Version=3;"
$connection = New-Object System.Data.SQLite.SQLiteConnection($connectionString)
$connection.Open()
# --- Tábla létrehozása, ha nem létezik ---
$createTableCmd = $connection.CreateCommand()
$createTableCmd.CommandText = @"
CREATE TABLE IF NOT EXISTS drucklog (
id INTEGER PRIMARY KEY AUTOINCREMENT,
event_id INTEGER UNIQUE,
datum TEXT,
tag TEXT,
woche TEXT,
benutzer TEXT,
computer TEXT,
dokument TEXT,
drucker TEXT,
seiten INTEGER
);
"@
$createTableCmd.ExecuteNonQuery()
# --- Események lekérdezése ---
$events = Get-WinEvent -LogName $logName -ErrorAction SilentlyContinue | Where-Object { $_.Id -eq 307 }
# --- Adatok feldolgozása ---
$logList = foreach ($event in $events) {
$msg = $event.Message
if ($msg -match "im Besitz von (.+?) auf (.+?) wurde auf (.+?) über Port") {
$benutzer = $matches[1]
$computer = $matches[2]
$drucker = $matches[3]
}
else {
continue
}
$dokument = if ($msg -match "Dokument (.+?), Dokument drucken") { $matches[1] } else { "Unbekannt" }
$seiten = if ($msg -match "Gedruckte Seiten: (\d+)") { [int]$matches[1] } else { 0 }
$calendar = [System.Globalization.CultureInfo]::CurrentCulture.Calendar
$weekRule = [System.Globalization.CalendarWeekRule]::FirstFourDayWeek
$firstDay = [System.DayOfWeek]::Monday
$woche = $calendar.GetWeekOfYear($event.TimeCreated, $weekRule, $firstDay)
[PSCustomObject]@{
Id = $event.RecordId
Datum = $event.TimeCreated.ToString("yyyy-MM-dd HH:mm:ss")
Tag = $event.TimeCreated.ToString("yyyy-MM-dd")
Woche = $woche
Benutzer = $benutzer
Computer = $computer
Dokument = $dokument
Drucker = $drucker
Seiten = $seiten
}
}
# --- Adatok mentése adatbázisba, duplikáció nélkül ---
foreach ($row in $logList) {
$checkCmd = $connection.CreateCommand()
$checkCmd.CommandText = "SELECT COUNT(*) FROM drucklog WHERE event_id = @id"
$checkCmd.Parameters.AddWithValue("@id", $row.Id)
$exists = $checkCmd.ExecuteScalar()
if ($exists -eq 0) {
$insertCmd = $connection.CreateCommand()
$insertCmd.CommandText = "INSERT INTO drucklog (event_id, datum, tag, woche, benutzer, computer, dokument, drucker, seiten)
VALUES (@id, @datum, @tag, @woche, @benutzer, @computer, @dokument, @drucker, @seiten)"
$insertCmd.Parameters.AddWithValue("@id", $row.Id)
$insertCmd.Parameters.AddWithValue("@datum", $row.Datum)
$insertCmd.Parameters.AddWithValue("@tag", $row.Tag)
$insertCmd.Parameters.AddWithValue("@woche", $row.Woche)
$insertCmd.Parameters.AddWithValue("@benutzer", $row.Benutzer)
$insertCmd.Parameters.AddWithValue("@computer", $row.Computer)
$insertCmd.Parameters.AddWithValue("@dokument", $row.Dokument)
$insertCmd.Parameters.AddWithValue("@drucker", $row.Drucker)
$insertCmd.Parameters.AddWithValue("@seiten", $row.Seiten)
$insertCmd.ExecuteNonQuery()
}
}
$connection.Close()
Write-Host "Sikeresen frissítve: $($logList.Count) esemény feldolgozva."

View File

@@ -0,0 +1,101 @@
# Drucklog_Export.ps1
# Nyomtatási napló beolvasása Event Log-ból, feldolgozása és mentése SQLite adatbázisba duplikációk nélkül
# Fontos modul SQLite feldolgozäshoz
# Install-Module -Name SQLite -Scope CurrentUser
# Import-Module SQLite
# --- Beállítások ---
$logName = "Microsoft-Windows-PrintService/Operational"
$dbPath = "$env:USERPROFILE\Desktop\drucklog_APS-PRINT01.db"
# $dbPath = "$env:USERPROFILE\Desktop\drucklog_APS-PRINT02.db"
# --- SQLite kapcsolat ---
# Add-Type -Path "C:\Tools\SQLite\System.Data.SQLite.dll"
$connectionString = "Data Source=$dbPath;Version=3;"
$connection = New-Object System.Data.SQLite.SQLiteConnection($connectionString)
$connection.Open()
# --- Tábla létrehozása, ha nem létezik ---
$createTableCmd = $connection.CreateCommand()
$createTableCmd.CommandText = @"
CREATE TABLE IF NOT EXISTS drucklog (
id INTEGER PRIMARY KEY AUTOINCREMENT,
event_id INTEGER UNIQUE,
datum TEXT,
tag TEXT,
woche TEXT,
benutzer TEXT,
computer TEXT,
dokument TEXT,
drucker TEXT,
seiten INTEGER
);
"@
$createTableCmd.ExecuteNonQuery()
# --- Események lekérdezése ---
$events = Get-WinEvent -LogName $logName -ErrorAction SilentlyContinue | Where-Object { $_.Id -eq 307 }
# --- Adatok feldolgozása ---
$logList = foreach ($event in $events) {
$msg = $event.Message
if ($msg -match "im Besitz von (.+?) auf (.+?) wurde auf (.+?) über Port") {
$benutzer = $matches[1]
$computer = $matches[2]
$drucker = $matches[3]
}
else {
continue
}
$dokument = if ($msg -match "Dokument (.+?), Dokument drucken") { $matches[1] } else { "Unbekannt" }
$seiten = if ($msg -match "Gedruckte Seiten: (\d+)") { [int]$matches[1] } else { 0 }
$calendar = [System.Globalization.CultureInfo]::CurrentCulture.Calendar
$weekRule = [System.Globalization.CalendarWeekRule]::FirstFourDayWeek
$firstDay = [System.DayOfWeek]::Monday
$woche = $calendar.GetWeekOfYear($event.TimeCreated, $weekRule, $firstDay)
[PSCustomObject]@{
Id = $event.RecordId
Datum = $event.TimeCreated.ToString("yyyy-MM-dd HH:mm:ss")
Tag = $event.TimeCreated.ToString("yyyy-MM-dd")
Woche = $woche
Benutzer = $benutzer
Computer = $computer
Dokument = $dokument
Drucker = $drucker
Seiten = $seiten
}
}
# --- Adatok mentése adatbázisba, duplikáció nélkül ---
$ujBejegyzesek = 0
foreach ($row in $logList) {
$checkCmd = $connection.CreateCommand()
$checkCmd.CommandText = "SELECT COUNT(*) FROM drucklog WHERE event_id = @id"
$checkCmd.Parameters.AddWithValue("@id", $row.Id)
$exists = $checkCmd.ExecuteScalar()
if ($exists -eq 0) {
$insertCmd = $connection.CreateCommand()
$insertCmd.CommandText = "INSERT INTO drucklog (event_id, datum, tag, woche, benutzer, computer, dokument, drucker, seiten)
VALUES (@id, @datum, @tag, @woche, @benutzer, @computer, @dokument, @drucker, @seiten)"
$insertCmd.Parameters.AddWithValue("@id", $row.Id)
$insertCmd.Parameters.AddWithValue("@datum", $row.Datum)
$insertCmd.Parameters.AddWithValue("@tag", $row.Tag)
$insertCmd.Parameters.AddWithValue("@woche", $row.Woche)
$insertCmd.Parameters.AddWithValue("@benutzer", $row.Benutzer)
$insertCmd.Parameters.AddWithValue("@computer", $row.Computer)
$insertCmd.Parameters.AddWithValue("@dokument", $row.Dokument)
$insertCmd.Parameters.AddWithValue("@drucker", $row.Drucker)
$insertCmd.Parameters.AddWithValue("@seiten", $row.Seiten)
$insertCmd.ExecuteNonQuery()
$ujBejegyzesek++
}
}
$connection.Close()
Write-Host "Sikeresen frissítve: $($logList.Count) esemény feldolgozva."
Write-Host "Új bejegyzések az adatbázisban: $ujBejegyzesek"

View File

@@ -0,0 +1,81 @@
# Drucklog_MySQL.ps1
# Install-Module MySQLCmdlets
# Nyomtatási napló export MySQL adatbázisba
# Aufgabeplannung: Taglich um 8.00 Uhr
# Name: Drucklog_MySQL_0.1.ps1
# powershell.exe -ExecutionPolicy Bypass -File "-ExecutionPolicy Bypass -File "C:\Tools\drucklog_export_0.1.ps1"
# Beállítások
$logName = "Microsoft-Windows-PrintService/Operational"
$mysqlHost = "10.101.0.82"
$mysqlUser = "druckloguser"
$mysqlPassword = "Test123#"
$mysqlDatabase = "drucklog"
$quelleServer = $env:COMPUTERNAME # vagy: "Szerver01"
# MySQL .NET csomag betöltése (előzetesen szükséges: MySql.Data.dll)
# Add-Type -Path "C:\Tools\MySql.Data.dll"
# Add-Type -Path "C:\Program Files (x86)\MySQL\MySQL Connector NET 9.4\MySql.Data.dll"
[Reflection.Assembly]::LoadFrom("C:\Program Files (x86)\MySQL\MySQL Connector NET 9.4\MySql.Data.dll") | Out-Null
# Kapcsolódás
$connectionString = "server=$mysqlHost;user id=$mysqlUser;password=$mysqlPassword;database=$mysqlDatabase;SslMode=none"
$connection = New-Object MySql.Data.MySqlClient.MySqlConnection($connectionString)
$connection.Open()
# Lekérés a logból
$events = Get-WinEvent -LogName $logName -ErrorAction SilentlyContinue | Where-Object { $_.Id -eq 307 }
# Kulturális beállítás a heti számításhoz
$calendar = [System.Globalization.CultureInfo]::CurrentCulture.Calendar
$weekRule = [System.Globalization.CalendarWeekRule]::FirstFourDayWeek
$firstDay = [System.DayOfWeek]::Monday
$ujBejegyzes = 0
foreach ($event in $events) {
$msg = $event.Message
if ($msg -match "im Besitz von (.+?) auf (.+?) wurde auf (.+?) über Port") {
$benutzer = $matches[1]
$computer = $matches[2]
$drucker = $matches[3]
} else {
continue
}
$dokument = if ($msg -match "Dokument (.+?), Dokument drucken") { $matches[1] } else { "Unbekannt" }
$seiten = if ($msg -match "Gedruckte Seiten: (\d+)") { [int]$matches[1] } else { 0 }
$woche = $calendar.GetWeekOfYear($event.TimeCreated, $weekRule, $firstDay)
$datum = $event.TimeCreated.ToString("yyyy-MM-dd HH:mm:ss")
$tag = $event.TimeCreated.ToString("yyyy-MM-dd")
$id = $event.RecordId
# Duplikáció ellenőrzés
$checkCmd = $connection.CreateCommand()
$checkCmd.CommandText = "SELECT COUNT(*) FROM drucklog WHERE event_id = @id AND quelle_server = @qs"
$checkCmd.Parameters.AddWithValue("@id", $id)
$checkCmd.Parameters.AddWithValue("@qs", $quelleServer)
$exists = $checkCmd.ExecuteScalar()
if ($exists -eq 0) {
$insertCmd = $connection.CreateCommand()
$insertCmd.CommandText = "INSERT INTO drucklog (event_id, datum, tag, woche, benutzer, computer, dokument, drucker, seiten, quelle_server)
VALUES (@id, @datum, @tag, @woche, @benutzer, @computer, @dokument, @drucker, @seiten, @qs)"
$insertCmd.Parameters.AddWithValue("@id", $id)
$insertCmd.Parameters.AddWithValue("@datum", $datum)
$insertCmd.Parameters.AddWithValue("@tag", $tag)
$insertCmd.Parameters.AddWithValue("@woche", $woche)
$insertCmd.Parameters.AddWithValue("@benutzer", $benutzer)
$insertCmd.Parameters.AddWithValue("@computer", $computer)
$insertCmd.Parameters.AddWithValue("@dokument", $dokument)
$insertCmd.Parameters.AddWithValue("@drucker", $drucker)
$insertCmd.Parameters.AddWithValue("@seiten", $seiten)
$insertCmd.Parameters.AddWithValue("@qs", $quelleServer)
$insertCmd.ExecuteNonQuery()
$ujBejegyzes++
}
}
$connection.Close()
Write-Host "Feldolgozott események: $($events.Count) | Új bejegyzés: $ujBejegyzes"

View File

@@ -0,0 +1,78 @@
# Drucklog_MySQL.ps1
# Install-Module MySQLCmdlets
# Nyomtatási napló export MySQL adatbázisba
# Beállítások
$logName = "Microsoft-Windows-PrintService/Operational"
$mysqlHost = "10.101.0.82"
$mysqlUser = "druckloguser"
$mysqlPassword = "Test123#"
$mysqlDatabase = "drucklog"
$quelleServer = $env:COMPUTERNAME # vagy: "Szerver01"
# MySQL .NET csomag betöltése (előzetesen szükséges: MySql.Data.dll)
# Add-Type -Path "C:\Tools\MySql.Data.dll"
# Add-Type -Path "C:\Program Files (x86)\MySQL\MySQL Connector NET 9.4\MySql.Data.dll"
[Reflection.Assembly]::LoadFrom("C:\Program Files (x86)\MySQL\MySQL Connector NET 9.4\MySql.Data.dll") | Out-Null
# Kapcsolódás
$connectionString = "server=$mysqlHost;user id=$mysqlUser;password=$mysqlPassword;database=$mysqlDatabase;SslMode=none"
$connection = New-Object MySql.Data.MySqlClient.MySqlConnection($connectionString)
$connection.Open()
# Lekérés a logból
$events = Get-WinEvent -LogName $logName -ErrorAction SilentlyContinue | Where-Object { $_.Id -eq 307 }
# Kulturális beállítás a heti számításhoz
$calendar = [System.Globalization.CultureInfo]::CurrentCulture.Calendar
$weekRule = [System.Globalization.CalendarWeekRule]::FirstFourDayWeek
$firstDay = [System.DayOfWeek]::Monday
$ujBejegyzes = 0
foreach ($event in $events) {
$msg = $event.Message
if ($msg -match "im Besitz von (.+?) auf (.+?) wurde auf (.+?) über Port") {
$benutzer = $matches[1]
$computer = $matches[2]
$drucker = $matches[3]
} else {
continue
}
$dokument = if ($msg -match "Dokument (.+?), Dokument drucken") { $matches[1] } else { "Unbekannt" }
$seiten = if ($msg -match "Gedruckte Seiten: (\d+)") { [int]$matches[1] } else { 0 }
$woche = $calendar.GetWeekOfYear($event.TimeCreated, $weekRule, $firstDay)
$datum = $event.TimeCreated.ToString("yyyy-MM-dd HH:mm:ss")
$tag = $event.TimeCreated.ToString("yyyy-MM-dd")
$id = $event.RecordId
# Duplikáció ellenőrzés
$checkCmd = $connection.CreateCommand()
$checkCmd.CommandText = "SELECT COUNT(*) FROM drucklog WHERE event_id = @id AND quelle_server = @qs"
$checkCmd.Parameters.AddWithValue("@id", $id)
$checkCmd.Parameters.AddWithValue("@qs", $quelleServer)
$exists = $checkCmd.ExecuteScalar()
if ($exists -eq 0) {
$insertCmd = $connection.CreateCommand()
$insertCmd.CommandText = "INSERT INTO drucklog (event_id, datum, tag, woche, benutzer, computer, dokument, drucker, seiten, quelle_server)
VALUES (@id, @datum, @tag, @woche, @benutzer, @computer, @dokument, @drucker, @seiten, @qs)"
$insertCmd.Parameters.AddWithValue("@id", $id)
$insertCmd.Parameters.AddWithValue("@datum", $datum)
$insertCmd.Parameters.AddWithValue("@tag", $tag)
$insertCmd.Parameters.AddWithValue("@woche", $woche)
$insertCmd.Parameters.AddWithValue("@benutzer", $benutzer)
$insertCmd.Parameters.AddWithValue("@computer", $computer)
$insertCmd.Parameters.AddWithValue("@dokument", $dokument)
$insertCmd.Parameters.AddWithValue("@drucker", $drucker)
$insertCmd.Parameters.AddWithValue("@seiten", $seiten)
$insertCmd.Parameters.AddWithValue("@qs", $quelleServer)
$insertCmd.ExecuteNonQuery()
$ujBejegyzes++
}
}
$connection.Close()
Write-Host "Feldolgozott események: $($events.Count) | Új bejegyzés: $ujBejegyzes"

View File

@@ -0,0 +1,2 @@
# Kalender Megosztäs
Get-MailboxFolderPermission l.hintz:\Kalender

View File

@@ -0,0 +1,8 @@
$User = "i.meszely@aps-hh.de"
# Full Access
Get-Mailbox | Get-MailboxPermission | Where-Object { $_.User -like $User -and $_.AccessRights -contains "FullAccess" } | Select-Object Identity, User, AccessRights
# Send As
Get-Mailbox | Get-ADPermission | Where-Object { $_.User -like $User -and $_.ExtendedRights -like "Send As" } | Select-Object Identity, User, ExtendedRights
# Mitglied
Get-DistributionGroup | Where-Object { (Get-DistributionGroupMember $_.Identity -ResultSize Unlimited) -contains $User } | Select-Object Name, PrimarySmtpAddress

View File

@@ -0,0 +1,6 @@
Get-WmiObject -Class Win32_LogicalDisk | ? {$_. DriveType -eq 3} | select DeviceID, {$_.Size /1GB}, {$_.FreeSpace /1GB}
# z.B. ha csak a C meghajtó érdekel
#DeviceID $_.Size /1GB $_.FreeSpace /1GB
#-------- ------------ -----------------
#C: 99,3974571228027 0,667621612548828

View File

@@ -0,0 +1,33 @@
# IMAP PDF attachment downloader (requires MailKit DLL)
# Először töltsd le a MailKit DLL-t: https://www.nuget.org/packages/MailKit
# Példa letöltés: https://github.com/jstedfast/MailKit/releases/latest
Add-Type -Path "C:\Apps\MailKit\MailKit.dll"
Add-Type -Path "C:\Apps\MailKit\MimeKit.dll"
$imapServer = "your.exchange.server"
$imapPort = 993
$username = "your-username"
$password = "your-password"
$client = New-Object MailKit.Net.Imap.ImapClient
$client.Connect($imapServer, $imapPort, $true)
$client.Authenticate($username, $password)
$inbox = $client.Inbox
$inbox.Open([MailKit.FolderAccess]::ReadOnly)
foreach ($msg in $inbox.Fetch(0, $inbox.Count - 1, [MailKit.MessageSummaryItems]::Full | [MailKit.MessageSummaryItems]::UniqueId)) {
$email = $inbox.GetMessage($msg.UniqueId)
foreach ($attachment in $email.Attachments) {
if ($attachment.ContentType.MediaType -eq "application" -and $attachment.ContentType.MediaSubtype -eq "pdf") {
$filePath = "C:\Downloads\" + $attachment.FileName
$stream = [System.IO.File]::Create($filePath)
$attachment.Content.DecodeTo($stream)
$stream.Close()
Write-Host "Downloaded: $filePath"
}
}
}
$client.Disconnect($true)

View File

@@ -0,0 +1,32 @@
# This script retrieves message tracking logs for emails that were dropped by the transport service on the current day.
# --- Configuration ---
# Define the path for the output CSV file.
$OutputPath = "C:\Tools\oof_DROP.csv" # You can change this path
# --- Script ---
# Set the start and end times for the query to span the entire current day.
$startOfDay = (Get-Date).Date
$endOfDay = $startOfDay.AddDays(1).AddSeconds(-1)
Write-Host "Querying message tracking logs for dropped 'Automatic Reply' messages between $startOfDay and $endOfDay..."
# Query for dropped messages with "Automatische Antwort" in the subject, excluding the postmaster sender.
$droppedMessages = Get-TransportService | Get-MessageTrackingLog -wa 0 -EventId "DROP" -MessageSubject "Automatische Antwort" -Start $startOfDay -End $endOfDay | Where-Object { $_.Sender -ne 'postmaster@aps.local' }
if ($droppedMessages) {
# Select the desired properties for both console output and CSV export.
$outputData = $droppedMessages | Select-Object Timestamp, EventId, Source, Sender, @{Name='Recipients';Expression={$_.Recipients -join ';'}}, RecipientStatus, MessageSubject, InternalMessageId
# Display the results in the console.
Write-Host "Dropped 'Automatic Reply' messages found:"
$outputData | Format-Table
# Export the results to a CSV file, overwriting if it exists.
Write-Host "Exporting results to $OutputPath..."
$outputData | Export-Csv -Path $OutputPath -NoTypeInformation -Encoding UTF8 -Force
Write-Host "Export complete."
} else {
Write-Host "No dropped 'Automatic Reply' messages found for the current day."
}

View File

@@ -0,0 +1,42 @@
# Connect to Exchange Online (requires ExchangeOnlineManagement module)
# Install-Module -Name ExchangeOnlineManagement -Force -AllowClobber
# Connect-ExchangeOnline -ShowProgress $true
# --- Script ---
# Get all user mailboxes
Write-Host "Retrieving all user mailboxes..."
$mailboxes = Get-Mailbox -ResultSize Unlimited -Filter {RecipientTypeDetails -eq 'UserMailbox'}
# Create a container for the OOF enabled users
$oofEnabledUsers = @()
Write-Host "Checking Out of Office status for each mailbox..."
foreach ($mailbox in $mailboxes) {
try {
$oofSettings = Get-MailboxAutoReplyConfiguration -Identity $mailbox.UserPrincipalName
if ($oofSettings.AutoReplyState -ne "Disabled") {
$oofEnabledUsers += [PSCustomObject]@{
UserPrincipalName = $mailbox.UserPrincipalName
AutoReplyState = $oofSettings.AutoReplyState
StartTime = $oofSettings.StartTime
EndTime = $oofSettings.EndTime
InternalMessage = $oofSettings.InternalMessage
ExternalMessage = $oofSettings.ExternalMessage
}
Write-Host " OOO enabled for $($mailbox.UserPrincipalName)"
}
}
catch {
Write-Warning "Could not retrieve OOF settings for $($mailbox.UserPrincipalName). Error: $($_.Exception.Message)"
}
}
# Display the OOF configurations for all users where it's enabled
Write-Host "`n--- Summary of Users with Enabled Out of Office ---"
if ($oofEnabledUsers.Count -gt 0) {
$oofEnabledUsers | Format-Table
} else {
Write-Host "No users found with Out of Office enabled."
}

View File

@@ -0,0 +1,2 @@
# Powershell Versio
$PSVersionTable

View File

@@ -0,0 +1,16 @@
# RDP események exportálása CSV-be
Get-WinEvent -LogName "Microsoft-Windows-TerminalServices-LocalSessionManager/Operational" `
| Where-Object { $_.Id -in 21,22,23,24,25,39,40,41 } `
| Select-Object TimeCreated, Id, LevelDisplayName, Message `
| Export-Csv "C:\Logs\RDP_LocalSessionManager.csv" -NoTypeInformation -Encoding UTF8
Get-WinEvent -LogName "Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational" `
| Select-Object TimeCreated, Id, LevelDisplayName, Message `
| Export-Csv "C:\Logs\RDP_RemoteConnectionManager.csv" -NoTypeInformation -Encoding UTF8
Get-WinEvent -LogName "System" | Where-Object { $_.Id -eq 56 -and $_.ProviderName -eq "TermDD" } `
| Select-Object TimeCreated, Id, LevelDisplayName, Message `
| Export-Csv "C:\Logs\RDP_TermDD.csv" -NoTypeInformation -Encoding UTF8

View File

@@ -0,0 +1,23 @@
$SMTPServer = "smtp.mail.me.com" # Az SMTP szerver címe
$SMTPPort = 587 # SMTP port (általában 587 a TLS-hez)
$Username = "imeszely@icloud.com" # SMTP felhasználónév
$Password = "pandAmacI6774#" # SMTP jelszó
# SMTP kapcsolat létrehozása
$SMTPClient = New-Object Net.Mail.SmtpClient($SMTPServer, $SMTPPort)
$SMTPClient.EnableSsl = $true # TLS engedélyezése
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($Username, $Password)
# Teszt e-mail küldése
$MailMessage = New-Object System.Net.Mail.MailMessage
$MailMessage.From = "imeszely@icloud.com"
$MailMessage.To.Add("istvan@meszely.de")
$MailMessage.Subject = "SMTP test"
$MailMessage.Body = "Ez egy teszt üzenet SMTP kapcsolat tesztelésére."
try {
$SMTPClient.Send($MailMessage)
Write-Host "E-Mail gesendet!"
} catch {
Write-Host "Fehler : $_"
}

View File

@@ -0,0 +1,24 @@
$SMTPServer = "smtp.office365.com" # Az SMTP szerver címe
$SMTPPort = 587 # SMTP port (általában 587 a TLS-hez)
$Username = "Bestellung-Fax-Eingang@aps-hh.de" # SMTP felhasználónév
# $Password = "eXBd4zJQyVXicQk" # SMTP jelszó
$Password = "YqhlR@H~cH%maNF" # SMTP jelszó
# SMTP kapcsolat létrehozása
$SMTPClient = New-Object Net.Mail.SmtpClient($SMTPServer, $SMTPPort)
$SMTPClient.EnableSsl = $true # TLS engedélyezése
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($Username, $Password)
# Teszt e-mail küldése
$MailMessage = New-Object System.Net.Mail.MailMessage
$MailMessage.From = "Bestellung-Fax-Eingang@aps-hh.de"
$MailMessage.To.Add("istvan@meszely.de")
$MailMessage.Subject = "SMTP test"
$MailMessage.Body = "Ez egy teszt üzenet SMTP kapcsolat tesztelésére."
try {
$SMTPClient.Send($MailMessage)
Write-Host "E-Mail gesendet!"
} catch {
Write-Host "Fehler : $_"
}

View File

@@ -0,0 +1,4 @@
# SNMP An auf Windows Server
Install-WindowsFeature -Name "SNMP-Service" -IncludeAllSubFeature -IncludeManagementTools
# Firewall für SNMP Dienst öffnen
New-NetFirewallRule -Name "SNMP" -DisplayName "Allow SNMP" -Protocol UDP -LocalPort 161 -Action Allow -Direction Inbound -RemoteAddress 10.102.1.59 -Profile Domain

View File

@@ -0,0 +1,11 @@
Test-NetConnection srv-sharepoint.bhs.local -TraceRoute
Test-NetConnection -Port 80 srv-sharepoint.bhs.local
Test-NetConnection srv-sharepoint.bhs.local -DiagnoseRouting -InformationLevel Detailed
Apotheke:
srv001.ham0489.apo.service-pt.de
Test-NetConnection -DiagnoseRouting -InformationLevel Detailed srv001.ham0489.apo.service-pt.de

View File

@@ -0,0 +1,34 @@
# WMI Config
netsh firewall set service RemoteAdmin enable
netsh advfirewall firewall set rule group="Windows Remote Management" new enable=yes
netsh advfirewall firewall set rule group="windows management instrumentation (wmi)" new enable=yes
# Connection Testen
$strComputer = "Computer_B"
$colSettings = Get-WmiObject Win32_OperatingSystem -ComputerName $strComputer
strComputer = "Computer_B"
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colSettings = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
if ($colSettings) {
Write-Host "WMI connection to $strComputer successful."
} else {
Write-Host "Failed to connect to WMI on $strComputer."
}
# WMI Test
$wmiTest = Get-WmiObject -Class Win32_OperatingSystem -ComputerName $strComputer
if ($wmiTest) {
Write-Host "WMI Test successful on $strComputer."
} else {
Write-Host "WMI Test failed on $strComputer."
}
# WMI Test with CIM
$wmiTestCIM = Get-CimInstance -ClassName Win32_OperatingSystem -ComputerName $strComputer
if ($wmiTestCIM) {
Write-Host "CIM Test successful on $strComputer."
} else {
Write-Host "CIM Test failed on $strComputer."
}

View File

@@ -0,0 +1,5 @@
## Wifi
# Show wlan Profiles
netsh wlan show profiles
# Show password von Wlan
netsh wlan show profile name="WlanNet" key=clear

View File

@@ -0,0 +1,24 @@
# SharePoint elérhetőség ellenőrzése - 401 válasz a cél
$url = "http://srv-sharepoint.bhs.local"
try {
$response = Invoke-WebRequest -Uri $url -UseBasicParsing -ErrorAction Stop
$statusCode = $response.StatusCode
} catch {
# Ha kivétel van, akkor próbáljuk meg kiolvasni a státuszkódot a Response-tárgyból
if ($_.Exception.Response) {
$statusCode = $_.Exception.Response.StatusCode.Value__
} else {
Write-Host "2:Unbekannter Fehler: $($_.Exception.Message)"
exit 2
}
}
if ($statusCode -eq 401) {
Write-Host "0:SharePoint online, erwartete Antwort: 401 Unauthorized"
exit 0
} else {
Write-Host "2:Unerwarteter HTTP-Statuscode: $statusCode"
exit 2
}

View File

@@ -0,0 +1,87 @@
# $share = "\\aps-mysql01.aps.local\RdpLog\$env:COMPUTERNAME"
# Megosztott mappa a szerver neve szerint
$share = "\\aps-mysql01.aps.local\RdpLog\$env:COMPUTERNAME"
if (-not (Test-Path $share)) {
New-Item -Path $share -ItemType Directory -Force
}
# Funkció a logok kigyűjtésére
function Get-RDPEvents {
param (
[string]$LogName,
[int[]]$EventIDs
)
Get-WinEvent -LogName $LogName |
Where-Object { $_.Id -in $EventIDs } |
ForEach-Object {
$message = $_.Message
$sessionID = $null
$ursachencode = $null
$userName = $null
# 1⃣ SessionID és Ursachencode regexből
if ($message -match "Sitzung ""?(\d+)""?.*Ursachencode: (\d+)") {
$sessionID = [long]$matches[1]
$ursachencode = [long]$matches[2]
}
elseif ($message -match 'Sitzungs-ID:\s*(\d+)') {
$sessionID = [long]$matches[1]
}
# 2⃣ UserName: property[0]-ból
if ($_.Properties.Count -ge 1 -and $_.Properties[0].Value -match "\S") {
$userName = $_.Properties[0].Value
}
# 3⃣ Ha nincs property-ben, Message-ből APS\ mintával
if (-not $userName -and $message -match '(APS\\[^\s"]+)') {
$userName = $matches[1]
}
# 4⃣ 1149-es Event ID (auth) regex kiegészítés
if (-not $userName -and $message -match 'Benutzer:\s*(\S+)') {
$userName = $matches[1]
}
[PSCustomObject]@{
ServerName = $env:COMPUTERNAME
LogName = $LogName
EventID = $_.Id
SessionID = $sessionID
Ursachencode = $ursachencode
Level = $_.LevelDisplayName
UserName = $userName
Message = $message
TimeCreated = $_.TimeCreated
}
}
}
# 1⃣ UserName események (auth / reconnect) — SessionID-vel
$userEvents = Get-RDPEvents -LogName "Microsoft-Windows-TerminalServices-LocalSessionManager/Operational" -EventIDs 24,25,1149
# 2⃣ Disconnect események
$disconnectEvents = Get-RDPEvents -LogName "Microsoft-Windows-TerminalServices-LocalSessionManager/Operational" -EventIDs 39,40
# 3⃣ SessionID alapján hozzárendeljük a UserName-t a disconnect eseményekhez
$disconnectEvents | ForEach-Object {
$matchingUser = $userEvents | Where-Object { $_.SessionID -eq $_.SessionID } | Sort-Object TimeCreated -Descending | Select-Object -First 1
if ($matchingUser) { $_.UserName = $matchingUser.UserName }
}
# 4⃣ Összesítés más logokkal
$remoteEvents = Get-RDPEvents -LogName "Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational" -EventIDs 1006,1026
$termDDEvents = Get-RDPEvents -LogName "System" -EventIDs 56 | Where-Object { $_.Message -like "*TermDD*" }
$brokerClientEvents = Get-RDPEvents -LogName "Microsoft-Windows-TerminalServices-SessionBroker-Client/Operational" -EventIDs 1000,1001
$brokerManagerEvents = Get-RDPEvents -LogName "Microsoft-Windows-TerminalServices-SessionBroker-Manager/Operational" -EventIDs 1000,1001
# 5⃣ Összesítés
$allEvents = $userEvents + $disconnectEvents + $remoteEvents + $termDDEvents + $brokerClientEvents + $brokerManagerEvents
# CSV-be mentés
$filename = Join-Path $share ("RDP_Log_" + (Get-Date -Format "yyyyMMdd_HHmmss") + ".csv")
$allEvents | Export-Csv $filename -NoTypeInformation -Encoding UTF8
Write-Host "RDP log export kész: $filename"

View File

@@ -0,0 +1,61 @@
# MySQL kapcsolati adatok
# Install-PackageProvider -Name NuGet -Force
# Register-PackageSource -Name NuGet -Location https://www.nuget.org/api/v2/ -ProviderName NuGet -Trusted
# Install-Package MySql.Data -Force
# Oder : https://dev.mysql.com/downloads/connector/net/
$mysqlServer = "localhost" # vagy a szerver IP/cím
$mysqlDatabase = "rdp_log" # az adatbázis neve
$mysqlUser = "rdplog" # felhasználónév
$mysqlPassword = "Test123#" # jelszó
# Forrás és célmappa
$sourceFolder = "C:\RdpLog\Logs" # a mappa, ahol a CSV fájlok vannak
$destinationFolder = "C:\RdpLog\Archive" # a mappa, ahova áthelyezzük a feldolgozott fájlokat
# MySQL kapcsolódás
Add-Type -Path "C:\Program Files\PackageManagement\NuGet\Packages\MySql.Data.9.4.0\lib\net9.0\MySql.Data.dll" # cseréld le a valós útvonalra!
$connection = New-Object MySql.Data.MySqlClient.MySqlConnection
$connection.ConnectionString = "server=$mysqlServer;database=$mysqlDatabase;uid=$mysqlUser;pwd=$mysqlPassword;"
$connection.Open()
# Minden CSV fájl feldolgozása
Get-ChildItem -Path $sourceFolder -Filter "*.csv" | ForEach-Object {
$csvPath = $_.FullName
$csvData = Import-Csv -Path $csvPath -Delimiter "," -Encoding UTF8
Write-Host "Feldolgozás alatt: $csvPath"
# Adatok feltöltése az adatbázisba
foreach ($row in $csvData) {
$query = "INSERT INTO rdplog (ServerName, LogName, EventID, SessionID, Ursachencode, Level, UserName, Message, TimeCreated) VALUES (@ServerName, @LogName, @EventID, @SessionID, @Ursachencode, @Level, @UserName, @Message, @TimeCreated)"
$command = New-Object MySql.Data.MySqlClient.MySqlCommand($query, $connection)
# Paraméterek hozzáadása
$command.Parameters.AddWithValue("@ServerName", $row.ServerName) | Out-Null
$command.Parameters.AddWithValue("@LogName", $row.LogName) | Out-Null
$command.Parameters.AddWithValue("@EventID", $row.EventID) | Out-Null
$command.Parameters.AddWithValue("@SessionID", $row.SessionID) | Out-Null
$command.Parameters.AddWithValue("@Ursachencode", $row.Ursachencode) | Out-Null
$command.Parameters.AddWithValue("@Level", $row.Level) | Out-Null
$command.Parameters.AddWithValue("@UserName", $row.UserName) | Out-Null
$command.Parameters.AddWithValue("@Message", $row.Message) | Out-Null
# TimeCreated átalakítása (ha szükséges)
$timeCreated = [datetime]::ParseExact($row.TimeCreated, "dd.MM.yyyy HH:mm:ss", $null)
$command.Parameters.AddWithValue("@TimeCreated", $timeCreated) | Out-Null
# Lekérdezés végrehajtása
$command.ExecuteNonQuery() | Out-Null
}
# Fájl áthelyezése a célmappába
Move-Item -Path $csvPath -Destination $destinationFolder -Force
Write-Host "Fájl áthelyezve: $csvPath -> $destinationFolder"
}
# Kapcsolat bezárása
$connection.Close()
Write-Host "Minden fájl sikeresen feldolgozva és áthelyezve!"

View File

@@ -0,0 +1,18 @@
# Sophos SNMP lekérdezések VPN nevekhez
Get-SnmpData -IP 10.102.1.1 -Community prtg -OID 1.3.6.1.4.1.2604.5.1.6.1.1.1.1.4.3
Get-SnmpData -IP 10.102.1.1 -Community prtg -OID 1.3.6.1.4.1.2604.5.1.6.1.1.1.1.4.4
Get-SnmpData -IP 10.102.1.1 -Community prtg -OID 1.3.6.1.4.1.2604.5.1.6.1.1.1.1.4.5 # Telekom
Get-SnmpData -IP 10.102.1.1 -Community prtg -OID 1.3.6.1.4.1.2604.5.1.6.1.1.1.1.4.6 # Kapelou
# Sophos SNMP lekérdezések VPN értékekhez
Get-SnmpData -IP 10.102.1.1 -Community prtg -OID 1.3.6.1.4.1.2604.5.1.6.1.1.1.1.9.3
Get-SnmpData -IP 10.102.1.1 -Community prtg -OID 1.3.6.1.4.1.2604.5.1.6.1.1.1.1.9.4
Get-SnmpData -IP 10.102.1.1 -Community prtg -OID 1.3.6.1.4.1.2604.5.1.6.1.1.1.1.9.5 # Telekom Wert
Get-SnmpData -IP 10.102.1.1 -Community prtg -OID 1.3.6.1.4.1.2604.5.1.6.1.1.1.1.9.6 # Kapelou wert
# Cisco 9200
Get-SnmpData -IP 10.102.1.61 -Community prtg -OID 1.3.6.1.2.1.2.2.1.2
Get-SnmpData -IP 10.102.1.61 -Community prtg -OID 1.3.6.1.2.1.31.1.1.1.1
Get-SnmpData -IP 10.102.1.61 -Community prtg -OID 1.3.6.1.2.1.2.2.1.2.13

View File

@@ -0,0 +1,24 @@
import imaplib
# ===== Einstellungen =====
IMAP_SERVER = "aps-exch01.aps.local"
IMAP_PORT = 993
USERNAME = "svc.fax_bestellung@aps-hh.de"
PASSWORD = "UyCcxoP8J^3yllLN/m*5"
# USERNAME = "i.meszely@aps-hh.de"
# PASSWORD = "virgI6774#Maci"
# IMAP-Verbindung aufbauen
mail = imaplib.IMAP4_SSL(IMAP_SERVER, IMAP_PORT)
mail.login(USERNAME, PASSWORD)
# Alle verfügbaren Mailboxen/Mappen listen
status, folders = mail.list()
if status == "OK":
print("Verfügbare Ordner/Mailboxen:")
for folder in folders:
print(folder.decode())
else:
print("Fehler beim Abrufen der Ordnerliste.")
# Verbindung schließen
mail.logout()

View File

@@ -0,0 +1,92 @@
import imaplib
import email
import os
from email.header import decode_header
# ===== Einstellungen =====
IMAP_SERVER = "aps-exch01.aps.local" # IMAP-Server-Adresse
IMAP_PORT = 993 # IMAP-SSL-Port
USERNAME = "i.meszely@aps-hh.de" # Benutzername / E-Mail-Adresse
PASSWORD = "virgI6774#Maci" # Passwort
MAILBOX = "INBOX" # Ordnername (z. B. "INBOX" oder "HelpDesk")
PROCESSED_FOLDER = "erledigt" # Zielordner für verarbeitete E-Mails
DOWNLOAD_DIR = r"C:\Downloads" # Speicherort für PDFs
# Verbindung herstellen
mail = imaplib.IMAP4_SSL(IMAP_SERVER, IMAP_PORT)
mail.login(USERNAME, PASSWORD)
# Ordner auswählen
mail.select(MAILBOX)
# Alle Nachrichten suchen (hier: alle E-Mails)
status, messages = mail.search(None, "ALL")
if status != "OK":
print("Fehler beim Abrufen der Nachrichtenliste")
mail.logout()
exit()
# Liste für zu löschende Nachrichten
delete_list = []
# Nachrichten verarbeiten
for num in messages[0].split():
try:
# Nachricht abrufen
status, data = mail.fetch(num, "(RFC822)")
if status != "OK":
print(f"Fehler beim Herunterladen der Nachricht {num}")
continue
msg = email.message_from_bytes(data[0][1])
pdf_found = False
# Betreff dekodieren
subject, encoding = decode_header(msg["Subject"])[0]
if isinstance(subject, bytes):
subject = subject.decode(encoding if encoding else "utf-8", errors="replace")
print(f"Verarbeite E-Mail: {subject}")
# Anhänge prüfen
for part in msg.walk():
if part.get_content_maintype() == "multipart":
continue
if part.get("Content-Disposition") is None:
continue
filename = part.get_filename()
if filename:
decoded_name, enc = decode_header(filename)[0]
if isinstance(decoded_name, bytes):
decoded_name = decoded_name.decode(enc if enc else "utf-8", errors="replace")
# Ungültige Zeichen im Dateinamen ersetzen
safe_filename = "".join(c if c.isalnum() or c in (" ", ".", "_", "-") else "_" for c in decoded_name)
if safe_filename.lower().endswith(".pdf"):
filepath = os.path.join(DOWNLOAD_DIR, safe_filename)
with open(filepath, "wb") as f:
f.write(part.get_payload(decode=True))
print(f"PDF gespeichert: {filepath}")
pdf_found = True
# Falls PDF gefunden → in Zielordner verschieben & später löschen
if pdf_found:
result = mail.copy(num, PROCESSED_FOLDER)
if result[0] == "OK":
delete_list.append(num)
else:
print(f"Fehler beim Verschieben der Nachricht {num}")
except Exception as e:
print(f"Fehler beim Verarbeiten der Nachricht {num}: {e}")
# Nach der Verarbeitung: löschen
for num in delete_list:
mail.store(num, "+FLAGS", "\\Deleted")
mail.expunge()
# Verbindung trennen
mail.logout()
print("Fertig! Alle neuen PDFs wurden heruntergeladen und verarbeitet.")

View File

@@ -0,0 +1,93 @@
import imaplib
import email
import os
from email.header import decode_header
# ===== Einstellungen =====
IMAP_SERVER = "aps-exch01.aps.local" # IMAP-Server-Adresse
IMAP_PORT = 993 # IMAP-SSL-Port
USERNAME = "i.meszely@aps-hh.de" # Benutzername / E-Mail-Adresse
PASSWORD = "virgI6774#Maci" # Passwort
# MAILBOX = 'HelpDesk/Inbox' # Der zu verwendende Ordner
MAILBOX = "INBOX" # Ordnername (z. B. "INBOX" oder "HelpDesk")
PROCESSED_FOLDER = "erledigt" # Zielordner für verarbeitete E-Mails
DOWNLOAD_DIR = r"\\aps-nb090\Test" # Speicherort für PDFs
# Verbindung herstellen
mail = imaplib.IMAP4_SSL(IMAP_SERVER, IMAP_PORT)
mail.login(USERNAME, PASSWORD)
# Ordner auswählen
mail.select(MAILBOX)
# Alle Nachrichten suchen (hier: alle E-Mails)
status, messages = mail.search(None, "ALL")
if status != "OK":
print("Fehler beim Abrufen der Nachrichtenliste")
mail.logout()
exit()
# Liste für zu löschende Nachrichten
delete_list = []
# Nachrichten verarbeiten
for num in messages[0].split():
try:
# Nachricht abrufen
status, data = mail.fetch(num, "(RFC822)")
if status != "OK":
print(f"Fehler beim Herunterladen der Nachricht {num}")
continue
msg = email.message_from_bytes(data[0][1])
pdf_found = False
# Betreff dekodieren
subject, encoding = decode_header(msg["Subject"])[0]
if isinstance(subject, bytes):
subject = subject.decode(encoding if encoding else "utf-8", errors="replace")
print(f"Verarbeite E-Mail: {subject}")
# Anhänge prüfen
for part in msg.walk():
if part.get_content_maintype() == "multipart":
continue
if part.get("Content-Disposition") is None:
continue
filename = part.get_filename()
if filename:
decoded_name, enc = decode_header(filename)[0]
if isinstance(decoded_name, bytes):
decoded_name = decoded_name.decode(enc if enc else "utf-8", errors="replace")
# Ungültige Zeichen im Dateinamen ersetzen
safe_filename = "".join(c if c.isalnum() or c in (" ", ".", "_", "-") else "_" for c in decoded_name)
if safe_filename.lower().endswith(".pdf"):
filepath = os.path.join(DOWNLOAD_DIR, safe_filename)
with open(filepath, "wb") as f:
f.write(part.get_payload(decode=True))
print(f"PDF gespeichert: {filepath}")
pdf_found = True
# Falls PDF gefunden → in Zielordner verschieben & später löschen
if pdf_found:
result = mail.copy(num, PROCESSED_FOLDER)
if result[0] == "OK":
delete_list.append(num)
else:
print(f"Fehler beim Verschieben der Nachricht {num}")
except Exception as e:
print(f"Fehler beim Verarbeiten der Nachricht {num}: {e}")
# Nach der Verarbeitung: löschen
for num in delete_list:
mail.store(num, "+FLAGS", "\\Deleted")
mail.expunge()
# Verbindung trennen
mail.logout()
print("Fertig! Alle neuen PDFs wurden heruntergeladen und verarbeitet.")

View File

@@ -0,0 +1,93 @@
import imaplib
import email
import os
from email.header import decode_header
# ===== Einstellungen =====
IMAP_SERVER = "aps-exch01.aps.local" # IMAP-Server-Adresse
IMAP_PORT = 993 # IMAP-SSL-Port
USERNAME = "Bestellung-Fax-Eingang@aps-hh.de" # Benutzername / E-Mail-Adresse
PASSWORD = "kX%tTFC~ZR!;S#Q~h!T^22" # Passwort
# MAILBOX = 'HelpDesk/Inbox' # Der zu verwendende Ordner
MAILBOX = "INBOX" # Ordnername (z. B. "INBOX" oder "HelpDesk")
PROCESSED_FOLDER = "erledigt" # Zielordner für verarbeitete E-Mails
DOWNLOAD_DIR = r"\\aps-nb090\test" # Speicherort für PDFs
# Verbindung herstellen
mail = imaplib.IMAP4_SSL(IMAP_SERVER, IMAP_PORT)
mail.login(USERNAME, PASSWORD)
# Ordner auswählen
mail.select(MAILBOX)
# Alle Nachrichten suchen (hier: alle E-Mails)
status, messages = mail.search(None, "ALL")
if status != "OK":
print("Fehler beim Abrufen der Nachrichtenliste")
mail.logout()
exit()
# Liste für zu löschende Nachrichten
delete_list = []
# Nachrichten verarbeiten
for num in messages[0].split():
try:
# Nachricht abrufen
status, data = mail.fetch(num, "(RFC822)")
if status != "OK":
print(f"Fehler beim Herunterladen der Nachricht {num}")
continue
msg = email.message_from_bytes(data[0][1])
pdf_found = False
# Betreff dekodieren
subject, encoding = decode_header(msg["Subject"])[0]
if isinstance(subject, bytes):
subject = subject.decode(encoding if encoding else "utf-8", errors="replace")
print(f"Verarbeite E-Mail: {subject}")
# Anhänge prüfen
for part in msg.walk():
if part.get_content_maintype() == "multipart":
continue
if part.get("Content-Disposition") is None:
continue
filename = part.get_filename()
if filename:
decoded_name, enc = decode_header(filename)[0]
if isinstance(decoded_name, bytes):
decoded_name = decoded_name.decode(enc if enc else "utf-8", errors="replace")
# Ungültige Zeichen im Dateinamen ersetzen
safe_filename = "".join(c if c.isalnum() or c in (" ", ".", "_", "-") else "_" for c in decoded_name)
if safe_filename.lower().endswith(".pdf"):
filepath = os.path.join(DOWNLOAD_DIR, safe_filename)
with open(filepath, "wb") as f:
f.write(part.get_payload(decode=True))
print(f"PDF gespeichert: {filepath}")
pdf_found = True
# Falls PDF gefunden → in Zielordner verschieben & später löschen
if pdf_found:
result = mail.copy(num, PROCESSED_FOLDER)
if result[0] == "OK":
delete_list.append(num)
else:
print(f"Fehler beim Verschieben der Nachricht {num}")
except Exception as e:
print(f"Fehler beim Verarbeiten der Nachricht {num}: {e}")
# Nach der Verarbeitung: löschen
for num in delete_list:
mail.store(num, "+FLAGS", "\\Deleted")
mail.expunge()
# Verbindung trennen
mail.logout()
print("Fertig! Alle neuen PDFs wurden heruntergeladen und verarbeitet.")

View File

@@ -0,0 +1,44 @@
import imaplib
import email
import os
# IMAP szerver és hitelesítés
IMAP_SERVER = "aps-exch01.aps.local"
IMAP_PORT = 993
USERNAME = "i.meszely@aps-hh.de"
PASSWORD = "virgI6774#Maci"
DOWNLOAD_DIR = r"C:\Downloads"
if not os.path.exists(DOWNLOAD_DIR):
os.makedirs(DOWNLOAD_DIR)
# Kapcsolódás IMAP SSL-lel
mail = imaplib.IMAP4_SSL(IMAP_SERVER, IMAP_PORT)
mail.login(USERNAME, PASSWORD)
# Beérkezett üzenetek mappa kiválasztása
mail.select("INBOX")
# Csak olvasatlan levelek keresése
status, messages = mail.search(None, '(UNSEEN)')
if status == "OK":
for num in messages[0].split():
status, data = mail.fetch(num, "(RFC822)")
if status != "OK":
continue
msg = email.message_from_bytes(data[0][1])
for part in msg.walk():
if part.get_content_type() == "application/pdf":
filename = part.get_filename()
if filename:
filepath = os.path.join(DOWNLOAD_DIR, filename)
with open(filepath, "wb") as f:
f.write(part.get_payload(decode=True))
print(f"Letöltve: {filepath}")
# Kapcsolat bontása
mail.close()
mail.logout()

View File

@@ -0,0 +1,64 @@
import imaplib
import email
import os
# ===== Beállítások =====
IMAP_SERVER = "imap.szervered.hu"
IMAP_PORT = 993
USERNAME = "felhasznalo@domain.hu"
PASSWORD = "jelszo"
DOWNLOAD_DIR = r"C:\Downloads"
PROCESSED_FOLDER = "fertig" # almappa neve az INBOX-ban
# Letöltési mappa létrehozása, ha nem létezik
if not os.path.exists(DOWNLOAD_DIR):
os.makedirs(DOWNLOAD_DIR)
# IMAP csatlakozás
mail = imaplib.IMAP4_SSL(IMAP_SERVER, IMAP_PORT)
mail.login(USERNAME, PASSWORD)
# Beérkezett üzenetek mappa kiválasztása
mail.select("INBOX")
# Minden levél ID-jának lekérése
status, messages = mail.search(None, "ALL")
if status != "OK":
print("Nem sikerült lekérni az üzeneteket.")
mail.logout()
exit()
# Ellenőrizzük, hogy létezik-e a 'fertig' mappa, ha nem, létrehozzuk
mail.create(PROCESSED_FOLDER)
# Minden levél feldolgozása
for num in messages[0].split():
status, data = mail.fetch(num, "(RFC822)")
if status != "OK":
print(f"Hiba az {num} üzenet letöltésekor.")
continue
msg = email.message_from_bytes(data[0][1])
pdf_found = False
for part in msg.walk():
if part.get_content_type() == "application/pdf":
filename = part.get_filename()
if filename:
filepath = os.path.join(DOWNLOAD_DIR, filename)
with open(filepath, "wb") as f:
f.write(part.get_payload(decode=True))
print(f"Letöltve: {filepath}")
pdf_found = True
# Ha volt PDF, akkor a levelet áthelyezzük a 'fertig' mappába
if pdf_found:
result = mail.copy(num, PROCESSED_FOLDER)
if result[0] == "OK":
mail.store(num, "+FLAGS", "\\Deleted")
mail.expunge()
print(f"Levél áthelyezve a '{PROCESSED_FOLDER}' mappába.")
# Kapcsolat bontása
mail.close()
mail.logout()

View File

@@ -0,0 +1,30 @@
# To force enable TLS 1.2, add the registry entries below:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001
# To enable system encryption protocols for .Net 3.5 and 2.0:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727]
"SchUseStrongCrypto"=dword:00000001
# For .Net 4.x:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
# To enable using TLS 1.2 for WinHTTP:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp]
"DefaultSecureProtocols"=dword:00000800
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp]
"DefaultSecureProtocols"=dword:00000800

View File

@@ -0,0 +1,10 @@
CREATE DATABASE drucklog;
CREATE USER IF NOT EXIST 'druckloguser'@'%' IDENTIFIED BY 'Test123#';
SELECT user, host FROM mysql.user;
GRANT ALL PRIVILEGES ON drucklog.* TO 'druckloguser'@'%';
FLUSH PRIVILEGES;
EXIT;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'eprencs';
FLUSH PRIVILEGES;

View File

@@ -0,0 +1,14 @@
CREATE TABLE drucklog (
id INT AUTO_INCREMENT PRIMARY KEY,
event_id BIGINT,
datum DATETIME,
tag DATE,
woche INT,
benutzer VARCHAR(100),
computer VARCHAR(100),
dokument VARCHAR(255),
drucker VARCHAR(255),
seiten INT,
quelle_server VARCHAR(100),
UNIQUE KEY(event_id, quelle_server)
);

80
Scripts/sql/Statistik.sql Normal file
View File

@@ -0,0 +1,80 @@
-- Nach Druckern sortierte Druckstatistik
SELECT
drucker AS `Drucker`,
SUM(seiten) AS `Alle Seiten`
FROM drucklog
GROUP BY drucker
ORDER BY `Alle Seiten` DESC;
-- Tägliche Druckstatistik
SELECT
DATE(datum) AS `Datum`,
SUM(seiten) AS `Alle Seiten`
FROM drucklog
GROUP BY DATE(datum)
ORDER BY `Datum`;
-- Täglich nach Drucker sortierte Druckstatistik
SELECT
DATE(datum) AS `Datum`,
drucker AS `Drucker`,
SUM(seiten) AS `Alle Seiten`
FROM drucklog
GROUP BY DATE(datum), drucker
ORDER BY `Datum`, `Drucker`;
-- Wöchentlich Druckstatistik
SELECT
DATE_FORMAT(datum, '%Y-%u') AS `Woche`,
SUM(seiten) AS `Alle Seiten`
FROM drucklog
GROUP BY DATE_FORMAT(datum, '%Y-%u')
ORDER BY `Woche`;
-- Wöchentlich nach Drucker sortierte Druckstatistik
SELECT
DATE_FORMAT(datum, '%Y-%u') AS `Woche`,
drucker AS `Drucker`,
SUM(seiten) AS `Alle Seiten`
FROM drucklog
GROUP BY DATE_FORMAT(datum, '%Y-%u'), drucker
ORDER BY `Woche`, `Drucker`;
-- Tägliche Druckstatistik für einen bestimmten Drucker
SELECT
DATE(datum) AS `Datum`,
drucker AS `Drucker`,
SUM(seiten) AS `Alle Seiten`
FROM drucklog
WHERE drucker = 'NYOMTATO_NEVE'
AND DATE(datum) = CURDATE()
GROUP BY DATE(datum), drucker;
-- Täglich nach Rechner sortierte Druckstatistik
SELECT
DATE(datum) AS `Datum`,
rechner AS `Rechner`,
SUM(seiten) AS `Alle Seiten`
FROM drucklog
GROUP BY DATE(datum), rechner
ORDER BY `Datum`, `Rechner`;
-- Monatliche Druckstatistik venigsten gedrucht Seiten
SELECT
DATE_FORMAT(datum, '%Y-%m') AS `Monat`,
SUM(seiten) AS `Alle Seiten`
FROM drucklog
GROUP BY DATE_FORMAT(datum, '%Y-%m')
ORDER BY `Alle Seiten` ASC
LIMIT 9;
-- Nach Druckern sortierte Druckstatistik ( auser paar Drucker )
SELECT
drucker AS `Drucker`,
SUM(seiten) AS `Alle Seiten`
FROM drucklog
WHERE drucker NOT IN ('Elbe Fach 2', 'Elbe Fach A', 'Elbe Fach B', 'Elbe Fach 1', 'Weser Fach 4', 'Weser Fach 7', 'Elbe Fach 7')
GROUP BY drucker
ORDER BY `Alle Seiten` ASC
LIMIT 10;

View File

@@ -0,0 +1,73 @@
1. PostgreSQL VM (adatbázis)
Hostname: postresq.home.meszely.eu
apt update && apt upgrade -y
apt install -y postgresql
CREATE USER synapse WITH PASSWORD 'soseTudodMegMertNemMondomMeg';
CREATE DATABASE synapse OWNER synapse ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' template=template0;
#A postgresql.conf -ban engedélyezs a tävoli hozzäférést.
listen_addresses = '*'
# Itt engedélyezd a belsö hälozati VMek IP-jét.
pg_hba.conf
2. Synapse VM (Matrix szerver)
apt update && apt upgrade -y
apt install -y lsb-release wget apt-transport-https
wget -qO - https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg | sudo tee /usr/share/keyrings/matrix-org-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/matrix-org.list
apt update
apt install -y matrix-synapse-py3
Konfiguráció:
Server name: pl. matrix.sajatdomain.hu
Database: PostgreSQL add meg a Postgres VM IP-jét, adatbázist, felhasználót.
Kikapcsolhatod a federationt, ha csak családnak akarod:
homeserver.yaml federation_domain_whitelist: []
3. Nginx Reverse Proxy VM
apt update && apt upgrade -y
apt install -y nginx certbot python3-certbot-nginx
Konfiguráció:
Egy host conf a Matrixnak (pl. /etc/nginx/sites-available/matrix.sajatdomain.hu):
server {
server_name matrix.sajatdomain.hu;
location / {
proxy_pass http://SYNAPSE_VM_IP:8008;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
}
}
ln -s /etc/nginx/sites-available/matrix.sajatdomain.hu /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx
certbot --nginx -d matrix.sajatdomain.hu
4. Első belépés
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008
Ezzel tudsz belépni pl. az Element kliensből.
Később a családtagokat is te hozod létre.
5. Opcionális bővítések
Element Web vagy Element Docker külön VM-en webes kliens.
Botok (pl. naptár emlékeztető, bridge Discord/Telegram felé).
Monitoring (pl. Prometheus exporter a Synapse-hoz).

View File

@@ -0,0 +1,14 @@
CREATE TABLE drucklog (
id INT AUTO_INCREMENT PRIMARY KEY,
event_id BIGINT,
datum DATETIME,
tag DATE,
woche INT,
benutzer VARCHAR(100),
computer VARCHAR(100),
dokument VARCHAR(255),
drucker VARCHAR(255),
seiten INT,
quelle_server VARCHAR(100),
UNIQUE KEY(event_id, quelle_server)
);