Compare commits

..

74 Commits

Author SHA1 Message Date
312e4e713f docker refresh 2026-03-25 14:01:26 +01:00
7d5d3dc0c8 script német verzio 2026-03-25 11:51:13 +01:00
8167a3ffff neue script, check file age 2026-03-25 11:34:33 +01:00
3e68e96c8a script de verzio 2026-03-25 10:18:00 +01:00
3b9b7f8789 1 2026-03-25 10:09:23 +01:00
62f739344c . 2026-03-25 10:09:04 +01:00
9b913a48bb képek sharepointhoz pl 2026-03-25 08:31:57 +01:00
c1f1b48f6b . 2026-03-24 16:17:51 +01:00
acd7daf36f dokument update 2026-03-24 15:56:24 +01:00
36ac72ec82 neu diabetes dokument 2026-03-24 14:49:43 +01:00
440ce4d688 doku für APS-SFTP01 2026-03-24 10:39:41 +01:00
99b400cbc1 conf file aktualizäläs 2026-03-23 14:04:26 +01:00
d78c846898 . 2026-03-23 10:00:50 +01:00
e44480505e sauber machen 2026-03-20 14:39:23 +01:00
625d2fc6bf putzen 2026-03-19 14:46:37 +01:00
324c1b7735 . 2026-03-18 14:53:07 +01:00
4a028aab5f sftp 2026-03-18 14:21:34 +01:00
95cc7edba5 . 2026-03-18 14:10:32 +01:00
f5802c9be3 . 2026-03-18 14:07:58 +01:00
d77bdac13f sharepoint 2026-03-17 08:29:02 +01:00
40fa971f06 . 2026-03-16 12:31:44 +01:00
78a88900d8 postfix 2026-03-16 12:13:07 +01:00
e91094e344 update 2026-03-16 11:28:18 +01:00
d7c6577ec1 . 2026-03-16 08:46:30 +01:00
865449cf9c example 2026-03-12 15:56:55 +01:00
7a33e9e082 . 2026-03-12 15:54:54 +01:00
719efbd809 . 2026-03-12 15:44:52 +01:00
277093a761 drucker_app 2026-03-12 15:44:42 +01:00
ea43b5cb6c grafana docker 2026-03-09 16:21:48 +01:00
dfd31c3db2 uj guide 2026-03-09 09:31:01 +01:00
68cd4009bc ordner update 2026-03-04 14:37:41 +01:00
0c7d172552 AD_user scripts 2026-03-04 13:52:31 +01:00
ac1123c989 mac address 2026-03-03 14:08:56 +01:00
b48d2ee03d pwd 2026-03-02 08:08:28 +01:00
90869f9e17 . 2026-02-27 10:09:06 +01:00
1538e7c634 klein update 2026-02-26 12:01:18 +01:00
6864d29ffb . 2026-02-24 15:15:02 +01:00
414ee2d3d6 . 2026-02-20 14:43:45 +01:00
6271755289 . 2026-02-19 15:56:40 +01:00
2804ef2146 . 2026-02-19 15:56:22 +01:00
616edabf0e . 2026-02-19 15:02:49 +01:00
67b737ea79 . 2026-02-19 14:52:03 +01:00
dbb8f1509c fisch 2026-02-18 15:40:00 +01:00
0ac7beeba9 . 2026-02-16 09:06:15 +01:00
5d481e95fd . 2026-02-13 10:35:58 +01:00
8ada6689ae autostart 2026-02-13 09:08:29 +01:00
e2bd5746f5 . 2026-02-13 07:48:41 +01:00
7f54f37978 delete some old file 2026-02-12 11:58:41 +01:00
5ae2747835 pdf script 2.2 2026-02-11 14:14:22 +01:00
23a60c6250 neue struktur 2026-02-11 10:16:40 +01:00
42531d6e9c default changes 2026-02-11 10:15:40 +01:00
1b3f9e8657 .. 2026-02-11 10:15:24 +01:00
2f93b02baa scriptupdate 2026-02-09 12:24:10 +01:00
8adbee9f1d . 2026-02-09 12:23:45 +01:00
d8eb92319b n8n aps 2026-02-06 16:17:59 +01:00
9149976db4 . update 2026-02-06 14:49:01 +01:00
3b70e1c5fb uj apy key 2026-02-06 08:17:16 +01:00
ff9d926a68 organizieren files 2026-02-05 13:42:57 +01:00
0d3fd26237 pihole 2026-02-05 13:36:54 +01:00
dea51f0081 neu script 2026-02-05 08:53:36 +01:00
e4dcaf6991 . 2026-02-04 15:44:54 +01:00
479c91394c . 2026-02-04 14:10:19 +01:00
758f9e8405 get app permission 2026-02-04 13:31:20 +01:00
0d5673b02c script uj vältozatok 2026-02-04 12:56:12 +01:00
2e0a3c9e75 doc updates 2026-02-04 08:20:33 +01:00
321402f9b7 pandabot 2026-02-03 14:15:28 +01:00
be4aa52794 pdf script update 2026-02-03 13:47:51 +01:00
d203dc4df8 file move 2026-02-02 15:34:11 +01:00
15a35f2b60 uj pdf 2026-02-02 14:27:31 +01:00
05c0dd7d8c . 2026-02-02 13:26:09 +01:00
45824c14ae config changes 2026-01-30 15:40:07 +01:00
2fb174ccc4 update 2026-01-30 13:23:49 +01:00
2100ab916c .putzen 2026-01-30 12:36:27 +01:00
b0e5318ae6 ufw rules 2026-01-30 12:27:46 +01:00
131 changed files with 4951 additions and 800 deletions

1
.gitignore vendored
View File

@@ -3,3 +3,4 @@
Backup/Sophos/APS_HH.scx Backup/Sophos/APS_HH.scx
*.log *.log
*.log *.log
*.lock

BIN
App/ITPW.kdbx Normal file

Binary file not shown.

Binary file not shown.

BIN
App/TD-4420TN.exe Normal file

Binary file not shown.

View File

@@ -0,0 +1,11 @@
[
{
"gateway": "vpn.aps-hh.de",
"user_portal_port": 7443,
"otp": false,
"auto_connect_host": "<Enter internal hostname or IP address>",
"can_save_credentials": false,
"check_remote_availability": false,
"run_logon_script": true
}
]

Binary file not shown.

54
Conf/LibreNMS/LibreNMS.md Normal file
View File

@@ -0,0 +1,54 @@
$.devices[*].hardware
$.devices[*].type
{
"status": "ok",
"devices": [
{
"device_id": 48,
"inserted": "2026-03-09 15:40:30",
"hostname": "10.101.0.201",
"sysName": "10.101.0.201",
"display": "NET-ZE02_(ZG)",
"ip": "10.101.0.201",
"overwrite_ip": null,
"community": null,
"authlevel": null,
"authname": null,
"authpass": null,
"authalgo": null,
"cryptopass": null,
"cryptoalgo": null,
"snmpver": "v2c",
"port": 161,
"transport": "udp",
"timeout": null,
"retries": null,
"snmp_disable": 1,
"bgpLocalAs": null,
"sysObjectID": null,
"sysDescr": null,
"sysContact": null,
"version": null,
"hardware": "",
"features": null,
"location_id": null,
"os": "ping",
"status": 1,
"status_reason": "",
"ignore": 0,
"disabled": 0,
"uptime": null,
"agent_uptime": 0,
"last_polled": "2026-03-11 14:53:50",
"last_poll_attempted": null,
"last_polled_timetaken": 1.0587911605835,
"last_discovered_timetaken": 1.3786909580231,
"last_discovered": "2026-03-11 13:00:46",
"last_ping": "2026-03-11 14:53:49",
"last_ping_timetaken": 0.76,
"purpose": null,
"type": "",
"serial": null,
"icon": null,

View File

@@ -0,0 +1,54 @@
# SNMP Beállítási Útmutató (Aruba AOS-CX)
Ez az útmutató az Aruba 8360, 6300, 6100 és 6000 sorozatú (AOS-CX) switchekhez használható.
## 1. SNMP Alapbeállítások
Lépj be konfigurációs módba (`conf t`), és add ki az alábbi parancsokat:
```bash
# SNMP Közösségi név (Community) beállítása (Read-Only)
snmp-server community prtg
# Rendszerinformációk (opcionális, de ajánlott)
snmp-server system-location "Serverraum"
snmp-server system-contact "Jan Baulig"
```
## 2. SNMP Engedélyezése a hálózaton (KRITIKUS)
Az AOS-CX switcheken az SNMP alapértelmezés szerint tiltva van minden hálózati szegmensben (VRF). Engedélyezni kell ott, ahol a switch IP-címe található.
**A) Ha a switch IP-je egy VLAN-on van (pl. vlan 97):**
```bash
snmp-server vrf default
```
**B) Ha a különálló Management (OOBM) portot használod:**
```bash
snmp-server vrf mgmt
```
## 3. Ellenőrző parancsok
A switchen az alábbi parancsokkal ellenőrizheted a működést:
```bash
# Megmutatja az aktív community-ket
show snmp community
# Megmutatja, melyik VRF-en figyel az SNMP
show snmp vrf
# Általános SNMP állapot és statisztika
show snmp
```
## 4. LibreNMS Hozzáadás / Frissítés
Ha az eszköz már benne van a LibreNMS-ben, de csak Ping-gel:
1. Az eszköz oldalán: **Edit** -> **SNMP**.
2. **SNMP Version:** `v2c`.
3. **Community:** `prtg`.
4. **Mentés.**
5. Futtass egy kézi felfedezést a LibreNMS szerveren:
`docker exec -it librenms lnms device:discover [IP_CIM]`
# Docker force übervachung
docker exec -it librenms lnms device:discover 10.220.1.85

View File

@@ -0,0 +1,38 @@
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
broken_sasl_auth_clients = yes
command_directory = /usr/bin
compatibility_level = 3.10
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
html_directory = no
inet_interfaces = all
inet_protocols = all
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
meta_directory = /etc/postfix
mydestination = $myhostname, localhost.$mydomain, localhost
myhostname = antares-apo.local
mynetworks = 127.0.0.0/8, 10.102.9.0/24, 10.101.0.0/16, 10.102.1.0/24
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix/README_FILES
relayhost = [aps-exch01.aps.local]:25
sample_directory = /usr/share/doc/postfix/samples
sendmail_path = /usr/bin/sendmail.postfix
setgid_group = postdrop
shlib_directory = /usr/lib64/postfix
smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt
smtp_tls_CApath = /etc/pki/tls/certs
smtp_tls_security_level = may
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_tls_cert_file = /etc/pki/tls/certs/postfix.pem
smtpd_tls_key_file = /etc/pki/tls/private/postfix.key
smtpd_tls_security_level = may
unknown_local_recipient_reject_code = 550

View File

@@ -1,7 +0,0 @@
<<<<<<< HEAD
# Matrix - n8n-bot - Accesstoken
syt_Ym90LW44bg_RMzxOFQllPjSPsRWAHvb_0FeoGL
=======
# bot-n8n access token
syt_Ym90LW44bg_AbviDZpPwRhLydqppDvv_2OfdD8
>>>>>>> 2e10f37 (token)

View File

@@ -0,0 +1,30 @@
server {
server_name admin.matrix.home.meszely.eu;
location / {
proxy_pass http://10.11.3.161:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/admin.matrix.home.meszely.eu/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/admin.matrix.home.meszely.eu/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = admin.matrix.home.meszely.eu) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name admin.matrix.home.meszely.eu;
return 404; # managed by Certbot
}

View File

@@ -0,0 +1,39 @@
server {
server_name gitea.home.meszely.eu;
# Ezt a sort is kommentezd ki most:
# return 301 https://$host$request_uri;
# Az Nginx-nek tudnia kell, hova tegye a Certbot challenge fájlját.
# Ha nincs beállítva root, ideiglenesen adjunk meg egyet.
# Ez a location blokk elegendő a Certbotnak.
location / {
proxy_pass http://10.11.3.98:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 500M;
proxy_read_timeout 300s;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/gitea.home.meszely.eu/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/gitea.home.meszely.eu/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = gitea.home.meszely.eu) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
listen [::]:80;
server_name gitea.home.meszely.eu;
return 404; # managed by Certbot
}

View File

@@ -0,0 +1,35 @@
server {
server_name n8n.home.meszely.eu;
location / {
proxy_pass http://10.11.3.199:5678;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
listen 80;
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/n8n.home.meszely.eu/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/n8n.home.meszely.eu/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = n8n.home.meszely.eu) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name n8n.home.meszely.eu;
listen 80;
return 404; # managed by Certbot
}

View File

@@ -0,0 +1,31 @@
server {
server_name matrix.home.meszely.eu;
client_max_body_size 10M;
location / {
proxy_pass http://10.11.3.160:8008;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/matrix.home.meszely.eu/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/matrix.home.meszely.eu/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = matrix.home.meszely.eu) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name matrix.home.meszely.eu;
return 404; # managed by Certbot
}

View File

@@ -1,9 +0,0 @@
docker run -d \
--name pihole.home.meszely.eu \
--network pihole \
--ip 10.11.3.1 \
--cap-add=NET_ADMIN \
-e TZ=Europe/Berlin \
-v /Docker/PIHOLE:/etc/pihole \
--restart unless-stopped \
pihole/pihole:latest

View File

@@ -0,0 +1,39 @@
# More info at https://github.com/pi-hole/docker-pi-hole/ and https://docs.pi-hole.net/
services:
pihole:
container_name: pihole
image: pihole/pihole:latest
ports:
# DNS Ports
- "53:53/tcp"
- "53:53/udp"
# Default HTTP Port
- "80:80/tcp"
# Default HTTPs Port. FTL will generate a self-signed certificate
- "443:443/tcp"
# Uncomment the line below if you are using Pi-hole as your DHCP server
- "67:67/udp"
# Uncomment the line below if you are using Pi-hole as your NTP server
- "123:123/udp"
environment:
# Set the appropriate timezone for your location (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones), e.g:
TZ: 'Europe/Berlin'
# Set a password to access the web interface. Not setting one will result in a random password being assigned
FTLCONF_webserver_api_password: 'correct horse battery staple'
# If using Docker's default `bridge` network setting the dns listening mode should be set to 'ALL'
FTLCONF_dns_listeningMode: 'ALL'
# Volumes store your data between container upgrades
volumes:
# For persisting Pi-hole's databases and common configuration file
- './etc-pihole:/etc/pihole'
# Uncomment the below if you have custom dnsmasq config files that you want to persist. Not needed for most starting fresh with Pi-hole v6. If you're upgrading from v5 you and have used this directory before, you should keep it enabled for the first v6 container start to allow for a complete migration. It can be removed afterwards. Needs environment variable FTLCONF_misc_etc_dnsmasq_d: 'true'
#- './etc-dnsmasq.d:/etc/dnsmasq.d'
cap_add:
# See https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
# Required if you are using Pi-hole as your DHCP server, else not needed
- NET_ADMIN
# Required if you are using Pi-hole as your NTP client to be able to set the host's system time
- SYS_TIME
# Optional, if Pi-hole should get some more processing time
- SYS_NICE
restart: unless-stopped

View File

@@ -0,0 +1,14 @@
docker run -it --rm --mount type=volume,src=synapse-data,dst=/data -e SYNAPSE_SERVER_NAME=matrix.meszely.eu -e SYNAPSE_REPORT_STATS=yes matrixdotorg/synapse:latest generate
docker run -d --name synapse --mount type=volume,src=synapse-data,dst=/data -p 8008:8008 matrixdotorg/synapse:latest
# uj felhasznälo
docker exec -it synapse register_new_matrix_user -c /data/homeserver.yaml http://localhost:8008
# wpanda
# EsT4 x9g5 C5fy mQ8N wwN3 VBTh EnqF n8un rZ4K 8Czv mYWr 7T1u
# pandabot
EsTP ciPf 3cWG E62g 6wWk q2vw p8Ds Dzxx KcZy xFMN cB4w y1pX
# dev key
syt_cGFuZGFib3Q_ILXWcPmRbRbqkABuLVmt_1yM7WZ

View File

@@ -0,0 +1,22 @@
# Basic UFW Rules
#
# First Reset
sudo ufw --force reset
# Allow SSH
sudo ufw allow ssh
# Allow HTTP
sudo ufw allow 80/tcp
# Allow HTTPS
sudo ufw allow 443/tcp
# Allow N8N
sudo ufw allow 5678/tcp
# Deny all other incoming traffic
sudo ufw default deny incoming
# Allow all outgoing traffic
sudo ufw default allow outgoing

View File

@@ -0,0 +1,56 @@
# Systemdokumentation: APS-SFTP01 Datenaustausch-Server
Dieses Dokument beschreibt die Funktionsweise, das Berechtigungssystem und die Zugriffspfade des Servers **APS-SFTP01 (10.102.1.202)**. Der Server dient zwei getrennten Importprozessen.
## 1. Systemübersicht
Der Server fungiert als zentraler Datenaustauschpunkt für die Systeme Bremen und Amondis:
1. **Bremen-Mave Import:** Empfang externer Daten über SFTP.
2. **Amondis-Mave Import:** Empfang externer Daten über SMB (Samba), und import nach Mave mit SFTP Protokolle.
## 2. Benutzer und Zugriff
┌──────────────────┬──────────────┬───────────────┬─────────────────┬─────────────────────────────┐
│ Benutzer │ Prozess │ Typ │ Shell │ Aufgabe │
├──────────────────┼──────────────┼───────────────┼─────────────────┼─────────────────────────────┤
│ mave-sftp │ Bremen-Mave │ Nur SFTP │ /sbin/nologin │ Import von Bremen-Daten │
│ mave-amondis │ Amondis-Mave │ SFTP & SMB │ /sbin/nologin │ Import von Amondis-Daten │
└──────────────────┴──────────────┴───────────────┴─────────────────┴─────────────────────────────┘
*Hinweis: Keiner der Benutzer ist für eine interaktive SSH-Anmeldung (Terminal) berechtigt.*
## 3. Verzeichnisstruktur und Berechtigungen
### Bremen-Mave Import (mave-sftp)
┌────────────────────────────────────────┬─────────────────────┬──────────────┬──────────────────────────────────┐
│ Pfad │ Besitzer │ Berechtigung │ Rolle │
├────────────────────────────────────────┼─────────────────────┼──────────────┼──────────────────────────────────┤
│ /home/mave-sftp │ root:root │ 755 │ SFTP Chroot-Gefängnis │
│ /home/mave-sftp/Schnittstellen/Bremen │ mave-sftp:mave-sftp │ 775 │ Beschreibbarer Ordner für Bremen │
└────────────────────────────────────────┴─────────────────────┴──────────────┴──────────────────────────────────┘
### Amondis-Mave Import (mave-amondis)
┌───────────────────────────────────────────────┬───────────────────────────┬──────────────┬─────────────────────────────┐
│ Pfad │ Besitzer │ Berechtigung │ Rolle │
├───────────────────────────────────────────────┼───────────────────────────┼──────────────┼─────────────────────────────┤
│ /home/mave-amondis │ root:root │ 755 │ SFTP Home (nicht schreibbar)|
│ /home/mave-amondis/Schnittstellen │ root:root │ 755 │ SFTP Chroot-Gefängnis │
│ /home/mave-amondis/Schnittstellen/Amondis/APO │ mave-amondis:mave-amondis │ 775 │ Beschreibbares Verzeichnis │
└───────────────────────────────────────────────┴───────────────────────────┴──────────────┴─────────────────────────────┘
## 4. Netzwerkzugriff
### SMB (Windows Freigabe)
* **Amondis-Pfad:** `\\10.102.1.202\mave-amondis\Schnittstellen\Amondis\APO`
* **Funktionsweise:** Samba verwendet die Einstellung `force user = mave-amondis`, um Berechtigungskonflikte zu vermeiden.
### SFTP (Secure FTP)
* **Bremen-Verbindung:** `sftp://mave-sftp@10.102.1.202` (sieht nach der Anmeldung den Ordner `mave-amondis\Schnittstellen\Bremen`).
* **Amondis-Verbindung:** `sftp://mave-amondis@10.102.1.202` (sieht nach der Anmeldung den Ordner `Amondis\APO`).
## 5. Automatische Benachrichtigungen (Monitoring)
Bei jeder erfolgreichen Anmeldung (für beide Benutzer) wird eine E-Mail-Benachrichtigung an den Administrator gesendet (`i.meszely@antares-apo.de`).
* **Script-Speicherort:** `/usr/local/sbin/sftp-notify.sh`
* **Funktionsweise:** Das Script wird durch das PAM-System (Pluggable Authentication Modules) bei jedem `open_session`-Ereignis aufgerufen. Es unterscheidet zwischen SFTP (eingeschränkt) und interaktiven SSH-Anmeldungen anhand der Benutzer-Shell und versendet die Details (Benutzer, Remote-IP, Zeitstempel) per E-Mail.
* **Logdatei:** `/tmp/sftp-notify.log` (für das Debugging).
---
*Aktualisiert am: 25. März 2026*

View File

@@ -0,0 +1,56 @@
# Rendszerdokumentáció: APS-SFTP01 Adatcsere Szerver
Ez a dokumentum az **APS-SFTP01 (10.102.1.202)** szerver működését, jogosultsági rendszerét és elérési útjait foglalja össze. A szerver két elkülönített import folyamatot szolgál ki.
## 1. Rendszer Áttekintés
A szerver központi adatcsere pontként funkcionál a Bremen és az Amondis rendszerek felé:
1. **Bremen-Mave Import:** Külső adatok fogadása SFTP-n keresztül.
2. **Amondis-Mave Import:** Belső és külső adatcsere SMB (Samba) és SFTP protokollokon.
## 2. Felhasználók és Hozzáférés
┌──────────────────┬──────────────┬───────────────┬─────────────────┬───────────────────────────┐
│ Felhasználó │ Folyamat │ Típus │ Shell │ Feladat │
├──────────────────┼──────────────┼───────────────┼─────────────────┼───────────────────────────┤
│ mave-sftp │ Bremen-Mave │ Csak SFTP │ /sbin/nologin │ Bremen adatok importálása │
│ mave-amondis │ Amondis-Mave │ SFTP & SMB │ /sbin/nologin │ Amondis adatok kezelése │
└──────────────────┴──────────────┴───────────────┴─────────────────┴───────────────────────────┘
*Megjegyzés: Egyik felhasználó sem jogosult interaktív SSH (terminál) belépésre.*
## 3. Könyvtárstruktúra és Jogosultságok
### Bremen-Mave Import (mave-sftp)
┌────────────────────────────┬─────────────────────┬─────────────┬─────────────────────────────────┐
│ Elérési út │ Tulajdonos │ Jogosultság │ Szerep │
├────────────────────────────┼─────────────────────┼─────────────┼─────────────────────────────────┤
│ /home/mave-sftp │ root:root │ 755 │ SFTP Chroot Börtön │
│ /home/mave-sftp/feltoltes │ mave-sftp:mave-sftp │ 775 │ Írható mappa a Bremen adatoknak │
└────────────────────────────┴─────────────────────┴─────────────┴─────────────────────────────────┘
### Amondis-Mave Import (mave-amondis)
┌───────────────────────────────────────────┬───────────────────────────┬─────────────┬────────────────────────┐
│ Elérési út │ Tulajdonos │ Jogosultság │ Szerep │
├───────────────────────────────────────────┼───────────────────────────┼─────────────┼────────────────────────┤
│ /home/mave-amondis │ root:root │ 755 │ SFTP Home (nem írható) │
│ /home/mave-amondis/Schnittstellen │ root:root │ 755 │ SFTP Chroot Börtön │
│ /home/mave-amondis/Schnittstellen/Amondis │ mave-amondis:mave-amondis │ 775 │ Írható munkakönyvtár │
└───────────────────────────────────────────┴───────────────────────────┴─────────────┴────────────────────────┘
## 4. Hálózati Elérések
### SMB (Windows Megosztás)
* **Amondis Útvonal:** `\\10.102.1.202\mave-amondis\Schnittstellen\Amondis\APO`
* **Működés:** A Samba a `force user = mave-amondis` beállítást használja a jogosultsági hibák elkerülése érdekében.
### SFTP (Biztonságos FTP)
* **Bremen Kapcsolat:** `sftp://mave-sftp@10.102.1.202` (belépéskor a `feltoltes` mappát látja).
* **Amondis Kapcsolat:** `sftp://mave-amondis@10.102.1.202` (belépéskor az `Amondis` mappát látja).
## 5. Automatikus Értesítések (Monitoring)
Minden sikeres bejelentkezéskor (mindkét felhasználó esetén) e-mail értesítés érkezik az adminisztrátornak (`i.meszely@antares-apo.de`).
* **Script helye:** `/usr/local/sbin/sftp-notify.sh`
* **Működés:** A scriptet a PAM (Pluggable Authentication Modules) rendszer hívja meg minden `open_session` eseménynél. A script megkülönbözteti az SFTP (korlátozott) és az interaktív SSH belépéseket a felhasználó shellje alapján, majd elküldi az adatokat (felhasználó, távoli IP, időpont) e-mailben.
* **Log fájl:** `/tmp/sftp-notify.log` (hibakereséshez).
---
*Frissítve: 2026. március 24.*

View File

@@ -0,0 +1,80 @@
# Konfiguration eines SFTP-Servers auf Fedora Linux
Diese Anleitung beschreibt die Einrichtung eines sicheren SFTP-Servers unter Verwendung von OpenSSH. Der Fokus liegt auf Sicherheit durch die Einschränkung des Benutzerzugriffs (Chroot) und die Deaktivierung des Shell-Zugriffs.
## 1. Benutzer anlegen
Zuerst erstellen wir einen dedizierten Benutzer für den SFTP-Zugriff. Um die Sicherheit zu erhöhen, deaktivieren wir den normalen SSH-Terminal-Zugriff (`/sbin/nologin`).
```bash
# Benutzer erstellen (ohne Shell-Zugriff)
sudo useradd -m -s /sbin/nologin sftpuser
# Passwort für den Benutzer festlegen
sudo passwd sftpuser
```
## 2. Firewall-Konfiguration
SFTP läuft über das SSH-Protokoll (Port 22). Dieser muss in der Firewall freigegeben werden.
```bash
# SSH-Dienst in der Firewall erlauben
sudo firewall-cmd --permanent --add-service=ssh
# Konfiguration neu laden
sudo firewall-cmd --reload
```
## 3. SSH-Konfiguration (Einschränkungen)
Um den Benutzer in seinem Home-Verzeichnis zu isolieren (Chroot) und nur SFTP zu erlauben, muss die Datei `/etc/ssh/sshd_config` angepasst werden.
1. Öffnen Sie die Konfigurationsdatei: `sudo nano /etc/ssh/sshd_config`
2. Fügen Sie am Ende der Datei folgende Zeilen hinzu:
```text
Match User sftpuser
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory %h
AllowTcpForwarding no
X11Forwarding no
```
* **Match User:** Wendet die Regeln nur auf diesen Benutzer an.
* **ForceCommand internal-sftp:** Erlaubt nur SFTP-Befehle, keinen interaktiven Shell-Zugriff.
* **ChrootDirectory %h:** Sperrt den Benutzer in sein Home-Verzeichnis ein.
## 4. Verzeichnisberechtigungen (Wichtig für Chroot)
Damit der `Chroot`-Mechanismus funktioniert, muss das Home-Verzeichnis dem Benutzer `root` gehören und darf für andere nicht schreibbar sein.
```bash
# Besitzer auf root setzen
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser
# Einen Unterordner für Uploads erstellen, in dem der Benutzer schreiben darf
sudo mkdir /home/sftpuser/uploads
sudo chown sftpuser:sftpuser /home/sftpuser/uploads
```
## 5. SELinux-Anpassungen (Fedora-spezifisch)
Auf Fedora verhindert SELinux standardmäßig, dass der SSH-Dienst in Chroot-Umgebungen Schreibzugriff auf Home-Verzeichnisse hat. Dies muss explizit erlaubt werden.
```bash
# Schreibzugriff für SFTP-Chroot in SELinux aktivieren
sudo setsebool -P ssh_chroot_rw_homedirs on
```
## 6. Dienst neu starten und testen
Nachdem alle Änderungen vorgenommen wurden, muss der SSH-Dienst neu gestartet werden.
```bash
# SSH-Dienst neu starten
sudo systemctl restart sshd
```
### Testen des Zugriffs:
Von einem entfernten Rechner oder lokal:
```bash
sftp sftpuser@<IP-ADRESSE-DES-SERVERS>
```
*Hinweis: Ein Login via normalem SSH (`ssh sftpuser@...`) sollte nun automatisch abgelehnt werden.*

View File

@@ -0,0 +1,45 @@
1. Felhasználó létrehozása
Hozzunk létre egy felhasználót (pl. sftpuser), de tiltsuk le neki a shell hozzáférést, hogy ne tudjon belépni a terminálba, csak fájlokat másolni:
1 sudo useradd -m -s /sbin/nologin sftpuser
2 sudo passwd sftpuser
2. Tűzfal (Firewall) beállítása
Fedora alatt a firewalld fut. Engedélyezni kell az SSH-t (ami az SFTP-t is viszi):
1 sudo firewall-cmd --permanent --add-service=ssh
2 sudo firewall-cmd --reload
3. Az SFTP korlátozása (Opcionális, de ajánlott)
Ha azt szeretnéd, hogy a felhasználó csak az SFTP-t használhassa, és ne lásson bele a teljes szerver fájlrendszerébe, módosítsd az SSH konfigurációt:
1. Nyisd meg: sudo nano /etc/ssh/sshd_config
2. Menj a fájl végére és add hozzá:
1 Match User sftpuser
2 ForceCommand internal-sftp
3 PasswordAuthentication yes
4 ChrootDirectory %h
5 AllowTcpForwarding no
6 X11Forwarding no
Megjegyzés: A ChrootDirectory %h bezárja a felhasználót a saját home mappájába.
3. Fontos: Ha ChrootDirectory-t használsz, a home mappa tulajdonosának a root-nak kell lennie:
1 sudo chown root:root /home/sftpuser
2 sudo chmod 755 /home/sftpuser
3 # Hozz létre egy mappát, amibe írhat is:
4 sudo mkdir /home/sftpuser/feltoltes
5 sudo chown sftpuser:sftpuser /home/sftpuser/feltoltes
4. Indítsd újra az SSH-t:
1 sudo systemctl restart sshd
4. SELinux (A Fedora "lelke")
Mivel Fedora alatt dolgozunk, az SELinux alapértelmezés szerint blokkolhatja az SFTP írási jogokat, ha nem a szokványos módon használod. Engedélyezd az SFTP írást a home mappákba:
1 sudo setsebool -P ssh_chroot_rw_homedirs on
(Ha nem használsz Chroot-ot, akkor is érdemes ezt futtatni, ha hiba van.)
Összegzés:
* Ha csak gyorsan kell: useradd + passwd + firewall-cmd -> KÉSZ.
* Ha biztonságosan kell: Használd a Match User részt az sshd_config-ban, hogy ne tudjon "mászkálni" a szerveren.

View File

@@ -0,0 +1,62 @@
# Samba (SMB) Megosztás Beállítása - APS-SFTP01 (mave-amondis)
Ez a leírás a `mave-amondis` felhasználó home könyvtárának megosztását mutatja be, aki **kizárólag SMB** hozzáféréssel rendelkezik (nem használ SFTP-t).
## 1. Előfeltételek (Rendszerfelhasználó)
Ellenőrizzük, hogy a felhasználó létezik-e, és a saját mappája az övé:
```bash
# Ha még nincs felhasználó:
# sudo useradd -m -s /sbin/nologin mave-amondis
# Jogosultságok ellenőrzése (Samba eléréshez 0700 vagy 0755 javasolt)
sudo chown mave-amondis:mave-amondis /home/mave-amondis
sudo chmod 700 /home/mave-amondis
```
## 2. Samba jelszó beállítása
A Samba saját adatbázist használ, így meg kell adni egy jelszót a felhasználónak:
```bash
sudo smbpasswd -a mave-amondis
```
## 3. Samba konfiguráció (/etc/samba/smb.conf)
Add hozzá a fájl végéhez az alábbi részt:
```ini
[mave-amondis]
comment = Mave Amondis SMB Share
path = /home/mave-amondis
valid users = mave-amondis
public = no
writable = yes
browsable = yes
guest ok = no
create mask = 0644
directory mask = 0755
force user = mave-amondis
```
## 4. SELinux és Tűzfal (Fedora / RHEL esetén kötelező!)
A Fedora alapértelmezésben tiltja a Home könyvtárak megosztását és a Samba forgalmat.
```bash
# SELinux: Home könyvtárak engedélyezése Sambához
sudo setsebool -P samba_enable_home_dirs on
# Tűzfal: Samba szolgáltatás engedélyezése
sudo firewall-cmd --permanent --add-service=samba
sudo firewall-cmd --reload
```
## 5. Szolgáltatások indítása
```bash
sudo systemctl enable --now smb nmb
sudo systemctl restart smb
```
## 6. Csatlakozás (Windows)
Windows Intézőben:
`\\APS-SFTP01\mave-amondis`
---
*Megjegyzés: Mivel ez a felhasználó nem használ SFTP-t, nem ütközünk a ChrootDirectory (root-owner) korlátozásaiba.*

View File

@@ -0,0 +1,45 @@
#!/bin/bash
# Locale beállítása, hogy a mail parancs ne hibázzon karakterkódolás miatt
export LC_ALL=C.UTF-8
export LANG=C.UTF-8
# Log fájl a hibakereséshez (adj rá írási jogot: chmod 666 /tmp/sftp-notify.log)
LOGFILE="/tmp/sftp-notify.log"
# Csak a sikeres bejelentkezésekről (open_session) küldünk értesítést
if [ "$PAM_TYPE" = "open_session" ]; then
# Környezet mentése logba
echo "--- $(/usr/bin/date): Login attempt for $PAM_USER from $PAM_RHOST ---" >> "$LOGFILE"
# Felhasználó shelljének ellenőrzése
USER_SHELL=$(/usr/bin/getent passwd "$PAM_USER" | /usr/bin/cut -d: -f7)
# Típus meghatározása
if [[ "$USER_SHELL" == *"/nologin" ]] || [[ "$USER_SHELL" == *"/false" ]]; then
LOGIN_TYPE="SFTP (Restricted)"
else
LOGIN_TYPE="SSH (Interactive)"
fi
MESSAGE="Login értesítés ($PAM_SERVICE):
Típus: $LOGIN_TYPE
Felhasználó: $PAM_USER
Távoli gép: $PAM_RHOST
Shell: $USER_SHELL
Időpont: $(/usr/bin/date)
Host: $(/usr/bin/hostname)"
# Email küldés (abszolút útvonallal)
# Ellenőrizd, hogy a 'mail' parancs a /usr/sbin/mail helyen van-e!
echo "$MESSAGE" | /usr/sbin/mail -s "$LOGIN_TYPE: $PAM_USER" i.meszely@antares-apo.de >> "$LOGFILE" 2>&1
if [ $? -eq 0 ]; then
echo "Siker: Email elküldve." >> "$LOGFILE"
else
echo "HIBA: Az email küldés sikertelen volt! (Exit code: $?)" >> "$LOGFILE"
fi
fi
exit 0

View File

@@ -0,0 +1,45 @@
#!/bin/bash
# Locale-Einstellungen, damit der Mail-Befehl keine Zeichenkodierungsfehler verursacht
export LC_ALL=C.UTF-8
export LANG=C.UTF-8
# Logdatei für das Debugging (Schreibrechte setzen: chmod 666 /tmp/sftp-notify.log)
LOGFILE="/tmp/sftp-notify.log"
# Benachrichtigung nur bei erfolgreichen Anmeldungen (open_session)
if [ "$PAM_TYPE" = "open_session" ]; then
# Umgebung in Log speichern
echo "--- $(/usr/bin/date): Anmeldeversuch für $PAM_USER von $PAM_RHOST ---" >> "$LOGFILE"
# Überprüfung der Benutzer-Shell
USER_SHELL=$(/usr/bin/getent passwd "$PAM_USER" | /usr/bin/cut -d: -f7)
# Bestimmung des Typs
if [[ "$USER_SHELL" == *"/nologin" ]] || [[ "$USER_SHELL" == *"/false" ]]; then
LOGIN_TYPE="SFTP (Eingeschränkt)"
else
LOGIN_TYPE="SSH (Interaktiv)"
fi
MESSAGE="Anmeldebenachrichtigung ($PAM_SERVICE):
Typ: $LOGIN_TYPE
Benutzer: $PAM_USER
Remote-Host: $PAM_RHOST
Shell: $USER_SHELL
Zeitpunkt: $(/usr/bin/date)
Host: $(/usr/bin/hostname)"
# E-Mail-Versand (mit absolutem Pfad)
# Prüfen, ob der 'mail'-Befehl unter /usr/sbin/mail verfügbar ist!
echo "$MESSAGE" | /usr/sbin/mail -s "$LOGIN_TYPE: $PAM_USER" i.meszely@antares-apo.de >> "$LOGFILE" 2>&1
if [ $? -eq 0 ]; then
echo "Erfolg: E-Mail gesendet." >> "$LOGFILE"
else
echo "FEHLER: E-Mail-Versand fehlgeschlagen! (Exit code: $?)" >> "$LOGFILE"
fi
fi
exit 0

View File

@@ -0,0 +1,11 @@
[mave-amondis]
comment = Mave Amondis SMB Share
path = /home/mave-amondis
valid users = mave-amondis
public = no
writable = yes
browsable = yes
guest ok = no
create mask = 0644
directory mask = 0755
force user = mave-amondis

View File

@@ -0,0 +1,13 @@
useradd -M -s /sbin/nologin n8nuser
passwd n8nuser
sudo postconf -e 'relayhost = [10.102.1.201]'
sudo postconf -e 'myorigin = antares-apo.de'
sudo postconf -e 'smtp_generic_maps = hash:/etc/postfix/generic'
echo "apslinux@aps-sftp01.localdomain sftp-alert@antares-apo.de" | sudo tee /etc/postfix/generic
sudo postmap /etc/postfix/generic
sudo systemctl restart postfix

View File

@@ -0,0 +1,52 @@
# Postfix SMTP Hitelesítés Beállítása (Fedora 43)
Ez a dokumentum összefoglalja a lépéseket, amelyekkel lokális felhasználói hitelesítést (SASL) állítottunk be egy meglévő Postfix SMTP relay szerveren.
## 1. Szükséges csomagok telepítése
A SASL hitelesítéshez a Cyrus SASL könyvtárakra van szükség.
```bash
sudo dnf install cyrus-sasl cyrus-sasl-plain
```
## 2. SASL konfigurálása
Létrehoztuk a `/etc/sasl2/smtpd.conf` fájlt, amely meghatározza, hogyan ellenőrizze a Postfix a jelszavakat.
```conf
# /etc/sasl2/smtpd.conf
pwcheck_method: saslauthd
mech_list: plain login
```
## 3. Postfix konfiguráció módosítása
Beállítottuk a Postfix-et, hogy használja a SASL hitelesítést és engedélyezze a hitelesített kliensek számára a levélküldést.
```bash
sudo postconf -e 'smtpd_sasl_auth_enable = yes'
sudo postconf -e 'smtpd_sasl_security_options = noanonymous'
sudo postconf -e 'smtpd_sasl_local_domain = $myhostname'
sudo postconf -e 'broken_sasl_auth_clients = yes'
sudo postconf -e 'smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination'
```
## 4. Lokális felhasználó létrehozása
Létrehoztunk egy rendszerszintű felhasználót, aki csak hitelesítésre szolgál (nincs shell hozzáférése).
```bash
sudo useradd -M -s /sbin/nologin mdmuser
sudo passwd mdmuser
```
## 5. Szolgáltatások indítása és engedélyezése
Elindítottuk a hitelesítésért felelős démont és újraindítottuk a Postfix-et.
```bash
sudo systemctl enable --now saslauthd
sudo systemctl restart postfix
```
## 6. Ellenőrzés és Tesztelés
A hitelesítés meglétét `telnet`-tel ellenőriztük:
```bash
telnet localhost 25
# EHLO teszt.local parancs után látni kell:
# 250-AUTH PLAIN LOGIN
```
A sikeres küldést a logokban az alábbi bejegyzés igazolja:
`sasl_method=PLAIN, sasl_username=mdmuser@antares-apo.local, status=sent`

View File

@@ -0,0 +1,71 @@
# SOP: Konfiguration Postfix SMTP Relay (APS-SMTP01)
## 1. Zweck & Übersicht
Diese Dokumentation beschreibt die Konfiguration des zentralen Postfix Mail-Relays (**APS-SMTP01**). Das System dient als Brücke, um internen Geräten (Druckern, Scannern) und automatisierten IT-Skripten den E-Mail-Versand über unseren offiziellen Provider zu ermöglichen.
**System-Details:**
* **Server:** Linux (Ubuntu/Fedora basierend)
* **Hostname:** `aps-smtp01.aps.local`
* **IP-Adresse:** [Bitte interne IP ergänzen]
* **Dienst:** Postfix (MTA - Mail Transfer Agent)
## 2. Zentrale Konfigurationsdateien
Die gesamte Konfiguration befindet sich im Verzeichnis `/etc/postfix/`. Die wichtigsten Dateien sind:
* **`/etc/postfix/main.cf`**: Die Hauptkonfigurationsdatei mit den globalen Parametern.
* **`/etc/postfix/sasl_passwd`**: Enthält die Zugangsdaten für den externen Relay-Host (verschlüsselt via postmap).
* **`/etc/aliases`**: Definiert E-Mail-Weiterleitungen für lokale Benutzer.
## 3. Konfigurations-Ausschnitt (main.cf)
Die folgenden Parameter sind für den Betrieb als Relay entscheidend:
```bash
# Beispiel-Konfiguration für Relay mit Authentifizierung
relayhost = [smtp.dein-provider.de]:587
mynetworks = 127.0.0.0/8, 192.168.1.0/24 [Hier interne Subnetze erlauben]
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_tls_security_level = may
header_size_limit = 4096000
```
## 4. Administrative Befehle & Wartung
Nach Änderungen an der Konfiguration müssen folgende Schritte durchgeführt werden:
### Konfiguration prüfen und laden:
```bash
# Syntax-Check der main.cf
postfix check
# Konfiguration neu laden (ohne Neustart des Dienstes)
systemctl reload postfix
```
### Passwort-Datenbank aktualisieren:
Wenn die `sasl_passwd` geändert wurde, muss die Datenbank neu generiert werden:
```bash
postmap /etc/postfix/sasl_passwd
systemctl restart postfix
```
### Überprüfung der Logs (Fehlersuche):
```bash
# Echtzeit-Überwachung der Mail-Logs
tail -f /var/log/mail.log
# Alternativ via journalctl
journalctl -u postfix -f
```
## 5. Testen des E-Mail-Versands
Um die Funktionalität des Relays direkt auf dem Server zu testen:
```bash
echo "Testmail von APS-SMTP01" | mail -s "Testbetreff" de@deine-domain.de
```
## 6. Bekannte Probleme (Troubleshooting)
* **Relay access denied:** Prüfen Sie den Parameter `mynetworks`. Die IP des sendenden Geräts muss dort erlaubt sein.
* **Connection timed out (Port 25/587):** Prüfen Sie die Firewall-Regeln auf dem Server und im Netzwerk (Ausgehende Verbindung zum Provider).
---
*Erstellt für die IT-Dokumentation - Projekt: IT Internal Repository*

View File

@@ -0,0 +1,7 @@
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=Autostart URL
Comment=Opens a specific URL with the default browser on GUI login.
Exec=chromium --kiosk https://status.aps.local/
Terminal=false

View File

@@ -0,0 +1,6 @@
docker compose pull
docker compose up -d
docker image prune -f

View File

@@ -0,0 +1,43 @@
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/bin
compatibility_level = 3.10
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
html_directory = no
inet_interfaces = all
inet_protocols = all
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
meta_directory = /etc/postfix
mydestination = $myhostname, localhost.$mydomain, localhost
mynetworks = 127.0.0.0/8, 10.102.9.0/24, 10.101.0.0/16, 10.102.1.0/24
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix/README_FILES
#relayhost = apshh-de0i.mail.protection.outlook.com
#relayhost = [apshh.mail.protection.outlook.com]:25
relayhost = [aps-exch01.aps.local]:25
#relayhost =
sample_directory = /usr/share/doc/postfix/samples
sendmail_path = /usr/bin/sendmail.postfix
setgid_group = postdrop
shlib_directory = /usr/lib64/postfix
#smtp_sasl_auth_enable = no
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
broken_sasl_auth_clients = yes
smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt
smtp_tls_CApath = /etc/pki/tls/certs
smtp_tls_security_level = may
smtpd_tls_cert_file = /etc/pki/tls/certs/postfix.pem
smtpd_tls_key_file = /etc/pki/tls/private/postfix.key
smtpd_tls_security_level = may
unknown_local_recipient_reject_code = 550
myhostname = antares-apo.local
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

View File

@@ -0,0 +1,37 @@
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/bin
compatibility_level = 3.10
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
html_directory = no
inet_interfaces = all
inet_protocols = all
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
meta_directory = /etc/postfix
mydestination = $myhostname, localhost.$mydomain, localhost
mynetworks = 127.0.0.0/8, 10.102.9.0/24, 10.101.0.0/16, 10.102.1.0/24
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix/README_FILES
#relayhost = apshh-de0i.mail.protection.outlook.com
#relayhost = [apshh.mail.protection.outlook.com]:25
relayhost = [aps-exch01.aps.local]:25
#relayhost =
sample_directory = /usr/share/doc/postfix/samples
sendmail_path = /usr/bin/sendmail.postfix
setgid_group = postdrop
shlib_directory = /usr/lib64/postfix
smtp_sasl_auth_enable = no
smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt
smtp_tls_CApath = /etc/pki/tls/certs
smtp_tls_security_level = may
smtpd_tls_cert_file = /etc/pki/tls/certs/postfix.pem
smtpd_tls_key_file = /etc/pki/tls/private/postfix.key
smtpd_tls_security_level = may
unknown_local_recipient_reject_code = 550
myhostname = antares-apo.local

View File

@@ -0,0 +1,151 @@
#
# Postfix master process configuration file. For details on the format
# of the file, see the master(5) manual page (command: "man 5 master" or
# on-line: https://www.postfix.org/master.5.html).
#
# Do not forget to execute "postfix reload" after editing this file.
#
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (no) (never) (100)
# ==========================================================================
smtp inet n - n - - smtpd
#smtp inet n - n - 1 postscreen
#smtpd pass - - n - - smtpd
#dnsblog unix - - n - 0 dnsblog
#tlsproxy unix - - n - 0 tlsproxy
# Choose one: enable submission for loopback clients only, or for any client.
#127.0.0.1:submission inet n - n - - smtpd
#submission inet n - n - - smtpd
# -o syslog_name=postfix/submission
# -o smtpd_forbid_unauth_pipelining=no
# -o smtpd_tls_security_level=encrypt
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_tls_auth_only=yes
# -o local_header_rewrite_clients=static:all
# -o smtpd_hide_client_session=yes
# -o smtpd_reject_unlisted_recipient=no
# Instead of specifying complex smtpd_<xxx>_restrictions here,
# specify "smtpd_<xxx>_restrictions=$mua_<xxx>_restrictions"
# here, and specify mua_<xxx>_restrictions in main.cf (where
# "<xxx>" is "client", "helo", "sender", "relay", or "recipient").
# -o smtpd_client_restrictions=
# -o smtpd_helo_restrictions=
# -o smtpd_sender_restrictions=
# -o smtpd_relay_restrictions=
# -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
# Choose one: enable submissions for loopback clients only, or for any client.
#127.0.0.1:submissions inet n - n - - smtpd
#submissions inet n - n - - smtpd
# -o syslog_name=postfix/submissions
# -o smtpd_forbid_unauth_pipelining=no
# -o smtpd_tls_wrappermode=yes
# -o smtpd_sasl_auth_enable=yes
# -o local_header_rewrite_clients=static:all
# -o smtpd_hide_client_session=yes
# -o smtpd_reject_unlisted_recipient=no
# Instead of specifying complex smtpd_<xxx>_restrictions here,
# specify "smtpd_<xxx>_restrictions=$mua_<xxx>_restrictions"
# here, and specify mua_<xxx>_restrictions in main.cf (where
# "<xxx>" is "client", "helo", "sender", "relay", or "recipient").
# -o smtpd_client_restrictions=
# -o smtpd_helo_restrictions=
# -o smtpd_sender_restrictions=
# -o smtpd_relay_restrictions=
# -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
#628 inet n - n - - qmqpd
pickup unix n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr unix n - n 300 1 qmgr
#qmgr unix n - n 300 1 oqmgr
tlsmgr unix - - n 1000? 1 tlsmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
trace unix - - n - 0 bounce
verify unix - - n - 1 verify
flush unix n - n 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - n - - smtp
relay unix - - n - - smtp
-o syslog_name=${multi_instance_name?{$multi_instance_name}:{postfix}}/$service_name
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n - n - - showq
error unix - - n - - error
retry unix - - n - - error
discard unix - - n - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
anvil unix - - n - 1 anvil
scache unix - - n - 1 scache
postlog unix-dgram n - n - 1 postlogd
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent. See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
#maildrop unix - n n - - pipe
# flags=DRXhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
#
# ====================================================================
#
# Recent Cyrus versions can use the existing "lmtp" master.cf entry.
#
# Specify in cyrus.conf:
# lmtp cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4
#
# Specify in main.cf one or more of the following:
# mailbox_transport = lmtp:inet:localhost
# virtual_transport = lmtp:inet:localhost
#
# ====================================================================
#
# Cyrus 2.1.5 (Amos Gouaux)
# Also specify in main.cf: cyrus_destination_recipient_limit=1
#
#cyrus unix - n n - - pipe
# flags=DRX user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -r ${sender} -m ${extension} ${user}
#
# ====================================================================
#
# Old example of delivery via Cyrus.
#
#old-cyrus unix - n n - - pipe
# flags=R user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -m ${extension} ${user}
#
# ====================================================================
#
# See the Postfix UUCP_README file for configuration details.
#
#uucp unix - n n - - pipe
# flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
# ====================================================================
#
# Other external delivery methods.
#
#ifmail unix - n n - - pipe
# flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
#
#bsmtp unix - n n - - pipe
# flags=Fq. user=bsmtp argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
#
#scalemail-backend unix - n n - 2 pipe
# flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store
# ${nexthop} ${user} ${extension}
#
#mailman unix - n n - - pipe
# flags=FRX user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
# ${nexthop} ${user}

View File

@@ -0,0 +1,17 @@
switch_name,ip_address,firmware_version
NET-SW01,10.220.1.84,PL.10.16.1006
NET-SW02,10.220.1.85,PL.10.16.1006
NET-SW01,10.220.1.84,PL.10.16.1006
NET-SW02,10.220.1.85,PL.10.16.1006
NET-SW04,10.220.1.86,PL.10.16.1006
NET-SW05,10.220.1.87,PL.10.16.1006
NET-SW06,10.220.1.88,PL.10.16.1006
NET-SW01-CORE,10.220.1.89,LL.10.16.1006
NET-SW07,10.220.1.90,PL.10.16.1006
NET-SW08,10.220.1.91,PL.10.16.1006
NET-SW09,10.220.1.92,PL.10.16.1006
NET-SW10,10.220.1.93,PL.10.16.1006
NET-SW11,10.220.1.94,PL.10.16.1006
NET-SW13,10.220.1.96,PL.10.16.1006
NET-SW16,10.220.1.98,PL.10.16.1006
N/A,10.220.1.99,Auth Failed
1 switch_name ip_address firmware_version
2 NET-SW01 10.220.1.84 PL.10.16.1006
3 NET-SW02 10.220.1.85 PL.10.16.1006
4 NET-SW01 10.220.1.84 PL.10.16.1006
5 NET-SW02 10.220.1.85 PL.10.16.1006
6 NET-SW04 10.220.1.86 PL.10.16.1006
7 NET-SW05 10.220.1.87 PL.10.16.1006
8 NET-SW06 10.220.1.88 PL.10.16.1006
9 NET-SW01-CORE 10.220.1.89 LL.10.16.1006
10 NET-SW07 10.220.1.90 PL.10.16.1006
11 NET-SW08 10.220.1.91 PL.10.16.1006
12 NET-SW09 10.220.1.92 PL.10.16.1006
13 NET-SW10 10.220.1.93 PL.10.16.1006
14 NET-SW11 10.220.1.94 PL.10.16.1006
15 NET-SW13 10.220.1.96 PL.10.16.1006
16 NET-SW16 10.220.1.98 PL.10.16.1006
17 N/A 10.220.1.99 Auth Failed

View File

@@ -0,0 +1,17 @@
switch_name,ip_address,firmware_version
NET-SW01,10.220.1.84,PL.10.16.1006
NET-SW02,10.220.1.85,PL.10.16.1006
NET-SW01,10.220.1.84,PL.10.16.1006
NET-SW02,10.220.1.85,PL.10.16.1006
NET-SW04,10.220.1.86,PL.10.16.1006
NET-SW05,10.220.1.87,PL.10.16.1006
NET-SW06,10.220.1.88,PL.10.16.1006
NET-SW01-CORE,10.220.1.89,LL.10.16.1006
NET-SW07,10.220.1.90,PL.10.16.1006
NET-SW08,10.220.1.91,PL.10.16.1006
NET-SW09,10.220.1.92,PL.10.16.1006
NET-SW10,10.220.1.93,PL.10.16.1006
NET-SW11,10.220.1.94,PL.10.16.1006
NET-SW13,10.220.1.96,PL.10.16.1006
NET-SW16,10.220.1.98,PL.10.16.1006
N/A,10.220.1.99,Auth Failed
1 switch_name ip_address firmware_version
2 NET-SW01 10.220.1.84 PL.10.16.1006
3 NET-SW02 10.220.1.85 PL.10.16.1006
4 NET-SW01 10.220.1.84 PL.10.16.1006
5 NET-SW02 10.220.1.85 PL.10.16.1006
6 NET-SW04 10.220.1.86 PL.10.16.1006
7 NET-SW05 10.220.1.87 PL.10.16.1006
8 NET-SW06 10.220.1.88 PL.10.16.1006
9 NET-SW01-CORE 10.220.1.89 LL.10.16.1006
10 NET-SW07 10.220.1.90 PL.10.16.1006
11 NET-SW08 10.220.1.91 PL.10.16.1006
12 NET-SW09 10.220.1.92 PL.10.16.1006
13 NET-SW10 10.220.1.93 PL.10.16.1006
14 NET-SW11 10.220.1.94 PL.10.16.1006
15 NET-SW13 10.220.1.96 PL.10.16.1006
16 NET-SW16 10.220.1.98 PL.10.16.1006
17 N/A 10.220.1.99 Auth Failed

View File

@@ -1,19 +1,20 @@
{ {
"network": { "switch_ips": [
"subnet": "10.101.0.0/24", "10.220.1.84",
"auto_detect": false "10.220.1.85",
}, "10.220.1.86",
"scanning": { "10.220.1.87",
"ping_timeout": 0.3, "10.220.1.88",
"ping_delay": 0.001, "10.220.1.89",
"max_threads": 10 "10.220.1.90",
}, "10.220.1.91",
"database": { "10.220.1.92",
"devices_file": "known_devices.json" "10.220.1.93",
}, "10.220.1.94",
"logging": { "10.220.1.96",
"enabled": true, "10.220.1.98",
"log_file": "network_scanner.log", "10.220.1.99"
"log_level": "INFO" ],
} "username": "svc.operator",
"password": "NuAaGTNPQWyeneQLI5qr"
} }

View File

@@ -101,7 +101,7 @@ if __name__ == "__main__":
PASSWORD = os.getenv('ARUBA_PASSWORD') PASSWORD = os.getenv('ARUBA_PASSWORD', 'NuAaGTNPQWyeneQLI5qr')
if not PASSWORD: if not PASSWORD:
print("Hiba: Az ARUBA_PASSWORD környezeti változó nincs beállítva.") print("Hiba: Az ARUBA_PASSWORD környezeti változó nincs beállítva.")
exit() exit()

5
Doc/Ai/Codex_AI_CLI.md Normal file
View File

@@ -0,0 +1,5 @@
# Codex
npm i -g @openai/codex
verbung@
virgI6774#6774

View File

@@ -0,0 +1,3 @@
# Neue User für SMTP Relay
sudo useradd -M -s /sbin/nologin printeruser
sudo passwd printeruser

20
Doc/Aps/Securitas.md Normal file
View File

@@ -0,0 +1,20 @@
i.A. Tim Grüner
Projektleiter
Neuer Höltigbaum 26-30
22143 Hamburg
Mobil: +49 170 7983858
i. V. Dipl.-Ing.(FH) Jens Utke
Senior Regional Account Manager
Securitas Technology GmbH
Neuer Höltigbaum 26-30
22143 Hamburg
M: +49 151 12237016
i.A. Nico Wiehr
Servicekoordinator
T: +49 40 4149392221
a.NR 206065
IxEx$99

View File

@@ -0,0 +1,49 @@
PS C:\Tools> .\Get-ADUserDetails.ps1 A.Alakhras
========================================================
AD FELHASZNALOI ADATOK: Alakhras, Ahmed
========================================================
[ Allgemein / Altalanos ]
Vorname (Keresztnev) : Ahmed
Nachname (Vezeteknev) : Alakhras
Anzeigename : Alakhras, Ahmed
Beschreibung :
Buero (Iroda) :
Telefon : +49 40 523889-0
E-Mail : A.Alakhras@antares-apo.de
Webseite : www.aps-hh.de
--------------------------------------------------------
[ Adresse / Cim ]
Strasse : Kuehnstraße 75
Postfach : {}
PLZ (Iranyitoszam) : 22045
Stadt (Varos) : Hamburg
Bundesland (Megye) : Hamburg
Land : Deutschland
--------------------------------------------------------
[ Organisation / Szervezet ]
Titel (Beosztas) :
Abteilung (Osztaly) : Lager
Firma (Ceg) : antares-apotheke Pharma Service e.K.
Vorgesetzter (Fonok) : Nincs megadva
--------------------------------------------------------
[ Gruppen / Csoporttagsagok (8 db) ]
DG_antares-apotheke-Jenfeld, Domänen-Benutzer, LIZ-M365-E3, Org-APS-alle, Org-GHKV, Org-Lager, Org-LO, VPN-User-Antares
========================================================

View File

@@ -0,0 +1,49 @@
PS C:\Tools> .\Get-ADUserDetails.ps1 -UserName "b.bremer"
========================================================
AD FELHASZNALOI ADATOK: Bremer Bärbel
========================================================
[ Allgemein / Altalanos ]
Vorname (Keresztnev) : Bärbel
Nachname (Vezeteknev) : Bremer
Anzeigename : Bremer Bärbel
Beschreibung :
Buero (Iroda) :
Telefon : +49 4141 7886-276
E-Mail : b.bremer@antares-apo.de
Webseite : www.aps-hh.de
--------------------------------------------------------
[ Adresse / Cim ]
Strasse : Harsefelder Straße 6
Postfach : {}
PLZ (Iranyitoszam) : 21680
Stadt (Varos) : Stade
Bundesland (Megye) : Niedersachsen
Land : Deutschland
--------------------------------------------------------
[ Organisation / Szervezet ]
Titel (Beosztas) : Buchhaltung
Abteilung (Osztaly) : STD-OFZ
Firma (Ceg) : antares-apotheke Stade e.K.
Vorgesetzter (Fonok) : Huth Sybille
--------------------------------------------------------
[ Gruppen / Csoporttagsagok (11 db) ]
DG_antares-apotheke-Stade, Domänen-Benutzer, FS_STD_BO_Daten_C, FS_STD_KV_Daten_C, FS_STD_OFZ_Daten_C, FS_STD_ONKO_Daten_C, FS_STD_VW_Daten_C, LIZ-M365-E3, MAP-Pfad-Z, Org-STD-Alle, Org-STD-FIBU
========================================================

View File

@@ -0,0 +1,49 @@
PS C:\Tools> .\Get-ADUserDetails.ps1 -UserName "m.steffen"
========================================================
AD FELHASZNALOI ADATOK: Steffen, Max
========================================================
[ Allgemein / Altalanos ]
Vorname (Keresztnev) : Max
Nachname (Vezeteknev) : Steffen
Anzeigename : Steffen, Max
Beschreibung :
Buero (Iroda) :
Telefon : +49 4141 7886-275
E-Mail : m.steffen@antares-apo.de
Webseite : www.aps-hh.de
--------------------------------------------------------
[ Adresse / Cim ]
Strasse : Harsefelder Straße 6
Postfach : {}
PLZ (Iranyitoszam) : 21680
Stadt (Varos) : Stade
Bundesland (Megye) : Niedersachsen
Land : Deutschland
--------------------------------------------------------
[ Organisation / Szervezet ]
Titel (Beosztas) : Buchhaltung
Abteilung (Osztaly) : Org-STD-FIBU
Firma (Ceg) : antares-apotheke Stade e.K.
Vorgesetzter (Fonok) : Huth Sybille
--------------------------------------------------------
[ Gruppen / Csoporttagsagok (11 db) ]
DG_antares-apotheke-Stade,
Domänen-Benutzer
FS_STD_BO_Daten_C
FS_STD_KV_Daten_C
FS_STD_OFZ_Daten_C
FS_STD_ONKO_Daten_C
FS_STD_VW_Daten_C
LIZ-M365-E3
MAP-Pfad-Z
Org-STD-Alle
Org-STD-FIBU

View File

@@ -0,0 +1,8 @@
Username: mave-sftp
Password : asdWFWF45mfEGGEwf
Server : 10.102.1.202
Server : aps-sftp01
User kann schrieben unten die Schnittstellen/Bremen/ Ordner

7
Doc/Aps/Yealink.md Normal file
View File

@@ -0,0 +1,7 @@
# Benutzung des Yealink WP-20 USB-Adapters
1. **Anschluss:** Schließen Sie den Adapter an einen freien USB-Anschluss Ihres Computers an. Daraufhin wird auf Ihrem Computer ein neues CD-Laufwerk mit dem Namen "Yealink Pod" angezeigt.
2. **Dateien kopieren:** Öffnen Sie das CD-Laufwerk "Yealink Pod". Kopieren Sie die beiden darin enthaltenen Dateien auf Ihren Computer. Sie können diese beispielsweise auf den Desktop oder in den Ordner `C:\Tools\` kopieren (falls dieser existiert oder Sie ihn erstellen).
3. **Anwendung starten und Bildschirmfreigabe:** Starten Sie die Anwendung aus den kopierten Dateien. Mit dieser Anwendung können Sie Ihren gesamten Bildschirm oder ein ausgewähltes Anwendungsfenster mit den Besprechungsteilnehmern teilen.

BIN
Doc/Aps/Yealink_dunkel.pdf Normal file

Binary file not shown.

BIN
Doc/Aps/Yealink_hell.pdf Normal file

Binary file not shown.

View File

@@ -6,33 +6,32 @@ https://www.tc-telefon.de/Kontakt/
-- https://www.behnke-online.de/de/partner-plz-20000-29999 -- https://www.behnke-online.de/de/partner-plz-20000-29999
4. 8. Anrufen Fabio wegen die Donau Drucker Toner lvl 18%
5. 11.
003 - Becker Florian
6. Druckers Konfig to smtp_relay 010 - Wako
+ Weser 025 - Hinck Stefanie (Stru)
+ Elbe 026 - va den Berg Wiebke (Stru)
+ Aalbek
+ Hellbach
+ Lottbek
+ Zorge
+ Goldbach
+ Flottbek
+ Hamme
Alster ?
Ahr_Struensee-Haus
- Seseke
- Juemme
- Radegast
Steinbach
Nonne
- Eider
- Enz
- Orthbrookgraben
- Siede
verbung@meszely.eu Kosten aps - Continia - kosten.aps.7739934@cdc.continiaonline.com
ionOs#6774#IonOs Einkauf aps - Continia - einkauf.aps.7739934@cdc.continiaonline.com
Informationstechnologie
Software
tv-token api
297eca2e0221361646d3aa88f4b00e6f
curl -H 'X-Auth-Token: 297eca2e0221361646d3aa88f4b00e6f' https://10.102.1.201/api/v0
jasmin gresen
PG19 : Officin
15454
ilka banemann - laptop - outlook (profile)
inten im Officein drucker von Iphone

BIN
Doc/Bilders/Development.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 877 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 789 KiB

BIN
Doc/Bilders/Scripts.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 760 KiB

View File

@@ -1,36 +1,35 @@
Normal: Normal: i.meszely - vi..+Ma
i.meszely Lokal: t2.meszely - ep..Ep
vi..+Ma Server: t1.meszely - warP#....#Mac
Ent: adm.meszely@aps-hh.de - win
Lokal: linux: q5tOCJLo
t2.meszely Mave: WERNER
ep..Ep Wifi: a494052388958b494052388958
Wifi: ASR22Antares
KP: MuVD9Zcc4HK0jDQ4HzMt
Server: Sftp : mave-sftp : asdWFWF45mfEGGEwf
t1.meszely SMB : mave-amondis : asdWFasdas43fEGGCf
warP#....#Maci
000 Smtp : mdmuser : Q8ZdNSEFCPwDCpoPsage
pandA#...#min Smtp : n8nuser : Q8ZdNSEFCPwDCpoPsage
Smtp : drucker : Q8ZdNSrFCpwdCPoPsAge
Smtp : elpro : Q8ZwerrRTHwdDfoPsAge
Smtp : maveuser: Q8456rrRgwegwDoRGSRQ
Smtp : useralert : Q845Rr345gwDoRsdRQ
Wifi: monitor - GNYOJTPFASNEEICPSV
a494052388958b494052388958
Wifi:
ASR22Antares
KP: antares-apo.de
MuVD9Zcc4HK0jDQ4HzMt QuickHelp : win+ctrl+Q
Web: Web: https://aps-hh.estargmbh.de/ virgI6774+
https://aps-hh.estargmbh.de/
virgI6774+
Onboarding : Onboarding :
file:///Z:/IT_Dokumentation/APS-IT-Dokumentation/onboarding.pdf file:///Z:/IT_Dokumentation/APS-IT-Dokumentation/onboarding.pdf
DHCP Servers: DHCP Servers: APS-Infra01, APS-Infra02
APS-Infra01
APS-Infra02
Mysql server: Mysql server:
root - root -
@@ -59,6 +58,9 @@ MicrosoftAuth
Kapelou2025 Kapelou2025
IXOS
10.90.0.1
000 000
pandA#...#min pandA#...#min
@@ -70,7 +72,10 @@ Sophos :
https://vpn.aps-hh.de:7443/ https://vpn.aps-hh.de:7443/
Mobil : 0171 / 62 29 88 6
hhbeshop.rdp
Mobil : 0171 62 29 88 6
E-Mail:D.Laumann@mavesoft.de E-Mail:D.Laumann@mavesoft.de
steve : 0017649423884 steve : 0017649423884
@@ -82,11 +87,6 @@ AWs5XRhwkiBQcFf8Da
Siebert Kristina - Siebert Kristina -
Dirk Jänicke 0-6000 - 94 - 060 , 0 6000 94 060 Dirk Jänicke 0-6000 - 94 - 060 , 0 6000 94 060
543 Jan
546 Mario
Dirk Jänicke 0-6000 - 94 - 060 , 0 6000 94 060
powercfg /h off powercfg /h off
SOIB-2024! oder SOIB2024 SOIB-2024! oder SOIB2024
@@ -97,6 +97,8 @@ ANTARES
ASR22Antares ASR22Antares
1234
Status Lokal Remote Netzwerk Status Lokal Remote Netzwerk
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
@@ -124,18 +126,20 @@ virgI6774#Virgi
virgI6774# virgI6774#
verbung@meszely.eu
ionOs#6774#IonOs
nogy tudom a hälozati jelszot viszaällitani windows serveren valami reset-networkpassword nogy tudom a hälozati jelszot viszaällitani windows serveren valami reset-networkpassword
Reset-ComputerMachinePassword -Server dc01.domain.local -Credential (Get-Credential) Reset-ComputerMachinePassword -Server dc01.domain.local -Credential (Get-Credential)
NET-SW02 - 1/1/23 homeassistant key : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhMzNjZGMzMDcwNzE0ZTY2YTkwMGUwMjgzMTcxNTg2ZSIsImlhdCI6MTc3MDM2MTk1MiwiZXhwIjoyMDg1NzIxOTUyfQ.6kG97i32BJb_HknD7R-y8xHqSpTaofbmTtoqjB8g1-w
Drucker Emmer
NET-SW02 - 1/1/25
Drucek Etsch
gemini api key : AIzaSyBUvqSD7llReHbCQAosuDDy1Q5gIT6pKLw gemini api key : AIzaSyBUvqSD7llReHbCQAosuDDy1Q5gIT6pKLw
gitea apy key : d5747e87cb2e1022904c4a60f801cb2758542abb gitea api key : d5747e87cb2e1022904c4a60f801cb2758542abb
apple app key : wflh-aaft-dizu-cyxm apple api key : wflh-aaft-dizu-cyxm
uptimerobot api key : u3239099-556320ad0c63c591a7742a47
uptmerobot@meszely.eu
virgI
docker-compose up -d docker-compose up -d
docker-compose up -d --build docker-compose up -d --build
@@ -148,12 +152,6 @@ SOIB2026STD!
KXBPK-6QNPK-93C3C-7KKVG-GMT44 KXBPK-6QNPK-93C3C-7KKVG-GMT44
# Ispconfig
[INFO] Your ISPConfig admin password is: nqhHDGE5mDAmMpN
[INFO] Your MySQL root password is: unKdKpZJyCAzM5W8kuKb
[INFO] Warning: Please delete the log files in /root/ispconfig-install-log/setup-* once you don't need them anymore because they contain your passwords!
Herr Werther Rainer Herr Werther Rainer
0172 9428000 0172 9428000
@@ -165,5 +163,23 @@ q5tOCJLo
hipas hipas
321684 321684
Security .. Mario , akku defekt... Spranke... verbung@meszely.eu
ionOs#6774#IonOs
3840 x
4096 x 2160
https://prtg.aps.local/public/mapshow.htm?id=5643&mapid=4864A75D-BDEF-4C43-AD6E-02F79DA4A1EC
RCPT TO:<istvan@meszely.eu>
00:08:7B:25:DD:F3
Kapelou2025
Schliesinger mail:
wegner@

View File

@@ -24,19 +24,10 @@ aps\svc.scan2home
Dein anwendungsspezifisches Passwort lautet: Dein anwendungsspezifisches Passwort lautet:
xqol-fwhb-cmnb-vgac xqol-fwhb-cmnb-vgac
Horstmann, Claudia
Kotevski, Filip
Lullo, Stefania
Molle, Anja
Daniel, Schulze
Bayraktar, Betül
Bryce, Andrew C.
Jürgensen, Sven
-------------------
Spiller, Britta
Jacqueline Bethcke
Marie Scheithauer
APS-FILE02 APS-FILE02
User$\p.heinrich\_Scans User$\p.heinrich\_Scans
IXOS
j.berg - 1234
+4940523889211

View File

@@ -0,0 +1,49 @@
# SOP: Export von Druckprotokollen in MySQL (drucklog_export_v.0.1.ps1)
## 1. Zweck des Skripts
Dieses PowerShell-Skript dient der zentralen Erfassung von Druckvorgängen auf Windows-Servern oder Workstations. Es liest das Ereignisprotokoll `Microsoft-Windows-PrintService/Operational` (Event ID 307) aus und überträgt die Details (Benutzer, Dokumentname, Seitenanzahl, Drucker) in eine MySQL-Datenbank (`drucklog`).
**Nutzen:** Ermöglicht die langfristige Analyse des Druckaufkommens und die Erstellung von Reports für die IT-Administration.
## 2. Voraussetzungen & Installation
Damit das Skript ordnungsgemäß ausgeführt werden kann, müssen folgende Voraussetzungen erfüllt sein:
* **MySQL Connector NET:** Das Skript erwartet die `MySql.Data.dll` im Pfad:
`C:\Program Files (x86)\MySQL\MySQL Connector NET 9.4\MySql.Data.dll`
* **PrintService Log:** Das "Operational"-Protokoll im Windows Event Viewer muss **aktiviert** sein.
* **MySQL Datenbank:** Eine Datenbank namens `drucklog` mit der entsprechenden Tabellenstruktur muss auf dem Host `10.102.1.65` vorhanden sein.
## 3. Zentrale Konfiguration (Skript-Header)
Die Verbindungsparameter sind im Skript wie folgt definiert:
* **MySQL-Host:** `10.102.1.65`
* **Datenbank-Benutzer:** `svc.druckerlog`
* **Datenbank-Passwort:** (Im Skript hinterlegt)
* **Ziel-Datenbank:** `drucklog`
* **Log-Pfad:** `C:\Tools\drucklog_task.log` (Überprüfung der Skriptausführung)
## 4. Ausführung & Automatisierung
Das Skript kann manuell oder über die **Windows Aufgabenplanung (Task Scheduler)** ausgeführt werden.
### Manueller Test (PowerShell):
```powershell
# In das Verzeichnis wechseln und ausführen
.\drucklog_export_v.0.1.ps1
```
### Empfohlene Automatisierung (Task Scheduler):
* **Trigger:** Täglich, Wiederholung alle 1 Stunde.
* **Aktion:** `powershell.exe`
* **Argumente:** `-ExecutionPolicy Bypass -File "C:\Scripts\drucklog_export_v.0.1.ps1"`
## 5. Monitoring & Protokollierung
Das Skript schreibt bei jedem Durchlauf einen Zeitstempel in die lokale Datei:
`C:\Tools\drucklog_task.log`
Bei Fehlern in der Datenbankverbindung prüfen Sie bitte, ob der MySQL-Host `10.102.1.65` vom lokalen System aus erreichbar ist (Port 3306).
## 6. Sicherheitshinweis
**Achtung:** Das Skript enthält Datenbank-Zugangsdaten im Klartext. Stellen Sie sicher, dass die NTFS-Berechtigungen auf dem Windows-Server so gesetzt sind, dass nur das IT-Team Zugriff auf das Skriptverzeichnis hat.
---
*Erstellt für die IT-Dokumentation - Projekt: IT Internal Repository*

24
Doc/Microsoft o365 URL.md Normal file
View File

@@ -0,0 +1,24 @@
1. Kulcsfontosságú URL-ek (FQDN-ek)
A login és az outlook mellett a következőket is engedélyezni kell (jellemzően a 443-as porton):
* Bejelentkezés és Hitelesítés:
* *.microsoftonline.com
* *.microsoft.com
* *.msftauth.net
* *.msauth.net
* Outlook/OWA és Kapcsolódó szolgáltatások:
* *.office.com
* *.office365.com
* *.outlook.com
* Statikus tartalom és CDN (nélkülük lassú vagy szétesik az oldal):
* *.msedge.net
* *.msecnd.net
* *.res.office365.com
*.outlook.office.com
*.office.com
*.microsoftonline.com
*.msftauth.net
https://learn.microsoft.com/en-us/microsoft-365/enterprise/urls-and-ip-address-ranges?view=o365-worldwide

View File

@@ -0,0 +1,38 @@
# SOP: Bereinigung alter Datensätze (delete_old_records.py)
## 1. Zweck des Skripts
Dieses Python-Skript dient der automatischen Bereinigung (Housekeeping) unserer MySQL-Datenbanken. Es entfernt veraltete Datensätze, die eine definierte Aufbewahrungsfrist (Retention Period) überschritten haben, um die Datenbankgröße zu kontrollieren und die Abfragegeschwindigkeit zu optimieren.
## 2. Voraussetzungen
* **Python Version:** Mindestens Python 3.8.
* **Bibliotheken:** `mysql-connector-python`, `python-dotenv`.
* **Datenbankzugriff:** Das Skript benötigt einen Benutzer mit `DELETE`-Berechtigungen auf die entsprechenden Tabellen.
## 3. Konfiguration
Die Steuerung des Skripts erfolgt über eine `.env`-Datei oder direkt im Skript-Header:
* **DB_HOST:** IP des Datenbankservers (z. B. `10.102.1.65`).
* **RETENTION_DAYS:** Anzahl der Tage, nach denen Daten gelöscht werden (Standard: X Tage).
* **DRY_RUN:** Wenn auf `True` gesetzt, zeigt das Skript nur an, was gelöscht würde, ohne die Datenbank tatsächlich zu verändern.
## 4. Ausführung
Es wird empfohlen, das Skript regelmäßig als Cronjob (Linux) oder Task Scheduler (Windows) auszuführen.
### Testlauf (Dry-Run):
```bash
python3 delete_old_records.py --mode dry-run
```
### Scharfe Ausführung:
```bash
python3 delete_old_records.py --mode execute
```
## 5. Monitoring & Logs
Alle Löschvorgänge werden in der Standardausgabe und optional in einer Log-Datei protokolliert. Prüfen Sie regelmäßig die Anzahl der gelöschten Datensätze, um sicherzustellen, dass die Logik korrekt arbeitet.
## 6. Sicherheitshinweis
**Achtung:** Gelöschte Daten können nicht ohne Backup wiederhergestellt werden. Führen Sie vor größeren Änderungen an der Aufbewahrungslogik immer ein Datenbank-Backup durch.
---
*Erstellt für die IT-Dokumentation - Projekt: IT Internal Repository*

View File

@@ -0,0 +1,31 @@
# SOP: Behebung winmail.dat Anhang-Fehler (Office 365)
## Problembeschreibung
Wenn E-Mails an externe Empfänger gesendet werden, werden Anhänge (z. B. PDF-Dateien) nicht korrekt angezeigt, sondern sind in einer einzigen `winmail.dat`-Datei verpackt. Dies wird durch das Outlook-eigene **TNEF (Transport Neutral Encapsulation Format)** verursacht, das andere E-Mail-Clients nicht interpretieren können.
## Lösungsmöglichkeiten
### 1. Globale Lösung (Exchange Online Admin) - EMPFOHLEN
Diese Einstellung gilt für die gesamte Organisation und deaktiviert die TNEF-Codierung auf Serverebene für externe Empfänger.
1. Melden Sie sich im **Exchange Admin Center** an.
2. Navigieren Sie zu: **Mail flow** (Nachrichtenfluss) -> **Remote domains** (Remote-Domänen).
3. Wählen Sie die Domäne **Default** (*) aus.
4. Suchen Sie die Einstellung **Use Table Neutral Encapsulation Format (TNEF)**.
5. Setzen Sie den Wert auf **Never** (Niemals).
6. Speichern Sie die Änderungen.
### 2. PowerShell-Lösung (Schnellere Administration)
Führen Sie den folgenden Befehl im Exchange Online PowerShell-Modul aus:
```powershell
Set-RemoteDomain -Identity Default -TNEFEnabled $false
```
### 3. Einzelne Benutzerlösung (Outlook Client)
Wenn die Korrektur nur an einem PC erfolgen soll:
1. **Datei -> Optionen -> E-Mail**.
2. Im Abschnitt **Nachrichtenformat**: *"Beim Senden von Nachrichten im Rich-Text-Format an externe Empfänger"* -> Auf **In HTML-Format konvertieren** umstellen.
---
*Erstellt am: 24. März 2026*

View File

@@ -0,0 +1,31 @@
# SOP: winmail.dat csatolmány hiba javítása (Office 365)
## Probléma leírása
Külső címzetteknek küldött e-mailek esetén a csatolmányok (például PDF fájlok) nem megfelelően érkeznek meg, hanem egyetlen `winmail.dat` fájlba csomagolva látszanak. Ezt az Outlook saját **TNEF (Transport Neutral Encapsulation Format)** kódolása okozza, amit más levelezőrendszerek nem tudnak értelmezni.
## Megoldási lehetőségek
### 1. Globális megoldás (Exchange Online Admin) - JAVASOLT
Ez a beállítás az egész szervezetre vonatkozik, és szerver szinten tiltja le a TNEF kódolást a külső címzettek felé.
1. Lépj be az **Exchange Admin Center** felületre.
2. Navigálj ide: **Mail flow** (Üzenetküldés) -> **Remote domains** (Távoli tartományok).
3. Válaszd ki a **Default** (*) tartományt.
4. Keresd meg a **Use Table Neutral Encapsulation Format (TNEF)** beállítást.
5. Állítsd az értékét **Never** (Soha) típusra.
6. Mentsd el a módosításokat.
### 2. PowerShell megoldás (Gyorsabb adminisztráció)
Futtasd az alábbi parancsot az Exchange Online PowerShell modulban:
```powershell
Set-RemoteDomain -Identity Default -TNEFEnabled $false
```
### 3. Egyéni felhasználói megoldás (Outlook kliens)
Ha csak egy gépen kell javítani:
1. **Fájl -> Beállítások -> Posta**.
2. Az **Üzenetformátum** résznél: *"Üzenetek küldése RTF formátumban külső címzetteknek"* -> Állítsd át **Konvertálás HTML formátumra** értékre.
---
*Készült: 2026. március 24.*

View File

@@ -0,0 +1,41 @@
# SOP: Automatisierter PDF-Import aus O365 (import_pdf_from_o365_de.v2.2.py)
## 1. Zweck des Skripts
Dieses Python-Skript automatisiert den Import von PDF-Dokumenten aus der Microsoft 365-Umgebung (z.B. Outlook-Postfächer oder SharePoint) in das lokale IT-Dateisystem. Es dient zur effizienten Digitalisierung von Dokumenten, die als E-Mail-Anhänge eingehen.
## 2. Voraussetzungen & Bibliotheken
Um das Skript auszuführen, sind folgende Module notwendig:
* **Python:** Version 3.8+
* **Module:** `pip install O365 requests python-dotenv`
* **Infrastruktur:** Eine registrierte Anwendung in Azure AD (Entra ID) mit den entsprechenden API-Berechtigungen (`Mail.Read`, `Files.Read`).
## 3. Zentrale Konfiguration
Das Skript benötigt eine `.env`-Datei mit folgenden Zugangsdaten:
* **CLIENT_ID:** Die ID der registrierten Azure-App.
* **CLIENT_SECRET:** Das zugehörige Client-Secret für die Authentifizierung.
* **TARGET_FOLDER:** Der lokale Pfad, in dem die PDF-Dateien gespeichert werden sollen.
* **MAILBOX:** Die E-Mail-Adresse des zu überwachenden Postfachs.
## 4. Ausführung & Betrieb
Das Skript kann sowohl manuell als auch automatisiert über einen Dienst oder Cronjob gestartet werden.
### Manueller Start:
```bash
# Skript manuell aufrufen
python3 import_pdf_from_o365_de.v2.2.py
```
### Fehlerbehebung (Troubleshooting):
* **Authentifizierungsfehler:** Prüfen Sie, ob das Client-Secret abgelaufen ist oder die Berechtigungen in Azure AD korrekt gesetzt sind.
* **Download-Fehler:** Stellen Sie sicher, dass das Zielverzeichnis vorhanden ist und Schreibrechte bestehen.
## 5. Monitoring
Die Ausführung des Skripts wird standardmäßig protokolliert. Bei erfolgreichem Import werden die entsprechenden Log-Einträge erstellt, die den Dateinamen und den Zeitstempel enthalten.
## 6. Sicherheitshinweis
Bewahren Sie die `.env`-Datei sicher auf und geben Sie das **Client-Secret** niemals an unbefugte Personen weiter. Es wird empfohlen, die Secret-Rotation gemäß IT-Sicherheitsrichtlinien regelmäßig durchzuführen.
---
*Erstellt für die IT-Dokumentation - Projekt: IT Internal Repository*

2
Doc/WoT/WoT.md Normal file
View File

@@ -0,0 +1,2 @@
# WoT
https://worldoftanks.eu/hu/content/guide/twitch-drops/

View File

@@ -0,0 +1,115 @@
import requests
import json
import urllib3
# Kikapcsoljuk az SSL figyelmeztetéseket
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
# --- KONFIGURÁCIÓ ---
# Módosítva a kért IP-re:
URL = "http://10.102.1.201:8080/monitoring/check_mk/api/1.0"
USERNAME = "cmkadmin"
PASSWORD = "cmkadmin123"
FOLDER = "/"
# A fő szülő (Parent) adatai
GW_NAME = "SOPHOS-GW"
GW_IP = "10.102.1.1"
# A switchek adatai
SWITCHES = {
"NET-SW01": "10.220.1.84",
"NET-SW02": "10.220.1.85",
"NET-SW03": "172.16.71.6",
"NET-SW04": "10.220.1.86",
"NET-SW05": "10.220.1.87",
"NET-SW06": "10.220.1.88",
"NET-SW07": "10.220.1.90",
"NET-SW08": "10.220.1.91",
"NET-SW09": "10.220.1.92",
"NET-SW10": "10.220.1.93",
"NET-SW11": "10.220.1.94",
"NET-SW12": "10.220.1.95",
"NET-SW13": "10.220.1.96",
"NET-SW14": "10.220.1.97",
}
session = requests.Session()
session.auth = (USERNAME, PASSWORD)
session.headers.update({"Accept": "application/json", "Content-Type": "application/json"})
def add_host(name, ip, parents=None):
print(f"Adding host: {name} ({ip})...")
attributes = {
"ipaddress": ip,
"tag_agent": "no-agent",
}
if parents:
attributes["parents"] = parents
payload = {
"host_name": name,
"folder": FOLDER,
"attributes": attributes
}
response = session.post(
f"{URL}/domain-types/host_config/collections/all",
json=payload
)
if response.status_code == 200:
print(f" [OK] Host '{name}' successfully added.")
elif response.status_code == 400 and "already exists" in response.text:
print(f" [INFO] Host '{name}' already exists.")
else:
print(f" [ERROR] Failed to add {name}: {response.status_code} - {response.text}")
def activate_changes():
print("Fetching pending changes to get ETag...")
# Külön session az ETag lekéréshez a biztonság kedvéért
etag_session = requests.Session()
etag_session.auth = (USERNAME, PASSWORD)
etag_session.headers.update({"Accept": "application/json"})
resp = etag_session.get(f"{URL}/domain-types/activation_run/collections/pending_changes")
if resp.status_code != 200:
print(f" [ERROR] Could not fetch pending changes: {resp.text}")
return
etag = resp.headers.get("ETag")
# Ha nincs ETag vagy nincs függőben lévő változás, ne csináljunk semmit
if not etag or resp.json().get('value') == []:
print(" [INFO] No pending changes to activate.")
return
print(f"Activating changes with ETag: {etag}")
# Az aktiváláshoz be kell állítani az If-Match fejlécet
# Ezt az eredeti session headerjeihez adjuk hozzá
session.headers.update({"If-Match": etag})
response = session.post(
f"{URL}/domain-types/activation_run/actions/activate-changes/invoke",
json={"redirect": False, "sites": ["monitoring"]}
)
if response.status_code == 200:
print(" [OK] Changes activated successfully.")
else:
print(f" [ERROR] Failed to activate changes: {response.status_code} - {response.text}")
if __name__ == "__main__":
# 1. Először a SOPHOS GW-t vesszük fel
add_host(GW_NAME, GW_IP)
# 2. Utána a switcheket a GW-vel szülőként
for name, ip in SWITCHES.items():
add_host(name, ip, parents=[GW_NAME])
# 3. Aktiváljuk a változtatásokat
activate_changes()

View File

@@ -0,0 +1,17 @@
services:
checkmk:
image: checkmk/check-mk-raw:2.3.0-latest
container_name: checkmk
restart: always
ports:
- "8080:5000"
environment:
- CMK_SITE_ID=monitoring
- CMK_PASSWORD=cmkadmin123
- TZ=Europe/Berlin
volumes:
- ./sites:/opt/omd/sites
- /etc/localtime:/etc/localtime:ro
cap_add:
- NET_ADMIN
- NET_RAW

View File

@@ -0,0 +1,68 @@
Host,Port,Description,Display Name,Folder
APPCS01.aps.local,3389,,APPCS01,APS
APS-ADMIN01.aps.local,3389,,APS-ADMIN01,APS
APS-ADMIN01.aps.local,3389,,APS-ADMIN01 - FullSize,APS
APS-AOTRACE01.aps.local,3389,,APS-AOTRACE01,APS\Apotheke
APS-APO01.aps.local,3389,,APS-APO01,APS\Apotheke
APS-BK01.aps.local,3389,,APS-BK01,APS\Backup
APS-CONN01.aps.local,3389,,APS-CONN01,APS\AD
APS-DC01.aps.local,3389,,APS-DC01,APS\AD
APS-DC02.aps.local,3389,,APS-DC02,APS\AD
APS-EGOSEC01.aps.local,3389,,APS-EGOSEC01,APS\Matrix42
APS-ELPRO01.aps.local,3389,,APS-ELPRO01,APS\Elpro-Monitoring
APS-EXCH01.aps.local,3389,,APS-EXCH01,APS\Exchange
APS-EXCH02.aps.local,3389,,APS-EXCH02,APS\Exchange
APS-FAX01.aps.local,3389,,APS-FAX01,APS\FAX
APS-FILE01.aps.local,3389,,"APS-FILE01 (Abt.,Apps,Data)",APS\Fileserver
APS-FILE02.aps.local,3389,,APS-FILE02 (UserShare),APS\Fileserver
APS-GENO01.aps.local,3389,,APS-GENO01,APS\FB/CO
APS-Infra01.aps.local,3389,,APS-Infra01,APS\AD
APS-Infra02.aps.local,3389,,APS-Infra02,APS\AD
APS-Lizenz01.aps.local,3389,,APS-Lizenz01,APS\AD
APS-MAVE01.aps.local,3389,,APS-MAVE01 (Jobs),APS\Mave
APS-MAVE02.aps.local,3389,,APS-MAVE02 (Scanner),APS\Mave
APS-MAVE03.aps.local,3389,,APS-MAVE03 (Schnittstellen),APS\Mave
APS-MAVE04.aps.local,3389,,APS-MAVE04 (Datenbank),APS\Mave
APs-MYSQL01.aps.local,3389,,APS-MYSQL01,APS\SQL
APS-NPS01.aps.local,3389,,APS-NPS01,APS\AD
APS-NSM01.aps.local,3389,,APS-NSM01,APS\Matrix42
APS-PKI01.aps.local,3389,,APS-PKI01 (offline),APS\PKI
APS-PKI02.aps.local,3389,,APS-PKI02,APS\PKI
APS-PRINT01.aps.local,3389,,APS-PRINT01,APS\Drucker
APS-PRINT02.aps.local,3389,,APS-PRINT02,APS\Drucker
APS-PRTG01.aps.local,3389,,APS-PRTG01,APS\Monitoring
APS-RDS01.aps.local,3389,,APS-RDS01,APS\Terminal
APS-RDS02.aps.local,3389,,APS-RDS02,APS\Terminal
APS-RDS03.aps.local,3389,,APS-RDS03,APS\Terminal
APS-RDS04.aps.local,3389,,APS-RDS04,APS\Terminal
APS-RDS05.aps.local,3389,,APS-RDS05,APS\Terminal
APS-RDS06.aps.local,3389,,APS-RDS06,APS\Terminal
APS-RDSCB01.aps.local,3389,,APS-RDSCB01,APS\Terminal
APS-ROXTRA01.aps.local,3389,,APS-ROXTRA01,APS\roXtra
APS-SASM01.aps.local,3389,,APS-SASM01,APS\Matrix42
APS-SQL01.aps.local,3389,,APS-SQL01,APS\SQL
APS-TC011.aps.local,3389,,APS-TC011,APS\xxx-Desktops
APS-TC022.aps.local,3389,,APS-TC022,APS\xxx-Desktops
APS-TC068.aps.local,3389,,APS-TC068,APS\xxx-Desktops
APS-TC069.aps.local,3389,,APS-TC069,APS\xxx-Desktops
APS-TC073.aps.local,3389,,APS-TC073,APS\xxx-Desktops
APS-TC074.aps.local,3389,,APS-TC074,APS\xxx-Desktops
APS-TC075.aps.local,3389,,APS-TC075,APS\xxx-Desktops
APS-TC076.aps.local,3389,,APS-TC076,APS\xxx-Desktops
APS-TC077.aps.local,3389,,APS-TC077,APS\xxx-Desktops
APS-TC078.aps.local,3389,,APS-TC078,APS\xxx-Desktops
APS-TC079.aps.local,3389,,APS-TC079,APS\xxx-Desktops
APS-TC080.aps.local,3389,,APS-TC080,APS\xxx-Desktops
APS-TC081.aps.local,3389,,APS-TC081,APS\xxx-Desktops
APS-TC082.aps.local,3389,,APS-TC082,APS\xxx-Desktops
APS-TC083.aps.local,3389,,APS-TC083,APS\xxx-Desktops
APS-TC086.aps.local,3389,,APS-TC086,APS\xxx-Desktops
APS-TC087.aps.local,3389,,APS-TC087,APS\xxx-Desktops
APS-TC088.aps.local,3389,,APS-TC088,APS\xxx-Desktops
APS-TC089.aps.local,3389,,APS-TC089,APS\xxx-Desktops
APS-TD001.aps.local,3389,,APS-TD001,APS\xxx-Desktops
APS-UEM01.aps.local,3389,,APS-UEM01,APS\Matrix42
mave-terminals.aps.local,3389,,MAVE-TERMINALS,APS\Mave
10.101.0.83,3389,,10.101.0.83,
APS-VM01.aps.local,3389,,APS-VM01,
APS-VM02.aps.local,3389,,APS-VM02,
1 Host Port Description Display Name Folder
2 APPCS01.aps.local 3389 APPCS01 APS
3 APS-ADMIN01.aps.local 3389 APS-ADMIN01 APS
4 APS-ADMIN01.aps.local 3389 APS-ADMIN01 - FullSize APS
5 APS-AOTRACE01.aps.local 3389 APS-AOTRACE01 APS\Apotheke
6 APS-APO01.aps.local 3389 APS-APO01 APS\Apotheke
7 APS-BK01.aps.local 3389 APS-BK01 APS\Backup
8 APS-CONN01.aps.local 3389 APS-CONN01 APS\AD
9 APS-DC01.aps.local 3389 APS-DC01 APS\AD
10 APS-DC02.aps.local 3389 APS-DC02 APS\AD
11 APS-EGOSEC01.aps.local 3389 APS-EGOSEC01 APS\Matrix42
12 APS-ELPRO01.aps.local 3389 APS-ELPRO01 APS\Elpro-Monitoring
13 APS-EXCH01.aps.local 3389 APS-EXCH01 APS\Exchange
14 APS-EXCH02.aps.local 3389 APS-EXCH02 APS\Exchange
15 APS-FAX01.aps.local 3389 APS-FAX01 APS\FAX
16 APS-FILE01.aps.local 3389 APS-FILE01 (Abt.,Apps,Data) APS\Fileserver
17 APS-FILE02.aps.local 3389 APS-FILE02 (UserShare) APS\Fileserver
18 APS-GENO01.aps.local 3389 APS-GENO01 APS\FB/CO
19 APS-Infra01.aps.local 3389 APS-Infra01 APS\AD
20 APS-Infra02.aps.local 3389 APS-Infra02 APS\AD
21 APS-Lizenz01.aps.local 3389 APS-Lizenz01 APS\AD
22 APS-MAVE01.aps.local 3389 APS-MAVE01 (Jobs) APS\Mave
23 APS-MAVE02.aps.local 3389 APS-MAVE02 (Scanner) APS\Mave
24 APS-MAVE03.aps.local 3389 APS-MAVE03 (Schnittstellen) APS\Mave
25 APS-MAVE04.aps.local 3389 APS-MAVE04 (Datenbank) APS\Mave
26 APs-MYSQL01.aps.local 3389 APS-MYSQL01 APS\SQL
27 APS-NPS01.aps.local 3389 APS-NPS01 APS\AD
28 APS-NSM01.aps.local 3389 APS-NSM01 APS\Matrix42
29 APS-PKI01.aps.local 3389 APS-PKI01 (offline) APS\PKI
30 APS-PKI02.aps.local 3389 APS-PKI02 APS\PKI
31 APS-PRINT01.aps.local 3389 APS-PRINT01 APS\Drucker
32 APS-PRINT02.aps.local 3389 APS-PRINT02 APS\Drucker
33 APS-PRTG01.aps.local 3389 APS-PRTG01 APS\Monitoring
34 APS-RDS01.aps.local 3389 APS-RDS01 APS\Terminal
35 APS-RDS02.aps.local 3389 APS-RDS02 APS\Terminal
36 APS-RDS03.aps.local 3389 APS-RDS03 APS\Terminal
37 APS-RDS04.aps.local 3389 APS-RDS04 APS\Terminal
38 APS-RDS05.aps.local 3389 APS-RDS05 APS\Terminal
39 APS-RDS06.aps.local 3389 APS-RDS06 APS\Terminal
40 APS-RDSCB01.aps.local 3389 APS-RDSCB01 APS\Terminal
41 APS-ROXTRA01.aps.local 3389 APS-ROXTRA01 APS\roXtra
42 APS-SASM01.aps.local 3389 APS-SASM01 APS\Matrix42
43 APS-SQL01.aps.local 3389 APS-SQL01 APS\SQL
44 APS-TC011.aps.local 3389 APS-TC011 APS\xxx-Desktops
45 APS-TC022.aps.local 3389 APS-TC022 APS\xxx-Desktops
46 APS-TC068.aps.local 3389 APS-TC068 APS\xxx-Desktops
47 APS-TC069.aps.local 3389 APS-TC069 APS\xxx-Desktops
48 APS-TC073.aps.local 3389 APS-TC073 APS\xxx-Desktops
49 APS-TC074.aps.local 3389 APS-TC074 APS\xxx-Desktops
50 APS-TC075.aps.local 3389 APS-TC075 APS\xxx-Desktops
51 APS-TC076.aps.local 3389 APS-TC076 APS\xxx-Desktops
52 APS-TC077.aps.local 3389 APS-TC077 APS\xxx-Desktops
53 APS-TC078.aps.local 3389 APS-TC078 APS\xxx-Desktops
54 APS-TC079.aps.local 3389 APS-TC079 APS\xxx-Desktops
55 APS-TC080.aps.local 3389 APS-TC080 APS\xxx-Desktops
56 APS-TC081.aps.local 3389 APS-TC081 APS\xxx-Desktops
57 APS-TC082.aps.local 3389 APS-TC082 APS\xxx-Desktops
58 APS-TC083.aps.local 3389 APS-TC083 APS\xxx-Desktops
59 APS-TC086.aps.local 3389 APS-TC086 APS\xxx-Desktops
60 APS-TC087.aps.local 3389 APS-TC087 APS\xxx-Desktops
61 APS-TC088.aps.local 3389 APS-TC088 APS\xxx-Desktops
62 APS-TC089.aps.local 3389 APS-TC089 APS\xxx-Desktops
63 APS-TD001.aps.local 3389 APS-TD001 APS\xxx-Desktops
64 APS-UEM01.aps.local 3389 APS-UEM01 APS\Matrix42
65 mave-terminals.aps.local 3389 MAVE-TERMINALS APS\Mave
66 10.101.0.83 3389 10.101.0.83
67 APS-VM01.aps.local 3389 APS-VM01
68 APS-VM02.aps.local 3389 APS-VM02

View File

@@ -0,0 +1,142 @@
import requests
import json
import urllib3
import csv
import socket
import sys
# Kikapcsoljuk az SSL figyelmeztetéseket
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
# --- KONFIGURÁCIÓ ---
URL = "http://10.102.1.201:8080/monitoring/check_mk/api/1.0"
USERNAME = "cmkadmin"
PASSWORD = "cmkadmin123"
# CSV fájl elérési útja, a szkript új helyéhez viszonyítva (Docker/checkmk_aps/)
CSV_FILE_PATH = "hosts_for_checkmk.csv"
session = requests.Session()
session.auth = (USERNAME, PASSWORD)
session.headers.update({"Accept": "application/json", "Content-Type": "application/json"})
def resolve_hostname_to_ip(hostname):
"""Feloldja a hosztnevet IP címre. Ha már IP cím, visszaadja azt."""
try:
socket.inet_pton(socket.AF_INET, hostname)
return hostname # Már IP cím
except socket.error:
# Ha nem IP cím, próbáljuk meg feloldani
try:
return socket.gethostbyname(hostname)
except socket.gaierror:
print(f" [WARNING] Could not resolve hostname: {hostname}")
return None
def add_host(name, ip, parents=None):
"""
Hozzáad egy hosztot a Checkmk-hoz.
Minden hoszt a gyökér mappába kerül.
"""
checkmk_folder_path_slug = "/" # Mindig a gyökér mappa
print(f"Adding host: {name} ({ip}) to root folder '/''...")
attributes = {
"ipaddress": ip,
"tag_agent": "no-agent", # Csak pingeljen, ne keressen agentet
}
if parents:
attributes["parents"] = parents
payload = {
"host_name": name,
"folder": checkmk_folder_path_slug, # Folder must be the slugified full path
"attributes": attributes
}
response = session.post(
f"{URL}/domain-types/host_config/collections/all",
json=payload
)
if response.status_code == 200:
print(f" [OK] Host '{name}' successfully added.")
elif response.status_code == 400 and "already exists" in response.text:
print(f" [INFO] Host '{name}' already exists.")
else:
print(f" [ERROR] Failed to add {name}: {response.status_code} - {response.text}")
print(f" [DEBUG] Payload: {json.dumps(payload)}")
def activate_changes():
"""
Aktiválja a Checkmk-ban lévő függőben lévő változásokat.
"""
print("Fetching pending changes to get ETag...")
etag_session = requests.Session()
etag_session.auth = (USERNAME, PASSWORD)
etag_session.headers.update({"Accept": "application/json"})
resp = etag_session.get(f"{URL}/domain-types/activation_run/collections/pending_changes")
if resp.status_code != 200:
print(f" [ERROR] Could not fetch pending changes: {resp.text}")
return
etag = resp.headers.get("ETag")
# Ha nincs ETag vagy nincs függőben lévő változás, ne csináljunk semmit
if not etag or not resp.json().get('value'): # ellenőrizzük, hogy 'value' nem üres-e
print(" [INFO] No pending changes to activate.")
return
print(f"Activating changes with ETag: {etag}")
# Az aktiváláshoz be kell állítani az If-Match fejlécet
activation_headers = {
"Accept": "application/json",
"Content-Type": "application/json",
"If-Match": etag
}
response = session.post(
f"{URL}/domain-types/activation_run/actions/activate-changes/invoke",
headers=activation_headers,
json={"redirect": False, "sites": ["monitoring"]}
)
if response.status_code == 200:
print(" [OK] Changes activated successfully.")
else:
print(f" [ERROR] Failed to activate changes: {response.status_code} - {response.text}")
if __name__ == "__main__":
hosts_to_import = []
try:
with open(CSV_FILE_PATH, mode='r', newline='', encoding='utf-8') as file:
reader = csv.DictReader(file)
for row in reader:
hostname = row['Host'].strip()
ip_address = resolve_hostname_to_ip(hostname)
if ip_address:
hosts_to_import.append({
"name": hostname,
"ip": ip_address,
})
else:
print(f"Skipping host '{hostname}' due to unresolved IP address.")
except FileNotFoundError:
print(f"ERROR: CSV file not found at {CSV_FILE_PATH}")
sys.exit(1)
# Nincs mappalétrehozás, minden a gyökérbe kerül
# Hosztok hozzáadása a Checkmk-hoz
for host in hosts_to_import:
add_host(host['name'], host['ip']) # Nincs 'folder_display' paraméter
activate_changes()

View File

@@ -0,0 +1,17 @@
services:
grafana:
image: grafana/grafana-oss:9.5.15
container_name: graphana_aps
restart: unless-stopped
ports:
- "3000:3000"
environment:
- GF_INSTALL_PLUGINS=jasonlashua-prtg-datasource
- GF_SERVER_ROOT_URL=http://graphana.aps.local
- GF_SECURITY_ADMIN_PASSWORD=admin
- GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS=jasonlashua-prtg-datasource
volumes:
- graphana_data:/var/lib/grafana
volumes:
graphana_data:

5
Docker/librenms_aps/.env Normal file
View File

@@ -0,0 +1,5 @@
# LibreNMS alap beállítások
MYSQL_PASSWORD=librenms_db_pass
MYSQL_ROOT_PASSWORD=librenms_root_pass
TZ=Europe/Berlin
# Az időzónát módosítsd igény szerint (pl. Europe/Budapest)

View File

@@ -0,0 +1,106 @@
services:
db:
image: mariadb:10.5
container_name: librenms_db
command:
- mysqld
- --innodb-file-per-table=1
- --lower-case-table-names=1
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
volumes:
- ./db:/var/lib/mysql
environment:
- TZ=${TZ}
- MYSQL_DATABASE=librenms
- MYSQL_USER=librenms
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
restart: always
redis:
image: redis:6.0-alpine
container_name: librenms_redis
environment:
- TZ=${TZ}
restart: always
librenms:
image: librenms/librenms:latest
container_name: librenms
hostname: librenms
ports:
- "8000:8000"
volumes:
- ./librenms:/data
depends_on:
- db
- redis
environment:
- TZ=${TZ}
- PUID=1000
- PGID=1000
- APP_URL=http://10.102.1.201:8000
- DB_HOST=db
- DB_NAME=librenms
- DB_USER=librenms
- DB_PASSWORD=${MYSQL_PASSWORD}
- REDIS_HOST=redis
restart: always
cron:
image: librenms/librenms:latest
container_name: librenms_cron
hostname: librenms-cron
volumes:
- ./librenms:/data
depends_on:
- db
- redis
environment:
- TZ=${TZ}
- PUID=1000
- PGID=1000
- DB_HOST=db
- DB_NAME=librenms
- DB_USER=librenms
- DB_PASSWORD=${MYSQL_PASSWORD}
- REDIS_HOST=redis
- SIDECAR_CRON=1
restart: always
dispatcher:
image: librenms/librenms:latest
container_name: librenms_dispatcher
hostname: librenms-dispatcher
volumes:
- ./librenms:/data
depends_on:
- db
- redis
environment:
- TZ=${TZ}
- PUID=1000
- PGID=1000
- DB_HOST=db
- DB_NAME=librenms
- DB_USER=librenms
- DB_PASSWORD=${MYSQL_PASSWORD}
- REDIS_HOST=redis
- LIBRENMS_ALLOW_LOGIN_GET=true
- DISPATCHER_NODE_ID=dispatcher1
- SIDECAR_DISPATCHER=1
restart: always
grafana:
image: grafana/grafana-oss:latest
container_name: grafana
ports:
- "3000:3000"
volumes:
- ./grafana_data:/var/lib/grafana
environment:
- TZ=${TZ}
- GF_SECURITY_ADMIN_PASSWORD=admin
- GF_USERS_ALLOW_SIGN_UP=false
restart: always

View File

@@ -0,0 +1,5 @@
Your license key
5e377abd-f816-4949-9f95-5c8c9dbfbd37
Your license key
19385219-1295-451f-8130-37557cf74f8c

View File

@@ -0,0 +1,27 @@
services:
n8n:
image: n8nio/n8n
restart: always
ports:
- "5678:5678"
volumes:
- n8n_data:/home/node/.n8n
environment:
# The host URL where n8n will be accessible. Change to your domain or IP.
- N8N_HOST=${N8N_HOST:-localhost}
- N8N_PORT=5678
- N8N_PROTOCOL=http
# This is the URL that n8n will send to external services for webhooks.
# Make sure to update this to your publicly accessible URL.
- WEBHOOK_URL=${WEBHOOK_URL:-http://localhost:5678/}
# Explicitly set secure cookie to false for testing with HTTP
- N8N_SECURE_COOKIE=false
# Set your desired timezone
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE:-Europe/Berlin}
# Database configuration - using SQLite for simplicity with fewer tasks
- DB_TYPE=sqlite
# No specific host, database, user, or password needed for SQLite
# depends_on is no longer needed without postgres
volumes:
n8n_data:

33
Docker/n8n_aps/n8n.conf Normal file
View File

@@ -0,0 +1,33 @@
server {
listen 80;
server_name your.domain.com; # Replace with your actual domain
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name your.domain.com; # Replace with your actual domain
ssl_certificate /path/to/your/fullchain.pem; # Replace with your certificate path (e.g., /etc/letsencrypt/live/your.domain.com/fullchain.pem)
ssl_certificate_key /path/to/your/privkey.pem; # Replace with your private key path (e.g., /etc/letsencrypt/live/your.domain.com/privkey.pem)
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers "ECDHE+AESGCM:ECDHE+CHACHA20:DHE+AESGCM:DHE+CHACHA20";
ssl_prefer_server_ciphers on;
# Optional: Enable HSTS
# add_header Strict-Transport-Security "max-age=63072000" always;
location / {
proxy_pass http://localhost:5678; # n8n is running on port 5678 on the host
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# Required for n8n Webhook URLs
proxy_set_header X-N8N-Webhook-Url $scheme://$host$request_uri;
}
}

View File

@@ -16,8 +16,6 @@ This directory contains all the scripts for automation and administration, organ
### `/Dev/` ### `/Dev/`
This directory contains various development projects, such as `network_scann/`, `switch_ip_scann_CSV/`, `switch_ip_scann_DB/` and serves as a collection of configuration files and notes for various system administration tasks. This directory contains various development projects, such as `network_scann/`, `switch_ip_scann_CSV/`, `switch_ip_scann_DB/` and serves as a collection of configuration files and notes for various system administration tasks.
### `/Doku/` ### `/Doku/`
This directory is used for documentation, data storage, and logs. It contains CSV and text files with user data, printer information, and various logs, organized into subdirectories like `Ai`, `Logs`, and `Pdf`. This directory is used for documentation, data storage, and logs. It contains CSV and text files with user data, printer information, and various logs, organized into subdirectories like `Ai`, `Logs`, and `Pdf`.
@@ -36,6 +34,7 @@ A kedvenc programozási nyelvem a Python.
Weboldalak amiket hasznälni szoktunk: Weboldalak amiket hasznälni szoktunk:
mermaid.live mermaid.live
Általában fedora linux alatt dolgozunk. Általában szerver oldalon Fedora Linux alatt dolgozunk.
Második leggyakrabban használt linux az Ubuntu alapu. A második leggyakrabban használt linux az Ubuntu alapú (szintén szerver).
Virtualizácionk Proxmox VE Kliens oldalon (munkaállomás) Windows 11-et vagy macOS-t használunk.
Virtualizációnk Proxmox VE.

45
GEMINI_o365_app.md Normal file
View File

@@ -0,0 +1,45 @@
# Microsoft 365 App-Registrierung für Skripte (OAuth 2.0)
Diese Anleitung beschreibt die notwendigen Schritte, um eine Anwendung im Microsoft Entra Admin Center zu registrieren. Dies ermöglicht Skripten und anderen Anwendungen den sicheren Zugriff auf Microsoft 365-Dienste (wie z. B. E-Mails über die Graph-API) mittels OAuth 2.0-Authentifizierung.
---
### Praktische Schritte
Diese Schritte müssen von einem globalen Administrator oder einem Benutzer mit entsprechenden Berechtigungen im [Microsoft Entra Admin Center](https://entra.microsoft.com/) durchgeführt werden.
**Schritt 1: Anwendungsregistrierung**
1. Öffnen Sie das **Microsoft Entra Admin Center**.
2. Navigieren Sie zu: **Identität** > **Anwendungen** > **App-Registrierungen** (Identity > Applications > App registrations).
3. Klicken Sie auf **+ Neue Registrierung** (+ New registration).
4. **Name:** Geben Sie einen aussagekräftigen Namen ein, z. B. `Python PDF Downloader Skript`.
5. **Unterstützte Kontotypen:** Wählen Sie die Standardeinstellung: `Nur Konten in diesem Organisationsverzeichnis (...)` (Accounts in this organizational directory only).
6. Den Abschnitt **Umleitungs-URI** (Redirect URI) können Sie leer lassen, da es sich um eine Hintergrundanwendung handelt.
7. Klicken Sie auf **Registrieren** (Register).
**Schritt 2: API-Berechtigungen festlegen**
1. Wählen Sie in der neu registrierten Anwendung das Menü **API-Berechtigungen** (API permissions).
2. Klicken Sie auf **+ Berechtigung hinzufügen** (+ Add a permission).
3. Wählen Sie **Microsoft Graph**.
4. Wählen Sie die Option **Anwendungsberechtigungen** (Application permissions). (WICHTIG: Nicht `Delegierte Berechtigungen`, da das Skript eigenständig und nicht im Namen eines Benutzers ausgeführt wird).
5. Geben Sie im Suchfeld `Mail` ein. Wählen Sie die Berechtigung **Mail.Read**. Wenn Ihr Skript E-Mails auch ändern soll (z. B. als gelesen markieren), benötigen Sie zusätzlich `Mail.ReadWrite`. Für den Anfang genügt `Mail.Read`.
6. Klicken Sie auf **Berechtigungen hinzufügen** (Add permissions).
7. **WICHTIGER SCHRITT:** Sie sehen eine Warnmeldung. Klicken Sie auf die Schaltfläche **`Administratorzustimmung für [Ihr Firmenname] erteilen`** (Grant admin consent for...) und bestätigen Sie das Dialogfeld. Ohne diesen Schritt sind die Berechtigungen nicht aktiv. Neben den Berechtigungen sollte danach ein grünes Häkchen erscheinen.
**Schritt 3: Client-Geheimnis erstellen (Client Secret)**
1. Navigieren Sie in der Anwendung zum Menü **Zertifikate & Geheimnisse** (Certificates & secrets).
2. Klicken Sie auf **+ Neues Client-Geheimnis** (+ New client secret).
3. Geben Sie eine Beschreibung ein (z. B. `skript_secret_v1`) und wählen Sie eine Gültigkeitsdauer (z. B. 12 Monate).
4. Klicken Sie auf **Hinzufügen** (Add).
5. **KRITISCH WICHTIG:** Der geheime Schlüssel wird nun in der Spalte **Wert** (Value) angezeigt. **Kopieren Sie diesen Wert sofort und speichern Sie ihn an einem sicheren Ort (z. B. in einem Passwort-Manager)! Nachdem Sie die Seite verlassen haben, kann der Wert nie wieder vollständig angezeigt werden, und Sie müssen einen neuen erstellen.**
**Schritt 4: Notwendige Daten sammeln**
Sie haben nun alle erforderlichen Informationen für Ihr Skript. Gehen Sie zur **Übersichtsseite** (Overview) Ihrer Anwendung. Sie benötigen die folgenden drei Informationen:
1. **Anwendungs- (Client-) ID** (Application (client) ID)
2. **Verzeichnis- (Mandanten-) ID** (Directory (tenant) ID)
3. **Den Wert des Client-Geheimnisses** (Client Secret Value), den Sie in Schritt 3 kopiert und gespeichert haben.

View File

@@ -0,0 +1,41 @@
# SharePoint IT Dokumentációs Központ - Koncepció
## 1. Célkitűzés
Egy központi, felhőalapú (O365) platform létrehozása az IT részleg összes dokumentációjának, konfigurációjának és tudásbázisának tárolására. Ez egy **zárt, belső IT gyűjtemény**, nem nyilvános a többi dolgozó számára.
## 2. Webhely Típusa
- **Típus:** SharePoint Team Site (**Privát**)
- **Név:** `IT Internal Repository`
- **Hozzáférés:** Kizárólag az IT csapat tagjai számára (Tulajdonosok és Tagok).
## 3. Végleges Struktúra (Dokumentumtárak)
A SharePoint felületen kialakított mappaszerkezet:
- **01_Infrastructure:** Postfix konfigok, Switch beállítások, hálózati rajzok.
- **02_Software:** Telepítőfájlok (.zip, .exe), szoftveres dokumentációk.
- **03_Knowledge_Base:** Általános IT útmutatók és Markdown (.md) dokumentumok.
- **04_Automation_Scripts:** Python és Bash szkriptek gyűjteménye.
- **05_Archive:** Régi mentések és logok.
## 4. Technikai Funkciók (IT Fókusz)
- **SOP (Wiki) Oldalak:** Modern SharePoint oldalakat használunk a folyamatok leírására (német nyelven a kollégáknak).
- **Code Snippets:** A kódminták szintaxis-kiemeléssel jelennek meg az oldalakon.
- **Verziókezelés:** Minden fájl módosítása visszakövethető.
- **OneDrive Sync:** Windows/WSL környezetből való kényelmes feltöltés és szinkronizáció.
## 5. Elvégzett és Következő Lépések
- [x] Célközönség meghatározása (Csak IT).
- [x] Privát SharePoint Team Site létrehozása.
- [x] Dokumentumtárak (Libraries) kialakítása (01-05).
- [x] Kezdőlap (Dashboard) testreszabása (Hero, Schnelllinks).
- [x] Első SOP (Wiki) oldalak létrehozása (Német nyelven).
- [ ] Teljes adatkészlet feltöltése (OneDrive szinkronizáció befejezése).
- [ ] Teams integráció véglegesítése (Tab-ok hozzáadása).
## 6. Megvalósított SOP Oldalak (2026.03.16)
- **SOP: Automatisierter PDF-Import aus O365 (v2.2)**
- **SOP: Bereinigung alter Datensätze (delete_old_records.py)**
- **SOP: Konfiguration Postfix SMTP Relay (APS-SMTP01)**
---
*Ez a dokumentum a Gemini CLI segítségével készült, és a projekt aktuális állapotát tükrözi.*

View File

@@ -1,66 +1,15 @@
# Sudo használata nem-interaktív környezetben (pl. n8n) # Sudo jogosultság beállítása Postfix statisztikákhoz
## A probléma Ha egy sima felhasználónak (pl. `apslinux`) jelszó nélkül kell futtatnia a `pflogsumm` parancsot a `/var/log/maillog` fájlon, kövesd az alábbi lépéseket a célszerveren:
Amikor egy automatizált folyamat (mint egy n8n workflow) SSH-n keresztül egy `sudo`-t igénylő parancsot próbál futtatni, a következő hibaüzenetet kaphatod: 1. Hozz létre egy sudoers konfigurációs fájlt:
`sudo: a terminal is required to read the password` `sudo nano /etc/sudoers.d/postfix-stats`
Ennek oka, hogy a `sudo` parancs alapértelmezetten jelszót kérne, de nincs interaktív terminál, ahol ezt be tudná kérni a felhasználótól. 2. Add hozzá a következő sort (helyettesítsd a felhasználónevet):
`felhasznalonev ALL=(ALL) NOPASSWD: /usr/sbin/pflogsumm /var/log/maillog`
**Fontos:** Az SSH kulcsos authentikáció (jelszó nélküli bejelentkezés) nem oldja meg ezt a problémát, mivel az a *bejelentkezésre* vonatkozik, míg a `sudo` a *jogosultság emelésére* a bejelentkezés után. 3. Állítsd be a megfelelő jogosultságot:
`sudo chmod 0440 /etc/sudoers.d/postfix-stats`
## A legjobb megoldás: `sudoers` fájl konfigurálása 4. Teszteld a parancsot:
`sudo pflogsumm /var/log/maillog`
A legszabványosabb és legbiztonságosabb megoldás az, ha a `sudoers` fájlban beállítod, hogy egy adott felhasználó (pl. `n8nuser`) **jelszó nélkül** is futtathasson bizonyos parancsokat.
### Lépések:
1. Jelentkezz be a szerverre egy `sudo` joggal rendelkező felhasználóval.
2. Nyisd meg a `sudoers` fájlt szerkesztésre a **`visudo`** paranccsal. Ez a parancs ellenőrzi a szintaxist mentés előtt, megelőzve a hibákat.
```bash
sudo visudo
```
3. A megnyílt szerkesztőben menj a fájl aljára, és adj hozzá egy új sort a felhasználó nevével.
---
### 1. opció: A LEGJOBB és LEGbiztonságosabb módszer
Csak azokra a konkrét parancsokra adj jelszó nélküli (`NOPASSWD`) jogot, amikre az automatizálásnak valóban szüksége van.
**Példa egy parancsra:**
```
# A fájl aljára add hozzá ezt a sort, a 'n8nuser'-t cseréld a te felhasználódra:
n8nuser ALL=(ALL) NOPASSWD: /usr/bin/apt-get update
```
**Példa több parancsra (vesszővel elválasztva):**
```
# A 'n8nuser'-t és a parancsokat cseréld a tieidre:
n8nuser ALL=(ALL) NOPASSWD: /usr/bin/apt-get update, /usr/bin/apt-get upgrade -y
```
---
### 2. opció: Az EGYSZERŰBB, de kevésbé biztonságos módszer
Engedélyezd, hogy a felhasználó *bármilyen* parancsot futtathasson jelszó nélkül. Ezt csak akkor használd, ha teljesen megbízol a rendszerben és az automatizált folyamatokban.
```
# A fájl aljára add hozzá ezt a sort, a 'n8nuser'-t cseréld a te felhasználódra:
n8nuser ALL=(ALL) NOPASSWD: ALL
```
---
4. Mentsd el és zárd be a fájlt.
* **nano** szerkesztő esetén: `Ctrl+X`, majd `Y` (vagy `I`), végül `Enter`.
* **vi** szerkesztő esetén: `Esc`, majd írd be `:wq` és `Enter`.
Ettől kezdve az adott felhasználó a megadott parancsokat jelszókérés nélkül futtathatja a nem-interaktív SSH session alatt is.
## Amit NE csinálj
A hibaüzenet említi az `-S` opciót, ami lehetővé teszi a jelszó "bepipelolását" (`echo "jelszavam" | sudo -S parancs`). **Ez egy rendkívül rossz biztonsági gyakorlat**, mert a jelszavadat egyszerű szövegként kellene tárolnod egy scriptben vagy workflow-ban. Ezt mindenképpen kerüld el!

Binary file not shown.

2
Personal/Films.md Normal file
View File

@@ -0,0 +1,2 @@
https://www.imdb.com/de/title/tt30923123/

0
Personal/KaufenList.md Normal file
View File

View File

@@ -0,0 +1,37 @@
#!/bin/bash
# ----------------------------------------------------------------
# SSH Login Alert Script (DE)
# Dieses Skript sendet eine E-Mail an eine angegebene Adresse,
# wenn sich ein Benutzer über SSH anmeldet.
# ----------------------------------------------------------------
# Geben Sie hier die E-Mail-Adresse ein, an die die Benachrichtigung gesendet werden soll.
RECIPIENT_EMAIL="ihre_email_adresse@example.com"
# Betreff der E-Mail. Der Befehl `hostname` fügt den Servernamen ein.
SUBJECT="SSH-Anmeldung: $USER auf Server $(hostname -f)"
# Extrahiere nur die IP-Adresse aus der SSH_CLIENT-Variablen.
# Z. B. "1.2.3.4 56789 22" -> "1.2.3.4"
CLIENT_IP=${SSH_CLIENT%% *}
# E-Mail-Inhalt. 'cat << EOF' ist eine elegante Art, mehrzeiligen Text zu verarbeiten.
BODY=$(cat << EOF
Eine SSH-Anmeldung ist auf dem Server $(hostname -f) erfolgt.
Details:
Benutzer: $USER
IP-Adresse: $CLIENT_IP
Zeitpunkt: $(date +"%Y-%m-%d %H:%M:%S")
--- Aktuell angemeldete Benutzer ---
$(who)
EOF
)
# E-Mail mit dem 'mail'-Befehl senden.
# Nur senden, wenn die Variable SSH_CLIENT existiert (d. h. es handelt sich um eine SSH-Verbindung).
if [ -n "$SSH_CLIENT" ]; then
echo "$BODY" | mail -s "$SUBJECT" "$RECIPIENT_EMAIL"
fi

View File

@@ -0,0 +1,13 @@
curl -fsSL https://tailscale.com/install.sh | sh
tailscale up
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf
sudo tailscale set --advertise-routes=10.11.0.0/22
sudo tailscale set --accept-routes
sudo tailscale set --advertise-exit-node

View File

@@ -0,0 +1,6 @@
conf t
snmp-server community prtg
snmp-server vrf default
show snmp community
exit
exit

View File

@@ -1,47 +0,0 @@
$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

@@ -1,54 +0,0 @@
$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

@@ -1,75 +0,0 @@
# 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

@@ -1,152 +0,0 @@
# 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

@@ -1,98 +0,0 @@
# 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

@@ -1,101 +0,0 @@
# 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

@@ -1,81 +0,0 @@
# 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,97 @@
<#
.SYNOPSIS
Reszletes informaciokat kerdez le egy AD felhasznalorol (Allgemein, Adresse, Organisation fulek).
#>
param (
[Parameter(Mandatory=$true, HelpMessage="Add meg a felhasznalo nevet (sAMAccountName)")]
[string]$UserName
)
# Ellenorizzuk, hogy az Active Directory modul elerheto-e
if (!(Get-Module -ListAvailable ActiveDirectory)) {
Write-Error "Az 'ActiveDirectory' modul nem talalhato. Kerlek telepitsd az RSAT eszközt!"
return
}
# Importaljuk a modult, ha meg nincs betoltve
if (!(Get-Module ActiveDirectory)) {
Import-Module ActiveDirectory
}
try {
# Az osszes tulajdonsag lekerese
$user = Get-ADUser -Identity $UserName -Properties * -ErrorAction Stop
Write-Host "`n========================================================" -ForegroundColor Cyan
Write-Host " AD FELHASZNALOI ADATOK: $($user.DisplayName) " -ForegroundColor Cyan
Write-Host "========================================================`n" -ForegroundColor Cyan
# --- ALLGEMEIN (Altalanos) ---
Write-Host "[ Allgemein / Altalanos ]" -ForegroundColor Yellow
$allgemein = [PSCustomObject]@{
"Vorname (Keresztnev)" = $user.GivenName
"Nachname (Vezeteknev)" = $user.Surname
"Anzeigename" = $user.DisplayName
"Beschreibung" = $user.Description
"Buero (Iroda)" = $user.Office
"Telefon" = $user.TelephoneNumber
"E-Mail" = $user.EmailAddress
"Webseite" = $user.wWWHomePage
}
$allgemein | Format-List
Write-Host "--------------------------------------------------------" -ForegroundColor Gray
# --- ADRESSE (Cim) ---
Write-Host "[ Adresse / Cim ]" -ForegroundColor Yellow
$adresse = [PSCustomObject]@{
"Strasse" = $user.StreetAddress
"Postfach" = $user.PostOfficeBox
"PLZ (Iranyitoszam)" = $user.PostalCode
"Stadt (Varos)" = $user.L
"Bundesland (Megye)" = $user.St
"Land" = $user.CO
}
$adresse | Format-List
Write-Host "--------------------------------------------------------" -ForegroundColor Gray
# --- ORGANISATION (Szervezet) ---
Write-Host "[ Organisation / Szervezet ]" -ForegroundColor Yellow
# Manager nevenek feloldasa DN-bol
$managerName = "Nincs megadva"
if ($user.Manager) {
try {
$managerName = (Get-ADUser -Identity $user.Manager).Name
} catch {
$managerName = $user.Manager # Ha nem sikerul feloldani, marad a DN
}
}
$org = [PSCustomObject]@{
"Titel (Beosztas)" = $user.Title
"Abteilung (Osztaly)" = $user.Department
"Firma (Ceg)" = $user.Company
"Vorgesetzter (Fonok)" = $managerName
}
$org | Format-List
Write-Host "--------------------------------------------------------" -ForegroundColor Gray
# --- CSOPORTOK LISTAJA ---
$groups = Get-ADPrincipalGroupMembership -Identity $UserName | Select-Object -ExpandProperty Name | Sort-Object
Write-Host "[ Gruppen / Csoporttagsagok ($($groups.Count) db) ]" -ForegroundColor Yellow
if ($groups) {
foreach ($group in $groups) {
Write-Host "- $group"
}
} else {
Write-Host "Csak a Domain Users tagja."
}
} catch [Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException] {
Write-Host "HIBA: A(z) '$UserName' nevu felhasznalo nem talalhato!" -ForegroundColor Red
} catch {
Write-Host "Varatlan hiba tortent: $($_.Exception.Message)" -ForegroundColor Red
}
Write-Host "`n========================================================`n" -ForegroundColor Cyan

View File

@@ -0,0 +1,44 @@
<#
.SYNOPSIS
Kilistázza egy megadott AD felhasználó összes csoporttagságát.
#>
param (
[Parameter(Mandatory=$true, HelpMessage="Add meg a felhasználó nevét (sAMAccountName)")]
[string]$UserName
)
# Ellenőrizzük, hogy az Active Directory modul elérhető-e
if (!(Get-Module -ListAvailable ActiveDirectory)) {
Write-Error "Az 'ActiveDirectory' modul nem található. Kérlek telepítsd az RSAT eszközt!"
return
}
# Importáljuk a modult, ha még nincs betöltve
if (!(Get-Module ActiveDirectory)) {
Import-Module ActiveDirectory
}
try {
# Felhasználó ellenőrzése
$user = Get-ADUser -Identity $UserName -ErrorAction Stop
Write-Host "`nLekérdezés folyamatban: $($user.Name) ($UserName)..." -ForegroundColor Cyan
# Csoportok lekérése (Get-ADPrincipalGroupMembership kezeli a rekurziót is)
$groups = Get-ADPrincipalGroupMembership -Identity $UserName | Select-Object Name, Category, GroupScope, DistinguishedName | Sort-Object Name
if ($groups) {
Write-Host "Talált csoportok száma: $($groups.Count)`n" -ForegroundColor Green
$groups | Format-Table Name, Category, GroupScope -AutoSize
} else {
Write-Host "A felhasználó egyetlen csoportnak sem tagja (kivéve a Primary Group-ot)." -ForegroundColor Yellow
}
} catch [Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException] {
Write-Host "HIBA: A(z) '$UserName' nevű felhasználó nem található az Active Directory-ban!" -ForegroundColor Red
} catch {
Write-Host "Váratlan hiba történt: $($_.Exception.Message)" -ForegroundColor Red
}
Write-Host "`nKész." -ForegroundColor Gray

Some files were not shown because too many files have changed in this diff Show More