Compare commits
60 Commits
50d3390e02
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 040723cb62 | |||
| d3ca9ec5ab | |||
| 5ae531e693 | |||
| b69792bba3 | |||
| c92c11c2d9 | |||
| d6b5dc9d84 | |||
| 8daa5c88b8 | |||
| cfe5a04493 | |||
| b8dbd072e2 | |||
| c29038b12b | |||
| 2ed985d1fd | |||
| 0d6c20977d | |||
| 81482d242f | |||
| 052760c16a | |||
| 122fefc8fb | |||
| f744218d13 | |||
| 1264669091 | |||
| c4b0d84098 | |||
| d434a76112 | |||
| 8f97789f8c | |||
| ffb2a3990f | |||
| be3c1f3c2b | |||
| 873ea868b5 | |||
| b2896f3ec2 | |||
| 649bc1d7ed | |||
| 1ba829b916 | |||
| c0f0a3a006 | |||
| 5f6b018e24 | |||
| 4f9d2cbe45 | |||
| dec72e160b | |||
| 0f36436c77 | |||
| f3c52ffb6f | |||
| 9ec0266942 | |||
| 3a939bd601 | |||
| 14ba01f51b | |||
| 63e404a2f2 | |||
| 38c21cf5c2 | |||
| 0f35e8a69c | |||
| a931f3b3b9 | |||
| a798cfc7a3 | |||
| 8c38397073 | |||
| e0e34aa006 | |||
| ca2b58d465 | |||
| 7edb177425 | |||
| 2c23be7f56 | |||
| d9f5baa9d3 | |||
| cbc3947df0 | |||
| 7b5f382503 | |||
| 54bfe7bdc4 | |||
| 0fc4011e9a | |||
| 87d9592e7d | |||
| 8017dbdbad | |||
| f366b9f0a0 | |||
| b178fe4c58 | |||
| dbb53ba9fe | |||
| 7b16c4e3ae | |||
| db6579b98e | |||
| 71af9274ac | |||
| 907876a01f | |||
| 08313ceb11 |
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
/Dev/mysql_n8n_db/data
|
||||||
|
/Dev/mysql_n8n_db/mysql-data
|
||||||
|
Backup/Sophos/APS_HH.scx
|
||||||
|
*.log
|
||||||
|
*.log
|
||||||
7
Backup/Gemini-Cli/Gemini-Cli.md
Normal file
7
Backup/Gemini-Cli/Gemini-Cli.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# gemini-cli-docker - Api Key
|
||||||
|
AIzaSyD8wPpdT1UQboFvzYwxeI9zEcqoPU0-SVo
|
||||||
|
|
||||||
|
# Get your key from Google Cloud Console
|
||||||
|
export GOOGLE_API_KEY="YOUR_API_KEY"
|
||||||
|
export GOOGLE_GENAI_USE_VERTEXAI=true
|
||||||
|
gemini
|
||||||
6
Backup/Ispconfig/aps-isp01.md
Normal file
6
Backup/Ispconfig/aps-isp01.md
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[INFO] Installation ready.
|
||||||
|
[INFO] Your ISPConfig admin password is: QHkrBqD46fMqWtr neue : nqhHDGE5mDAmMpN
|
||||||
|
[INFO] Your MySQL root password is: mp5dyLAzhyvbQyndweXd
|
||||||
|
[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!
|
||||||
|
|
||||||
|
|
||||||
96
Backup/Sophos/APS_HH.tgb
Normal file
96
Backup/Sophos/APS_HH.tgb
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
# Do not edit this file. It is overwritten by VpnConf.
|
||||||
|
# SIGNATURE MD5 = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
|
# Creation Date : 2025-12-22 at 13:34:35
|
||||||
|
# Written by CyberoamServer XGS3300_RL01_SFOS 21.5.0 GA-Build171
|
||||||
|
# Client Version :
|
||||||
|
# CyberoamVPNClient :3.11.008
|
||||||
|
# IKE Service :3.10.08,02.13
|
||||||
|
|
||||||
|
[General]
|
||||||
|
Shared-SADB = Defined
|
||||||
|
Retransmits = 5
|
||||||
|
Exchange-max-time = 10
|
||||||
|
Default-phase-1-lifetime = 46800,360:86400
|
||||||
|
Bitblocking = 0
|
||||||
|
Xauth-interval = 20
|
||||||
|
DPD-interval = 30
|
||||||
|
DPD_retrans = 7
|
||||||
|
DPD_wait = 30
|
||||||
|
|
||||||
|
[Default-phase-2-lifetime]
|
||||||
|
LIFE_TYPE = SECONDS
|
||||||
|
LIFE_DURATION = 43200,360:86400
|
||||||
|
|
||||||
|
# ==================== PHASES 1 ====================
|
||||||
|
|
||||||
|
[Phase 1]
|
||||||
|
185.164.230.171 = APS_HH-P1
|
||||||
|
|
||||||
|
[APS_HH-main-mode]
|
||||||
|
DOI = IPSEC
|
||||||
|
EXCHANGE_TYPE = ID_PROT
|
||||||
|
Transforms = AES256-SHA2_256-GRP21
|
||||||
|
|
||||||
|
[AES256-SHA2_256-GRP21]
|
||||||
|
ENCRYPTION_ALGORITHM = AES_CBC
|
||||||
|
KEY_LENGTH = 256,128:256
|
||||||
|
HASH_ALGORITHM = SHA2_256
|
||||||
|
GROUP_DESCRIPTION = ECP521
|
||||||
|
AUTHENTICATION_METHOD = PRE_SHARED
|
||||||
|
Life = LIFE_MAIN_MODE
|
||||||
|
|
||||||
|
[APS_HH-P1]
|
||||||
|
Phase = 1
|
||||||
|
Family = IPV4
|
||||||
|
Address = 185.164.230.171
|
||||||
|
Transport = udp
|
||||||
|
Configuration = APS_HH-main-mode
|
||||||
|
Rconf = 1
|
||||||
|
Authentication = "tZfNkccrTq49wyvsxLak86jF"
|
||||||
|
Xauth = 0
|
||||||
|
Xpopup = 1
|
||||||
|
NATT_ENABLED = 1
|
||||||
|
|
||||||
|
|
||||||
|
# ==================== PHASES 2 ====================
|
||||||
|
|
||||||
|
[Phase 2]
|
||||||
|
Manual-connections = APS_HH-APS_HH1-P2
|
||||||
|
|
||||||
|
[APS_HH-APS_HH1-P2]
|
||||||
|
Phase = 2
|
||||||
|
ISAKMP-peer = APS_HH-P1
|
||||||
|
Remote-ID = APS_HH1-remote-addr
|
||||||
|
Configuration = APS_HH1-quick-mode
|
||||||
|
AutoStart = 0
|
||||||
|
USBStart = 0
|
||||||
|
|
||||||
|
# ==================== Ipsec ID ====================
|
||||||
|
|
||||||
|
[APS_HH1-remote-addr]
|
||||||
|
ID-type = IPV4_ADDR_SUBNET
|
||||||
|
Network = 0.0.0.0
|
||||||
|
Netmask = 0.0.0.0
|
||||||
|
|
||||||
|
# ==================== TRANSFORMS ====================
|
||||||
|
|
||||||
|
[APS_HH1-quick-mode]
|
||||||
|
DOI = IPSEC
|
||||||
|
EXCHANGE_TYPE = QUICK_MODE
|
||||||
|
Suites = APS_HH1-quick-mode-suite
|
||||||
|
|
||||||
|
[APS_HH1-quick-mode-suite]
|
||||||
|
Protocols = TGBQM-ESP-AES256-SHA2_256-PFSGRP21-TUN
|
||||||
|
|
||||||
|
[TGBQM-ESP-AES256-SHA2_256-PFSGRP21-TUN]
|
||||||
|
PROTOCOL_ID = IPSEC_ESP
|
||||||
|
Transforms = TGBQM-ESP-AES256-SHA2_256-PFSGRP21-TUN-XF
|
||||||
|
|
||||||
|
[TGBQM-ESP-AES256-SHA2_256-PFSGRP21-TUN-XF]
|
||||||
|
TRANSFORM_ID = AES
|
||||||
|
KEY_LENGTH = 256,128:256
|
||||||
|
AUTHENTICATION_ALGORITHM = HMAC_SHA2_256
|
||||||
|
GROUP_DESCRIPTION = ECP521
|
||||||
|
ENCAPSULATION_MODE = TUNNEL
|
||||||
|
Life = Default-phase-2-lifetime
|
||||||
|
|
||||||
15
Backup/Sophos/README
Normal file
15
Backup/Sophos/README
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
The archive file contains IPsec remote access configuration files in .scx and .tgb formats.
|
||||||
|
|
||||||
|
.scx: Contains the advanced settings of Sophos Connect client in addition
|
||||||
|
to the other settings in the configuration. We recommend that
|
||||||
|
you use this format.
|
||||||
|
|
||||||
|
The advanced settings provide extra protection, such as running
|
||||||
|
AD logon scripts after the tunnel is established and offering
|
||||||
|
multi-factor authentication. They also allow you to split the
|
||||||
|
tunnel and connect the tunnel automatically.
|
||||||
|
|
||||||
|
These settings are available if your administrator has configured them.
|
||||||
|
|
||||||
|
.tgb: Use this for other IPsec remote access clients. If you use this
|
||||||
|
format for Sophos Connect clients, you won’t get the advanced settings.
|
||||||
11
Backup/Sophos/sophos connect-provision.pro
Normal file
11
Backup/Sophos/sophos connect-provision.pro
Normal 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
|
||||||
|
}
|
||||||
|
]
|
||||||
13
Conf/aps.local/APS-SMTP01 - Linux Conf.md
Normal file
13
Conf/aps.local/APS-SMTP01 - Linux Conf.md
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
## APS-PI001 - Linux Install
|
||||||
|
#
|
||||||
|
# IP
|
||||||
|
10.102.1.201/24
|
||||||
|
# GW
|
||||||
|
10.102.1.1
|
||||||
|
# DNS
|
||||||
|
10.102.1.30
|
||||||
|
10.102.1.31
|
||||||
|
# Default User
|
||||||
|
apslinux
|
||||||
|
|
||||||
|
|
||||||
BIN
Conf/aps.local/weser_smtp_config.png
Normal file
BIN
Conf/aps.local/weser_smtp_config.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 19 KiB |
3
Conf/home.meszely.eu/home.network.md
Normal file
3
Conf/home.meszely.eu/home.network.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
10.11.0.254 PandaNas wpanda - pan...#
|
||||||
|
10.11.3.101
|
||||||
|
10.11.0.252 PandaNasBackup wpanda - pan...#
|
||||||
2
Conf/home.meszely.eu/home_assisstant.md
Normal file
2
Conf/home.meszely.eu/home_assisstant.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
n8n Token :
|
||||||
|
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJkZDllNTkxOTI4YmM0Yjg0OTgzNjVlYWQ3Njk2MDdjMCIsImlhdCI6MTc2NjkxNzg3MSwiZXhwIjoyMDgyMjc3ODcxfQ.eCwpJQZzsCFwHL7FD6e13kZT6m8uFuVQhMGfmNA5fD8
|
||||||
7
Conf/home.meszely.eu/matrix.home.meszely.eu.md
Normal file
7
Conf/home.meszely.eu/matrix.home.meszely.eu.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<<<<<<< HEAD
|
||||||
|
# Matrix - n8n-bot - Accesstoken
|
||||||
|
syt_Ym90LW44bg_RMzxOFQllPjSPsRWAHvb_0FeoGL
|
||||||
|
=======
|
||||||
|
# bot-n8n access token
|
||||||
|
syt_Ym90LW44bg_AbviDZpPwRhLydqppDvv_2OfdD8
|
||||||
|
>>>>>>> 2e10f37 (token)
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
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
|
||||||
1
Dev/fedora_toolbox/.env
Normal file
1
Dev/fedora_toolbox/.env
Normal file
@@ -0,0 +1 @@
|
|||||||
|
SSH_PASSWORD=virgI6774
|
||||||
47
Dev/fedora_toolbox/Dockerfile
Normal file
47
Dev/fedora_toolbox/Dockerfile
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
# Fedora alapimage használata
|
||||||
|
FROM fedora:latest
|
||||||
|
|
||||||
|
# Metaadatok az image-hez
|
||||||
|
LABEL maintainer="Your Name"
|
||||||
|
LABEL description="Fedora-based toolbox with SSH, nmap, and other utilities."
|
||||||
|
|
||||||
|
# Build-time argumentum a jelszóhoz
|
||||||
|
ARG SSH_PASSWORD
|
||||||
|
|
||||||
|
# Szükséges csomagok telepítése
|
||||||
|
RUN dnf -y update && \
|
||||||
|
dnf -y install \
|
||||||
|
openssh-server \
|
||||||
|
sudo \
|
||||||
|
nmap \
|
||||||
|
iputils \
|
||||||
|
procps-ng \
|
||||||
|
net-tools && \
|
||||||
|
dnf clean all
|
||||||
|
|
||||||
|
# SSH host kulcsok generálása
|
||||||
|
RUN ssh-keygen -A
|
||||||
|
|
||||||
|
# 'wpanda' felhasználó létrehozása és jelszó beállítása
|
||||||
|
# A jelszót a build-time argumentumból kapja
|
||||||
|
RUN useradd -m -s /bin/bash wpanda && \
|
||||||
|
echo "wpanda:${SSH_PASSWORD}" | chpasswd
|
||||||
|
|
||||||
|
# Jelszavas SSH bejelentkezés engedélyezése
|
||||||
|
RUN sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config && \
|
||||||
|
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
|
||||||
|
|
||||||
|
# 'wpanda' felhasználó hozzáadása a sudo csoporthoz jelszó bekérése nélkül
|
||||||
|
RUN echo 'wpanda ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
|
||||||
|
|
||||||
|
# Váltás a 'wpanda' felhasználóra
|
||||||
|
USER wpanda
|
||||||
|
|
||||||
|
# Munkakönyvtár beállítása a felhasználó home könyvtárára
|
||||||
|
WORKDIR /home/wpanda
|
||||||
|
|
||||||
|
# Az SSH port (22) megnyitása
|
||||||
|
EXPOSE 22
|
||||||
|
|
||||||
|
# Az SSH szerver indítása előtérben
|
||||||
|
CMD ["/usr/sbin/sshd", "-D"]
|
||||||
22
Dev/fedora_toolbox/docker-compose.yml
Normal file
22
Dev/fedora_toolbox/docker-compose.yml
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
toolbox:
|
||||||
|
# Az image a jelenlegi könyvtárban lévő Dockerfile-ból épül
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
args:
|
||||||
|
# Átadja az .env fájlból beolvasott SSH_PASSWORD változót a Dockerfile-nak
|
||||||
|
- SSH_PASSWORD=${SSH_PASSWORD}
|
||||||
|
# Konténer neve a könnyebb azonosíthatóságért
|
||||||
|
container_name: fedora-toolbox
|
||||||
|
# Hoszt port 2222 átirányítása a konténer 22-es portjára
|
||||||
|
# Azért nem a 22-t használjuk a hoszton, hogy ne ütközzön a gép saját SSH szolgáltatásával
|
||||||
|
ports:
|
||||||
|
- "2222:22"
|
||||||
|
# A külső 'data' könyvtár felcsatolása a konténeren belüli /home/wpanda helyre
|
||||||
|
# A 'data' könyvtár a Dev/fedora_toolbox/data útvonalon található
|
||||||
|
volumes:
|
||||||
|
- ./data:/home/wpanda
|
||||||
|
# A konténer automatikusan újraindul, hacsak nem állítod le kézzel
|
||||||
|
restart: unless-stopped
|
||||||
12
Dev/mysql/mysql_all/.env
Normal file
12
Dev/mysql/mysql_all/.env
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# Docker-Compose Environment Variables for MySQL
|
||||||
|
|
||||||
|
# Path for MySQL data storage on the host machine
|
||||||
|
# Az adatbázis adatai a 'Dev/mysql/data' mappába kerülnek mentésre.
|
||||||
|
# Ezt az elérési utat tetszés szerint módosíthatod.
|
||||||
|
MYSQL_DATA_PATH=/home/wpanda/mysql_data/sw_all_db
|
||||||
|
|
||||||
|
# MySQL Credentials
|
||||||
|
MYSQL_ROOT_PASSWORD=virgI6774
|
||||||
|
#MYSQL_DATABASE=switch_ip
|
||||||
|
#MYSQL_USER=switchip
|
||||||
|
#MYSQL_PASSWORD=virgI6774
|
||||||
20
Dev/mysql/mysql_all/docker-compose.yml
Normal file
20
Dev/mysql/mysql_all/docker-compose.yml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
services:
|
||||||
|
mysql_ip:
|
||||||
|
image: mysql:latest
|
||||||
|
container_name: mysql_all_db
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
|
||||||
|
# MYSQL_DATABASE: ${MYSQL_DATABASE}
|
||||||
|
# MYSQL_USER: ${MYSQL_USER}
|
||||||
|
# MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
||||||
|
ports:
|
||||||
|
- '3306:3306'
|
||||||
|
volumes:
|
||||||
|
- ${MYSQL_DATA_PATH}:/var/lib/mysql
|
||||||
|
networks:
|
||||||
|
- shared-network
|
||||||
|
|
||||||
|
networks:
|
||||||
|
shared-network:
|
||||||
|
external: true
|
||||||
12
Dev/mysql/mysql_n8n_db/.env
Normal file
12
Dev/mysql/mysql_n8n_db/.env
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# Docker-Compose Environment Variables for MySQL
|
||||||
|
|
||||||
|
# Path for MySQL data storage on the host machine
|
||||||
|
# Az adatbázis adatai a '/home/wpanda/mysql_data/n8n_db' mappába kerülnek mentésre.
|
||||||
|
# Ezt az elérési utat tetszés szerint módosíthatod.
|
||||||
|
MYSQL_DATA_PATH=/home/wpanda/mysql_data/n8n_db
|
||||||
|
|
||||||
|
# MySQL Credentials
|
||||||
|
MYSQL_ROOT_PASSWORD=virgI6774
|
||||||
|
MYSQL_DATABASE=n8ndb
|
||||||
|
MYSQL_USER=n8n
|
||||||
|
MYSQL_PASSWORD=virgI6774
|
||||||
20
Dev/mysql/mysql_n8n_db/docker-compose.yml
Normal file
20
Dev/mysql/mysql_n8n_db/docker-compose.yml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
services:
|
||||||
|
mysql_ip:
|
||||||
|
image: mysql:latest
|
||||||
|
container_name: mysql_n8n_db
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
|
||||||
|
MYSQL_DATABASE: ${MYSQL_DATABASE}
|
||||||
|
MYSQL_USER: ${MYSQL_USER}
|
||||||
|
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
||||||
|
ports:
|
||||||
|
- '3336:3306'
|
||||||
|
volumes:
|
||||||
|
- ${MYSQL_DATA_PATH}:/var/lib/mysql
|
||||||
|
networks:
|
||||||
|
- shared-network
|
||||||
|
|
||||||
|
networks:
|
||||||
|
shared-network:
|
||||||
|
external: true
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
# Path for MySQL data storage on the host machine
|
# Path for MySQL data storage on the host machine
|
||||||
# Az adatbázis adatai a 'Dev/mysql/data' mappába kerülnek mentésre.
|
# Az adatbázis adatai a 'Dev/mysql/data' mappába kerülnek mentésre.
|
||||||
# Ezt az elérési utat tetszés szerint módosíthatod.
|
# Ezt az elérési utat tetszés szerint módosíthatod.
|
||||||
MYSQL_DATA_PATH=/data/mysql_sw_fw
|
MYSQL_DATA_PATH=/home/wpanda/mysql_data/sw_fw_db
|
||||||
|
|
||||||
# MySQL Credentials
|
# MySQL Credentials
|
||||||
MYSQL_ROOT_PASSWORD=virgI6774
|
MYSQL_ROOT_PASSWORD=virgI6774
|
||||||
25
Dev/mysql/mysql_switch_fw/README.md
Normal file
25
Dev/mysql/mysql_switch_fw/README.md
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# MySQL Docker Container
|
||||||
|
|
||||||
|
This directory contains the configuration for running MySQL in a Docker container.
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
The configuration is managed through the `.env` file. You can change the following variables:
|
||||||
|
|
||||||
|
- `MYSQL_DATA_PATH`: The local directory where the database data will be stored. By default, it's set to `./data` within this directory.
|
||||||
|
- `MYSQL_ROOT_PASSWORD`: The root password for the MySQL instance.
|
||||||
|
- `MYSQL_DATABASE`: The name of the database to be created on startup.
|
||||||
|
- `MYSQL_USER`: The username for a non-root user.
|
||||||
|
- `MYSQL_PASSWORD`: The password for the non-root user.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
To start the container, navigate to this directory (`Dev/mysql`) and run the following command:
|
||||||
|
```bash
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
To stop the container:
|
||||||
|
```bash
|
||||||
|
docker-compose down
|
||||||
|
```
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
# Path for MySQL data storage on the host machine
|
# Path for MySQL data storage on the host machine
|
||||||
# Az adatbázis adatai a 'Dev/mysql/data' mappába kerülnek mentésre.
|
# Az adatbázis adatai a 'Dev/mysql/data' mappába kerülnek mentésre.
|
||||||
# Ezt az elérési utat tetszés szerint módosíthatod.
|
# Ezt az elérési utat tetszés szerint módosíthatod.
|
||||||
MYSQL_DATA_PATH=/data/mysql_sw_ip
|
MYSQL_DATA_PATH=/home/wpanda/mysql_data/sw_ip_db
|
||||||
|
|
||||||
# MySQL Credentials
|
# MySQL Credentials
|
||||||
MYSQL_ROOT_PASSWORD=virgI6774
|
MYSQL_ROOT_PASSWORD=virgI6774
|
||||||
20
Dev/mysql/mysql_switch_ip/CREATE TABLE switches_ip.md
Normal file
20
Dev/mysql/mysql_switch_ip/CREATE TABLE switches_ip.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
CREATE TABLE clients (
|
||||||
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
switch_name VARCHAR(255) NOT NULL COMMENT 'A switch hosztneve, amelyhez a kliens csatlakozik',
|
||||||
|
mac_address VARCHAR(17) NOT NULL UNIQUE COMMENT 'A kliens MAC címe (egyedi azonosító)',
|
||||||
|
interface VARCHAR(50) NOT NULL COMMENT 'A switch interfésze, amelyhez a kliens csatlakozik (pl. 1/1/3)',
|
||||||
|
vlan VARCHAR(10) NOT NULL COMMENT 'A kliens VLAN azonosítója',
|
||||||
|
ip_address VARCHAR(45) NOT NULL COMMENT 'A kliens IP címe (IPv4 vagy IPv6)',
|
||||||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT 'A rekord létrehozásának időpontja',
|
||||||
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'A rekord utolsó frissítésének időpontja'
|
||||||
|
) COMMENT='Hálózati kliensek adatainak tárolása switchenként';
|
||||||
|
|
||||||
|
**Magyarázat:**
|
||||||
|
|
||||||
|
* `id INT AUTO_INCREMENT PRIMARY KEY`: Egy automatikusan növekvő egyedi azonosító minden bejegyzéshez.
|
||||||
|
* `switch_name VARCHAR(255) NOT NULL`: A switch neve, amihez a kliens csatlakozik.
|
||||||
|
* `mac_address VARCHAR(17) NOT NULL UNIQUE`: A kliens MAC címe. `VARCHAR(17)` elég a `XX:XX:XX:XX:XX:XX` formátumhoz, és `UNIQUE` constraint-et is kapott, mivel ez az elsődleges egyedi azonosítója egy hálózati kliensnek.
|
||||||
|
* `interface VARCHAR(50) NOT NULL`: Az interfész, amelyhez a kliens csatlakozik.
|
||||||
|
* `vlan VARCHAR(10) NOT NULL`: A VLAN, amihez a kliens tartozik. `VARCHAR`-ként kezeltem, hogy rugalmasabb legyen, ha esetleg nem csak számok lennének.
|
||||||
|
* `ip_address VARCHAR(45) NOT NULL`: A kliens IP címe.
|
||||||
|
* `created_at` és `updated_at`: Automatikus időbélyegek a bejegyzés létrehozására és utolsó módosítására.
|
||||||
25
Dev/mysql/mysql_switch_ip/README.md
Normal file
25
Dev/mysql/mysql_switch_ip/README.md
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# MySQL Docker Container
|
||||||
|
|
||||||
|
This directory contains the configuration for running MySQL in a Docker container.
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
The configuration is managed through the `.env` file. You can change the following variables:
|
||||||
|
|
||||||
|
- `MYSQL_DATA_PATH`: The local directory where the database data will be stored. By default, it's set to `./data` within this directory.
|
||||||
|
- `MYSQL_ROOT_PASSWORD`: The root password for the MySQL instance.
|
||||||
|
- `MYSQL_DATABASE`: The name of the database to be created on startup.
|
||||||
|
- `MYSQL_USER`: The username for a non-root user.
|
||||||
|
- `MYSQL_PASSWORD`: The password for the non-root user.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
To start the container, navigate to this directory (`Dev/mysql`) and run the following command:
|
||||||
|
```bash
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
To stop the container:
|
||||||
|
```bash
|
||||||
|
docker-compose down
|
||||||
|
```
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
# Docker run ID
|
|
||||||
getent group docker | cut -d: -f3
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
# Use the official n8n image as a base
|
|
||||||
FROM n8nio/n8n:latest
|
|
||||||
|
|
||||||
# Switch to the root user to install packages
|
|
||||||
USER root
|
|
||||||
|
|
||||||
# Install docker-cli using the apk package manager
|
|
||||||
RUN apk add --no-cache docker-cli
|
|
||||||
|
|
||||||
# Install Python, pip, and required build dependencies
|
|
||||||
RUN apk add --no-cache python3 py3-pip build-base
|
|
||||||
|
|
||||||
# Install required Python packages
|
|
||||||
RUN pip install netmiko --break-system-packages
|
|
||||||
|
|
||||||
# Switch back to the non-privileged node user
|
|
||||||
USER node
|
|
||||||
@@ -1,82 +0,0 @@
|
|||||||
import json
|
|
||||||
|
|
||||||
# A bejövő adatok az n8n-től. A $items() függvénnyel hivatkozunk
|
|
||||||
# a korábbi node-okra a nevük alapján.
|
|
||||||
# Cseréld le a 'MySQL_Node_Neve' és 'Élő_Adat_Node_Neve' neveket
|
|
||||||
# a te munkafolyamatodban lévő node-ok tényleges nevére!
|
|
||||||
# Például:
|
|
||||||
# db_clients_items = $items("MySQL Client Fetch")
|
|
||||||
# live_clients_items = $items("Code (IP Scan Script)")
|
|
||||||
|
|
||||||
# Fontos: Ha az n8n Code node-jában futtatod, a $items funkciót közvetlenül használhatod.
|
|
||||||
# Ha külső szkriptként futtatod az "Execute Command" node-ból, akkor a bemenetet
|
|
||||||
# másképp kell kezelni (pl. parancssori argumentumként JSON stringet).
|
|
||||||
# Ez a kód az n8n Code node Python módjához készült.
|
|
||||||
|
|
||||||
db_clients_items = $items("MySQL_Node_Neve") # Ezt cseréld a MySQL node-od nevére
|
|
||||||
live_clients_items = $items("Élő_Adat_Node_Neve") # Ezt cseréld az élő adatokat adó Code node-od nevére
|
|
||||||
|
|
||||||
|
|
||||||
# Hozzuk létre a MAC cím alapján kereshető adathalmazokat
|
|
||||||
# Ellenőrizzük, hogy a bemeneti lista nem üres-e
|
|
||||||
db_clients = {}
|
|
||||||
if db_clients_items:
|
|
||||||
db_clients = {item.json['mac_address']: item.json for item in db_clients_items}
|
|
||||||
|
|
||||||
live_clients = {}
|
|
||||||
if live_clients_items:
|
|
||||||
live_clients = {item.json['mac_address']: item.json for item in live_clients_items}
|
|
||||||
|
|
||||||
|
|
||||||
differences = []
|
|
||||||
|
|
||||||
# 1. Új kliensek keresése (amik az élő adatokban vannak, de a DB-ben nem)
|
|
||||||
for mac, client_data in live_clients.items():
|
|
||||||
if mac not in db_clients:
|
|
||||||
differences.append({
|
|
||||||
"change_type": "ÚJ KLIENS",
|
|
||||||
"client": client_data
|
|
||||||
})
|
|
||||||
|
|
||||||
# 2. Eltávolított kliensek keresése (amik a DB-ben vannak, de az élő adatokban már nem)
|
|
||||||
for mac, client_data in db_clients.items():
|
|
||||||
if mac not in live_clients:
|
|
||||||
differences.append({
|
|
||||||
"change_type": "ELTÁVOLÍTOTT KLIENS",
|
|
||||||
"client": client_data
|
|
||||||
})
|
|
||||||
|
|
||||||
# 3. Változások keresése (pl. megváltozott az IP címe)
|
|
||||||
# Ez egy egyszerűbb példa, ami csak az IP-t figyeli.
|
|
||||||
# Ha több mezőt is figyelni akarsz, bővítsd ezt a részt.
|
|
||||||
for mac, live_data in live_clients.items():
|
|
||||||
if mac in db_clients:
|
|
||||||
db_data = db_clients[mac]
|
|
||||||
# Összehasonlítjuk az IP címet és a switch nevét
|
|
||||||
if live_data.get('ip_address') != db_data.get('ip_address') or \
|
|
||||||
live_data.get('switch_name') != db_data.get('switch_name') or \
|
|
||||||
live_data.get('interface') != db_data.get('interface') or \
|
|
||||||
live_data.get('vlan') != db_data.get('vlan'):
|
|
||||||
|
|
||||||
# Gyűjtsük össze a változásokat
|
|
||||||
changes = {}
|
|
||||||
if live_data.get('ip_address') != db_data.get('ip_address'):
|
|
||||||
changes['ip_address'] = {'from': db_data.get('ip_address'), 'to': live_data.get('ip_address')}
|
|
||||||
if live_data.get('switch_name') != db_data.get('switch_name'):
|
|
||||||
changes['switch_name'] = {'from': db_data.get('switch_name'), 'to': live_data.get('switch_name')}
|
|
||||||
if live_data.get('interface') != db_data.get('interface'):
|
|
||||||
changes['interface'] = {'from': db_data.get('interface'), 'to': live_data.get('interface')}
|
|
||||||
if live_data.get('vlan') != db_data.get('vlan'):
|
|
||||||
changes['vlan'] = {'from': db_data.get('vlan'), 'to': live_data.get('vlan')}
|
|
||||||
|
|
||||||
differences.append({
|
|
||||||
"change_type": "MEGVÁLTOZOTT KLIENS",
|
|
||||||
"client_mac": mac,
|
|
||||||
"changes": changes,
|
|
||||||
"current_data": live_data
|
|
||||||
})
|
|
||||||
|
|
||||||
# A 'return' paranccsal adjuk vissza a különbségeket.
|
|
||||||
# Ha a 'differences' lista üres, a workflow ezen az ágon megáll (ha nincsenek további node-ok,
|
|
||||||
# amik üres bemenettel is futnak).
|
|
||||||
return differences
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
services:
|
|
||||||
n8n:
|
|
||||||
container_name: n8n
|
|
||||||
build: .
|
|
||||||
user: "node:1001"
|
|
||||||
restart: always
|
|
||||||
ports:
|
|
||||||
- "127.0.0.1:5678:5678"
|
|
||||||
environment:
|
|
||||||
- TZ=Europe/Hamburg
|
|
||||||
volumes:
|
|
||||||
- /mnt/c/Tools/docker/n8n:/home/node/.n8n
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock:Z
|
|
||||||
- /mnt/c/Users/i.meszely/Gitea/WPanda/Dev:/home/node/dev
|
|
||||||
networks:
|
|
||||||
- shared-network
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
n8n_data:
|
|
||||||
driver: local
|
|
||||||
|
|
||||||
networks:
|
|
||||||
shared-network:
|
|
||||||
external: true
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
docker run -d \
|
|
||||||
--name n8n \
|
|
||||||
--user "node:1001" \
|
|
||||||
--restart always \
|
|
||||||
-p 127.0.0.1:5678:5678 \
|
|
||||||
-e TZ=Europe/Hamburg \
|
|
||||||
-v /mnt/c/docker/n8n:/home/node/.n8n \
|
|
||||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
|
||||||
--network n8n_n8n_network \
|
|
||||||
--ip 172.20.0.100 \
|
|
||||||
n8n
|
|
||||||
@@ -1,105 +0,0 @@
|
|||||||
|
|
||||||
import json
|
|
||||||
import os
|
|
||||||
import re
|
|
||||||
import csv
|
|
||||||
from datetime import datetime
|
|
||||||
from netmiko import ConnectHandler
|
|
||||||
from netmiko.exceptions import NetmikoTimeoutException, NetmikoAuthenticationException
|
|
||||||
|
|
||||||
def get_aruba_firmware(host, username, password):
|
|
||||||
"""
|
|
||||||
Connects to an Aruba switch, retrieves the hostname and firmware version.
|
|
||||||
Returns a dictionary with the collected data.
|
|
||||||
"""
|
|
||||||
device = {
|
|
||||||
'device_type': 'aruba_aoscx',
|
|
||||||
'host': host,
|
|
||||||
'username': username,
|
|
||||||
'password': password,
|
|
||||||
}
|
|
||||||
|
|
||||||
print(f"Csatlakozás a(z) {host} eszközhöz...")
|
|
||||||
try:
|
|
||||||
with ConnectHandler(**device) as net_connect:
|
|
||||||
print(f"Sikeres csatlakozás a(z) {host} eszközhöz. Firmware verzió lekérdezése...")
|
|
||||||
|
|
||||||
# Hostname lekérdezése a promptból
|
|
||||||
prompt = net_connect.find_prompt()
|
|
||||||
switch_hostname = prompt.strip('#> ')
|
|
||||||
|
|
||||||
# Firmware verzió lekérdezése
|
|
||||||
output = net_connect.send_command('show version')
|
|
||||||
|
|
||||||
firmware_version = "N/A"
|
|
||||||
# Reguláris kifejezés a firmware verzió megtalálásához
|
|
||||||
match = re.search(r"Version\s+:\s+(.*)", output)
|
|
||||||
if match:
|
|
||||||
firmware_version = match.group(1).strip()
|
|
||||||
|
|
||||||
return {
|
|
||||||
'switch_name': switch_hostname,
|
|
||||||
'ip_address': host,
|
|
||||||
'firmware_version': firmware_version
|
|
||||||
}
|
|
||||||
|
|
||||||
except NetmikoTimeoutException:
|
|
||||||
print(f"Hiba: Időtúllépés a(z) {host} eszközhöz való csatlakozáskor.")
|
|
||||||
return {'switch_name': 'N/A', 'ip_address': host, 'firmware_version': 'Timeout'}
|
|
||||||
except NetmikoAuthenticationException:
|
|
||||||
print(f"Hiba: Sikertelen hitelesítés a(z) {host} eszközön.")
|
|
||||||
return {'switch_name': 'N/A', 'ip_address': host, 'firmware_version': 'Auth Failed'}
|
|
||||||
except Exception as e:
|
|
||||||
print(f"Váratlan hiba történt a(z) {host} feldolgozása közben: {e}")
|
|
||||||
return {'switch_name': 'N/A', 'ip_address': host, 'firmware_version': f'Error: {e}'}
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
# Konfigurációs fájl beolvasása
|
|
||||||
try:
|
|
||||||
with open('config.json', 'r') as f:
|
|
||||||
config = json.load(f)
|
|
||||||
except FileNotFoundError:
|
|
||||||
print("Hiba: A 'config.json' fájl nem található.")
|
|
||||||
exit()
|
|
||||||
except json.JSONDecodeError:
|
|
||||||
print("Hiba: A 'config.json' fájl formátuma érvénytelen.")
|
|
||||||
exit()
|
|
||||||
|
|
||||||
SWITCH_IPS = config.get("switch_ips", [])
|
|
||||||
USERNAME = config.get("username")
|
|
||||||
PASSWORD = config.get("password")
|
|
||||||
|
|
||||||
if not all([SWITCH_IPS, USERNAME, PASSWORD]):
|
|
||||||
print("Hiba: A 'config.json' fájl hiányos. Tartalmaznia kell 'switch_ips', 'username', és 'password' kulcsokat.")
|
|
||||||
exit()
|
|
||||||
|
|
||||||
# Kimeneti mappa
|
|
||||||
OUTPUT_DIR = "results"
|
|
||||||
os.makedirs(OUTPUT_DIR, exist_ok=True)
|
|
||||||
timestamp = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
|
|
||||||
CSV_FILENAME = os.path.join(OUTPUT_DIR, f"aruba_firmware_versions_{timestamp}.csv")
|
|
||||||
|
|
||||||
all_switches_firmware = []
|
|
||||||
|
|
||||||
for ip in SWITCH_IPS:
|
|
||||||
print(f"\n--- Feldolgozás: {ip} ---")
|
|
||||||
firmware_data = get_aruba_firmware(ip, USERNAME, PASSWORD)
|
|
||||||
if firmware_data:
|
|
||||||
all_switches_firmware.append(firmware_data)
|
|
||||||
print(f"Sikeresen lekérdezve: {firmware_data['switch_name']} ({firmware_data['ip_address']}) - Verzió: {firmware_data['firmware_version']}")
|
|
||||||
|
|
||||||
if all_switches_firmware:
|
|
||||||
print(f"\nÖsszesen {len(all_switches_firmware)} switch adat gyűjtve. Mentés a(z) {CSV_FILENAME} fájlba...")
|
|
||||||
|
|
||||||
fieldnames = ['switch_name', 'ip_address', 'firmware_version']
|
|
||||||
|
|
||||||
try:
|
|
||||||
with open(CSV_FILENAME, 'w', newline='', encoding='utf-8') as csvfile:
|
|
||||||
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
|
|
||||||
writer.writeheader()
|
|
||||||
writer.writerows(all_switches_firmware)
|
|
||||||
print(f"Sikeres mentés a(z) '{CSV_FILENAME}' fájlba.")
|
|
||||||
except IOError as e:
|
|
||||||
print(f"Hiba történt a CSV fájl írása közben: {e}")
|
|
||||||
else:
|
|
||||||
print("\nEgyetlen switch-ről sem sikerült adatot gyűjteni.")
|
|
||||||
29
Dev/n8n/panda_n8n/Dockerfile
Normal file
29
Dev/n8n/panda_n8n/Dockerfile
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
# Start from a standard Fedora base image
|
||||||
|
FROM fedora:latest
|
||||||
|
|
||||||
|
# Install necessary dependencies using dnf
|
||||||
|
# -y flag to auto-confirm.
|
||||||
|
# We need nodejs (which includes npm) and python3 with pip.
|
||||||
|
RUN dnf install -y nodejs python3 python3-pip && dnf clean all
|
||||||
|
|
||||||
|
# Now use npm to install n8n globally
|
||||||
|
RUN npm install -g n8n
|
||||||
|
|
||||||
|
# Create a non-root user 'node' for security
|
||||||
|
RUN groupadd -r node && useradd -r -g node -d /home/node -m -s /bin/bash node
|
||||||
|
|
||||||
|
# Create the directory for n8n's data and set permissions
|
||||||
|
RUN mkdir /home/node/.n8n && \
|
||||||
|
chown -R node:node /home/node/.n8n
|
||||||
|
|
||||||
|
# Switch to the non-root 'node' user
|
||||||
|
USER node
|
||||||
|
|
||||||
|
# Set the working directory to the n8n data directory
|
||||||
|
WORKDIR /home/node/.n8n
|
||||||
|
|
||||||
|
# Expose the n8n port
|
||||||
|
EXPOSE 5678
|
||||||
|
|
||||||
|
# Set the default command to start n8n
|
||||||
|
CMD [ "n8n" ]
|
||||||
22
Dev/n8n/panda_n8n/docker-compose.yml
Normal file
22
Dev/n8n/panda_n8n/docker-compose.yml
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
services:
|
||||||
|
n8n:
|
||||||
|
# image: n8nio/n8n:latest
|
||||||
|
build: .
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- "5678:5678"
|
||||||
|
volumes:
|
||||||
|
- ./n8n-data:/home/node/.n8n
|
||||||
|
- ./n8n-scripts:/home/node/.n8n/scripts
|
||||||
|
environment:
|
||||||
|
- N8N_HOST=${N8N_HOST:-localhost}
|
||||||
|
- N8N_PORT=5678
|
||||||
|
- N8N_PROTOCOL=${N8N_PROTOCOL:-http}
|
||||||
|
- WEBHOOK_URL=${WEBHOOK_URL:-http://localhost:5678/}
|
||||||
|
- NODES_EXCLUDE="[]"
|
||||||
|
# Ha használsz SSL/TLS-t, akkor ezeket is be kell állítanod
|
||||||
|
# - N8N_BASIC_AUTH_ACTIVE=true
|
||||||
|
# - N8N_BASIC_AUTH_USER=user
|
||||||
|
# - N8N_BASIC_AUTH_PASSWORD=password
|
||||||
|
labels:
|
||||||
|
- com.centurylinklabs.watchtower.enable=true
|
||||||
3
Dev/n8n/panda_n8n/n8n-data/config
Normal file
3
Dev/n8n/panda_n8n/n8n-data/config
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"encryptionKey": "gJNeJ70E+q4GQeVLEJKttR199XSA0mbg"
|
||||||
|
}
|
||||||
BIN
Dev/n8n/panda_n8n/n8n-data/database.sqlite
Normal file
BIN
Dev/n8n/panda_n8n/n8n-data/database.sqlite
Normal file
Binary file not shown.
BIN
Dev/n8n/panda_n8n/n8n-data/database.sqlite-shm
Normal file
BIN
Dev/n8n/panda_n8n/n8n-data/database.sqlite-shm
Normal file
Binary file not shown.
BIN
Dev/n8n/panda_n8n/n8n-data/database.sqlite-wal
Normal file
BIN
Dev/n8n/panda_n8n/n8n-data/database.sqlite-wal
Normal file
Binary file not shown.
0
Dev/n8n/panda_n8n/n8n-data/n8nEventLog-1.log
Normal file
0
Dev/n8n/panda_n8n/n8n-data/n8nEventLog-1.log
Normal file
0
Dev/n8n/panda_n8n/n8n-data/n8nEventLog.log
Normal file
0
Dev/n8n/panda_n8n/n8n-data/n8nEventLog.log
Normal file
5
Dev/n8n/panda_n8n/n8n-data/nodes/package.json
Normal file
5
Dev/n8n/panda_n8n/n8n-data/nodes/package.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"name": "installed-nodes",
|
||||||
|
"private": true,
|
||||||
|
"dependencies": {}
|
||||||
|
}
|
||||||
@@ -1,9 +1,6 @@
|
|||||||
import os
|
|
||||||
import re
|
import re
|
||||||
from datetime import datetime
|
|
||||||
import json
|
import json
|
||||||
import requests
|
import sys
|
||||||
|
|
||||||
from netmiko import ConnectHandler
|
from netmiko import ConnectHandler
|
||||||
from netmiko.exceptions import NetmikoTimeoutException, NetmikoAuthenticationException
|
from netmiko.exceptions import NetmikoTimeoutException, NetmikoAuthenticationException
|
||||||
|
|
||||||
@@ -20,10 +17,10 @@ def get_aruba_clients(host, username, password):
|
|||||||
}
|
}
|
||||||
|
|
||||||
all_clients_data = []
|
all_clients_data = []
|
||||||
print(f"Csatlakozás a(z) {host} eszközhöz...")
|
print(f"Csatlakozás a(z) {host} eszközhöz...", file=sys.stderr)
|
||||||
try:
|
try:
|
||||||
with ConnectHandler(**device) as net_connect:
|
with ConnectHandler(**device) as net_connect:
|
||||||
print("Sikeres csatlakozás. Adatok lekérdezése...")
|
print("Sikeres csatlakozás. Adatok lekérdezése...", file=sys.stderr)
|
||||||
|
|
||||||
prompt = net_connect.find_prompt()
|
prompt = net_connect.find_prompt()
|
||||||
switch_hostname = prompt.strip('#> ')
|
switch_hostname = prompt.strip('#> ')
|
||||||
@@ -48,86 +45,53 @@ def get_aruba_clients(host, username, password):
|
|||||||
all_clients_data.append(client_data)
|
all_clients_data.append(client_data)
|
||||||
return all_clients_data
|
return all_clients_data
|
||||||
|
|
||||||
print("Hiba: A parancs kimenete nem volt a várt formátumban.")
|
print("Hiba: A parancs kimenete nem volt a várt formátumban.", file=sys.stderr)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
except NetmikoTimeoutException:
|
except NetmikoTimeoutException:
|
||||||
print(f"Hiba: Időtúllépés a(z) {host} eszközhöz való csatlakozáskor.")
|
print(f"Hiba: Időtúllépés a(z) {host} eszközhöz való csatlakozáskor.", file=sys.stderr)
|
||||||
return None
|
return None
|
||||||
except NetmikoAuthenticationException:
|
except NetmikoAuthenticationException:
|
||||||
print(f"Hiba: Sikertelen hitelesítés a(z) {host} eszközön. Ellenőrizd a jelszót.")
|
print(f"Hiba: Sikertelen hitelesítés a(z) {host} eszközön. Ellenőrizd a jelszót.", file=sys.stderr)
|
||||||
return None
|
return None
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Váratlan hiba történt: {e}")
|
print(f"Váratlan hiba történt: {e}", file=sys.stderr)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
# Konfigurációs fájl beolvasása
|
||||||
|
try:
|
||||||
|
with open('config.json', 'r') as f:
|
||||||
|
config = json.load(f)
|
||||||
|
except FileNotFoundError:
|
||||||
|
print("Hiba: A 'config.json' fájl nem található.", file=sys.stderr)
|
||||||
|
exit(1)
|
||||||
|
except json.JSONDecodeError:
|
||||||
|
print("Hiba: A 'config.json' fájl formátuma érvénytelen.", file=sys.stderr)
|
||||||
|
exit(1)
|
||||||
|
|
||||||
# --- IDE DEFINIÁLD A SWITCH-EK IP CÍMEIT ---
|
SWITCH_IPS = config.get("switch_ips", [])
|
||||||
|
USERNAME = config.get("username")
|
||||||
|
PASSWORD = config.get("password")
|
||||||
|
|
||||||
SWITCH_IPS = [
|
if not all([SWITCH_IPS, USERNAME, PASSWORD]):
|
||||||
|
print("Hiba: A 'config.json' fájl hiányos. Tartalmaznia kell 'switch_ips', 'username', és 'password' kulcsokat.", file=sys.stderr)
|
||||||
"10.220.1.84", # NET-SW01
|
exit(1)
|
||||||
"10.220.1.85", # NET-SW02
|
|
||||||
"10.220.1.86", # NET-SW04
|
|
||||||
"10.220.1.87", # NET-SW05
|
|
||||||
"10.220.1.88", # NET-SW06
|
|
||||||
"10.220.1.90", # NET-SW07
|
|
||||||
"10.220.1.91", # NET-SW08
|
|
||||||
"10.220.1.92", # NET-SW09
|
|
||||||
"10.220.1.93", # NET-SW10
|
|
||||||
"10.220.1.94", # NET-SW11
|
|
||||||
"10.220.1.96", # NET-SW13
|
|
||||||
# "10.220.1.96", # NET-SW14
|
|
||||||
"10.220.1.99", # NET-SW17
|
|
||||||
|
|
||||||
]
|
|
||||||
|
|
||||||
USERNAME = os.getenv('ARUBA_USER', 'svc.operator') # Felhasználónév környezeti változóból, alapértelmezett értékkel
|
|
||||||
if not USERNAME:
|
|
||||||
print("Hiba: Az ARUBA_USER környezeti változó nincs beállítva.")
|
|
||||||
exit()
|
|
||||||
|
|
||||||
PASSWORD = os.getenv('ARUBA_PASSWORD')
|
|
||||||
if not PASSWORD:
|
|
||||||
print("Hiba: Az ARUBA_PASSWORD környezeti változó nincs beállítva.")
|
|
||||||
exit()
|
|
||||||
|
|
||||||
N8N_WEBHOOK_URL = os.getenv('N8N_WEBHOOK_URL')
|
|
||||||
if not N8N_WEBHOOK_URL:
|
|
||||||
print("Hiba: Az N8N_WEBHOOK_URL környezeti változó nincs beállítva.")
|
|
||||||
exit()
|
|
||||||
|
|
||||||
|
|
||||||
all_switches_clients = []
|
all_switches_clients = []
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
for ip in SWITCH_IPS:
|
for ip in SWITCH_IPS:
|
||||||
|
print(f"\n--- Feldolgozás: {ip} ---", file=sys.stderr)
|
||||||
print(f"\n--- Feldolgozás: {ip} ---")
|
|
||||||
|
|
||||||
clients_from_one_switch = get_aruba_clients(ip, USERNAME, PASSWORD)
|
clients_from_one_switch = get_aruba_clients(ip, USERNAME, PASSWORD)
|
||||||
|
|
||||||
if clients_from_one_switch:
|
if clients_from_one_switch:
|
||||||
|
|
||||||
all_switches_clients.extend(clients_from_one_switch)
|
all_switches_clients.extend(clients_from_one_switch)
|
||||||
|
print(f"Sikeresen lekérdezve {len(clients_from_one_switch)} kliens a(z) {ip} switch-ről.", file=sys.stderr)
|
||||||
print(f"Sikeresen lekérdezve {len(clients_from_one_switch)} kliens a(z) {ip} switch-ről.")
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
print(f"Nem sikerült adatot lekérdezni a(z) {ip} switch-ről.", file=sys.stderr)
|
||||||
|
|
||||||
print(f"Nem sikerült adatot lekérdezni a(z) {ip} switch-ről.")
|
# Ha nem sikerült adatot gyűjteni, jelezzük a stderr-en
|
||||||
|
if not all_switches_clients:
|
||||||
|
print("\nEgyetlen switch-ről sem sikerült adatot gyűjteni.", file=sys.stderr)
|
||||||
|
|
||||||
|
# --- Fő kimenet: JSON a stdout-ra ---
|
||||||
|
print(json.dumps(all_switches_clients, indent=2))
|
||||||
|
|
||||||
|
|
||||||
if all_switches_clients:
|
|
||||||
print(f"\nÖsszesen {len(all_switches_clients)} kliens adat gyűjtve. Küldés az n8n webhookra...")
|
|
||||||
try:
|
|
||||||
proxies = { 'http': None, 'https': None }
|
|
||||||
response = requests.post(N8N_WEBHOOK_URL, json=all_switches_clients, proxies=proxies)
|
|
||||||
response.raise_for_status() # Hibát dob, ha a státuszkód 4xx vagy 5xx
|
|
||||||
print(f"Sikeresen elküldve {len(all_switches_clients)} kliens adat az n8n webhookra. Státusz: {response.status_code}")
|
|
||||||
except requests.exceptions.RequestException as e:
|
|
||||||
print(f"Hiba történt az adatok n8n webhookra küldése közben: {e}")
|
|
||||||
else:
|
|
||||||
print("\nEgyetlen switch-ről sem sikerült adatot gyűjteni.")
|
|
||||||
28
Dev/n8n/panda_n8n_execute_command/docker-compose.yml
Normal file
28
Dev/n8n/panda_n8n_execute_command/docker-compose.yml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
services:
|
||||||
|
n8n:
|
||||||
|
image: n8nio/n8n:latest
|
||||||
|
container_name: panda_n8n
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- "5678:5678"
|
||||||
|
volumes:
|
||||||
|
- ./n8n-data:/home/node/.n8n
|
||||||
|
- ./n8n-scripts:/home/node/scripts
|
||||||
|
environment:
|
||||||
|
- N8N_HOST=${N8N_HOST:-localhost}
|
||||||
|
- N8N_PORT=5678
|
||||||
|
- N8N_PROTOCOL=${N8N_PROTOCOL:-http}
|
||||||
|
- WEBHOOK_URL=${WEBHOOK_URL:-http://localhost:5678/}
|
||||||
|
- NODES_EXCLUDE="[]"
|
||||||
|
# Ha használsz SSL/TLS-t, akkor ezeket is be kell állítanod
|
||||||
|
# - N8N_BASIC_AUTH_ACTIVE=true
|
||||||
|
# - N8N_BASIC_AUTH_USER=user
|
||||||
|
# - N8N_BASIC_AUTH_PASSWORD=password
|
||||||
|
networks:
|
||||||
|
- shared-network
|
||||||
|
labels:
|
||||||
|
- com.centurylinklabs.watchtower.enable=true
|
||||||
|
|
||||||
|
networks:
|
||||||
|
shared-network:
|
||||||
|
external: true
|
||||||
3
Dev/n8n/panda_n8n_execute_command/n8n-data/config
Normal file
3
Dev/n8n/panda_n8n_execute_command/n8n-data/config
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"encryptionKey": "gJNeJ70E+q4GQeVLEJKttR199XSA0mbg"
|
||||||
|
}
|
||||||
BIN
Dev/n8n/panda_n8n_execute_command/n8n-data/database.sqlite
Normal file
BIN
Dev/n8n/panda_n8n_execute_command/n8n-data/database.sqlite
Normal file
Binary file not shown.
BIN
Dev/n8n/panda_n8n_execute_command/n8n-data/database.sqlite-shm
Normal file
BIN
Dev/n8n/panda_n8n_execute_command/n8n-data/database.sqlite-shm
Normal file
Binary file not shown.
BIN
Dev/n8n/panda_n8n_execute_command/n8n-data/database.sqlite-wal
Normal file
BIN
Dev/n8n/panda_n8n_execute_command/n8n-data/database.sqlite-wal
Normal file
Binary file not shown.
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"name": "installed-nodes",
|
||||||
|
"private": true,
|
||||||
|
"dependencies": {}
|
||||||
|
}
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
import json
|
|
||||||
|
|
||||||
# Az n8n az 'items' listában adja át a bejövő adatokat.
|
|
||||||
# Nekünk az első elem kell, ami az Execute Command kimenete.
|
|
||||||
input_item = items[0]
|
|
||||||
|
|
||||||
# Kivesszük a 'stdout' mezőt, ami a JSON-t tartalmazza szövegként.
|
|
||||||
stdout_string = input_item.json['stdout']
|
|
||||||
|
|
||||||
# A `json.loads()` paranccsal a szöveget átalakítjuk egy Python listává,
|
|
||||||
# ami dictionary-ket tartalmaz.
|
|
||||||
switches_list = json.loads(stdout_string)
|
|
||||||
|
|
||||||
# Visszaadjuk a listát. Az n8n a Code node kimenetén ezt automatikusan
|
|
||||||
# szét fogja bontani különálló elemekre (item-ekre).
|
|
||||||
return switches_list
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
N8N_BASIC_AUTH_ACTIVE=true
|
|
||||||
N8N_BASIC_AUTH_USER=admin
|
|
||||||
N8N_BASIC_AUTH_PASSWORD=OSXkE8I7YbXpOf8ao_Cw7M.d6g-.54Ok
|
|
||||||
|
|
||||||
TZ=Europe/Budapest
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
version: '3.7'
|
|
||||||
|
|
||||||
services:
|
|
||||||
n8n:
|
|
||||||
image: n8nio/n8n
|
|
||||||
container_name: n8n
|
|
||||||
restart: unless-stopped
|
|
||||||
ports:
|
|
||||||
- "5678:5678"
|
|
||||||
env_file:
|
|
||||||
- .env
|
|
||||||
volumes:
|
|
||||||
- n8n_data:/home/node/.n8n
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
n8n_data:
|
|
||||||
@@ -1,5 +1,36 @@
|
|||||||
Aufgabe
|
Aufgabe
|
||||||
|
|
||||||
|
1. Gegensprecanlage
|
||||||
|
https://mrathje.de/kontakt.htm/
|
||||||
|
https://www.tc-telefon.de/Kontakt/
|
||||||
|
|
||||||
|
-- https://www.behnke-online.de/de/partner-plz-20000-29999
|
||||||
|
|
||||||
4.
|
4.
|
||||||
|
|
||||||
5.
|
5.
|
||||||
|
|
||||||
|
6. Druckers Konfig to smtp_relay
|
||||||
|
+ Weser
|
||||||
|
+ Elbe
|
||||||
|
+ Aalbek
|
||||||
|
+ Hellbach
|
||||||
|
+ Lottbek
|
||||||
|
+ Zorge
|
||||||
|
+ Goldbach
|
||||||
|
+ Flottbek
|
||||||
|
+ Hamme
|
||||||
|
|
||||||
|
Alster ?
|
||||||
|
Ahr_Struensee-Haus
|
||||||
|
- Seseke
|
||||||
|
- Juemme
|
||||||
|
- Radegast
|
||||||
|
Steinbach
|
||||||
|
Nonne
|
||||||
|
- Eider
|
||||||
|
- Enz
|
||||||
|
- Orthbrookgraben
|
||||||
|
- Siede
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ ep..Ep
|
|||||||
|
|
||||||
Server:
|
Server:
|
||||||
t1.meszely
|
t1.meszely
|
||||||
vi..Vi
|
warP#....#Maci
|
||||||
|
|
||||||
000
|
000
|
||||||
pandA#...#min
|
pandA#...#min
|
||||||
@@ -18,7 +18,6 @@ a494052388958b494052388958
|
|||||||
Wifi:
|
Wifi:
|
||||||
ASR22Antares
|
ASR22Antares
|
||||||
|
|
||||||
|
|
||||||
KP:
|
KP:
|
||||||
MuVD9Zcc4HK0jDQ4HzMt
|
MuVD9Zcc4HK0jDQ4HzMt
|
||||||
|
|
||||||
@@ -26,6 +25,8 @@ Web:
|
|||||||
https://aps-hh.estargmbh.de/
|
https://aps-hh.estargmbh.de/
|
||||||
virgI6774+
|
virgI6774+
|
||||||
|
|
||||||
|
Onboarding :
|
||||||
|
file:///Z:/IT_Dokumentation/APS-IT-Dokumentation/onboarding.pdf
|
||||||
|
|
||||||
DHCP Servers:
|
DHCP Servers:
|
||||||
APS-Infra01
|
APS-Infra01
|
||||||
@@ -56,6 +57,8 @@ MeszelyIstvan@682da8f717950.com
|
|||||||
WinPass
|
WinPass
|
||||||
MicrosoftAuth
|
MicrosoftAuth
|
||||||
|
|
||||||
|
Kapelou2025
|
||||||
|
|
||||||
000
|
000
|
||||||
pandA#...#min
|
pandA#...#min
|
||||||
|
|
||||||
@@ -63,6 +66,10 @@ M:\Steribase\FileSrv\SBInter\InBox
|
|||||||
|
|
||||||
ANTARES PHARMA SERVICE
|
ANTARES PHARMA SERVICE
|
||||||
|
|
||||||
|
Sophos :
|
||||||
|
https://vpn.aps-hh.de:7443/
|
||||||
|
|
||||||
|
|
||||||
Mobil : 0171 / 62 29 88 6
|
Mobil : 0171 / 62 29 88 6
|
||||||
E-Mail:D.Laumann@mavesoft.de
|
E-Mail:D.Laumann@mavesoft.de
|
||||||
|
|
||||||
@@ -95,7 +102,6 @@ Status Lokal Remote Netzwerk
|
|||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
M: \\aps.local\antares Microsoft Windows Network
|
M: \\aps.local\antares Microsoft Windows Network
|
||||||
OK U: \\aps-file02\User$\i.meszely
|
OK U: \\aps-file02\User$\i.meszely
|
||||||
Microsoft Windows Network
|
|
||||||
Z: \\aps.local\Data Microsoft Windows Network
|
Z: \\aps.local\Data Microsoft Windows Network
|
||||||
|
|
||||||
|
|
||||||
@@ -114,7 +120,6 @@ NuAaGTNPQWyeneQLI5qr
|
|||||||
|
|
||||||
Unify TSP - uninstall,
|
Unify TSP - uninstall,
|
||||||
|
|
||||||
|
|
||||||
virgI6774#Virgi
|
virgI6774#Virgi
|
||||||
|
|
||||||
virgI6774#
|
virgI6774#
|
||||||
@@ -128,13 +133,9 @@ Drucker Emmer
|
|||||||
NET-SW02 - 1/1/25
|
NET-SW02 - 1/1/25
|
||||||
Drucek Etsch
|
Drucek Etsch
|
||||||
|
|
||||||
Windows Telefonische Aktivierung
|
|
||||||
slui.exe 4
|
|
||||||
|
|
||||||
gemini api key : AIzaSyBUvqSD7llReHbCQAosuDDy1Q5gIT6pKLw
|
gemini api key : AIzaSyBUvqSD7llReHbCQAosuDDy1Q5gIT6pKLw
|
||||||
gitea apy key : d5747e87cb2e1022904c4a60f801cb2758542abb
|
gitea apy key : d5747e87cb2e1022904c4a60f801cb2758542abb
|
||||||
|
|
||||||
|
|
||||||
docker-compose up -d
|
docker-compose up -d
|
||||||
docker-compose up -d --build
|
docker-compose up -d --build
|
||||||
docker-compose up -d --force-recreate
|
docker-compose up -d --force-recreate
|
||||||
@@ -144,10 +145,6 @@ getent group docker | cut -d: -f3
|
|||||||
|
|
||||||
SOIB2026STD!
|
SOIB2026STD!
|
||||||
|
|
||||||
APS-FILE02
|
|
||||||
User$\l.wobig\_Scans
|
|
||||||
aps\svc.scan2home
|
|
||||||
|
|
||||||
KXBPK-6QNPK-93C3C-7KKVG-GMT44
|
KXBPK-6QNPK-93C3C-7KKVG-GMT44
|
||||||
|
|
||||||
# Ispconfig
|
# Ispconfig
|
||||||
@@ -156,4 +153,8 @@ KXBPK-6QNPK-93C3C-7KKVG-GMT44
|
|||||||
[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!
|
[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
|
||||||
|
0172 9428000
|
||||||
|
|
||||||
|
pandA#6774#Maci
|
||||||
|
|
||||||
|
|||||||
BIN
Doc/Pdf/onboarding.pdf
Normal file
BIN
Doc/Pdf/onboarding.pdf
Normal file
Binary file not shown.
14
Doc/STD-RODC01.md
Normal file
14
Doc/STD-RODC01.md
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
STD-RODC01
|
||||||
|
STD-NSM01
|
||||||
|
rdp STD-Admin01
|
||||||
|
STD-Print01
|
||||||
|
STD-Profile01
|
||||||
|
rdp STD-File01
|
||||||
|
rdp STD-File02
|
||||||
|
STD-APO01
|
||||||
|
STD-SQL01
|
||||||
|
STD-AOTRACE01
|
||||||
|
STD-RDSCB01
|
||||||
|
STD-RDS01
|
||||||
|
STD-RDS02
|
||||||
|
STD-INFRA01
|
||||||
47
Doc/Scripts/python/wakeonlan.py
Normal file
47
Doc/Scripts/python/wakeonlan.py
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
import socket
|
||||||
|
import struct
|
||||||
|
|
||||||
|
def send_wol_packet(mac_address, ip_address='255.255.255.255', port=9):
|
||||||
|
"""
|
||||||
|
Elküld egy Wake-on-LAN "magic packet"-et.
|
||||||
|
|
||||||
|
:param mac_address: A felébresztendő eszköz MAC-címe (pl. "AA:BB:CC:DD:EE:FF" vagy "AABBCCDDEEFF").
|
||||||
|
:param ip_address: A cél IP-cím (általában broadcast cím a helyi hálózaton).
|
||||||
|
Alapértelmezett: '255.255.255.255'
|
||||||
|
:param port: A cél port (általában 7 vagy 9).
|
||||||
|
Alapértelmezett: 9
|
||||||
|
"""
|
||||||
|
if len(mac_address) == 12:
|
||||||
|
pass
|
||||||
|
elif len(mac_address) == 17:
|
||||||
|
mac_address = mac_address.replace(':', '').replace('-', '')
|
||||||
|
else:
|
||||||
|
raise ValueError("Érvénytelen MAC-cím formátum. Használj 'AABBCCDDEEFF' vagy 'AA:BB:CC:DD:EE:FF' formátumot.")
|
||||||
|
|
||||||
|
# A "magic packet" felépítése: 6 bájt FF, majd 16-szor a MAC-cím
|
||||||
|
data = b'FFFFFFFFFFFF' + (bytes.fromhex(mac_address) * 16)
|
||||||
|
|
||||||
|
# UDP socket létrehozása
|
||||||
|
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||||
|
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) # Broadcast engedélyezése
|
||||||
|
|
||||||
|
try:
|
||||||
|
sock.sendto(data, (ip_address, port))
|
||||||
|
print(f"WOL csomag elküldve a {mac_address} MAC-címre a {ip_address}:{port} címre.")
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Hiba történt a WOL csomag küldésekor: {e}")
|
||||||
|
finally:
|
||||||
|
sock.close()
|
||||||
|
|
||||||
|
# Példa használat:
|
||||||
|
if __name__ == "__main__":
|
||||||
|
import sys
|
||||||
|
if len(sys.argv) < 2:
|
||||||
|
print("Használat: python wakeonlan.py <MAC_CÍM> [IP_CÍM] [PORT]")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
mac_address = sys.argv[1]
|
||||||
|
ip_address = sys.argv[2] if len(sys.argv) > 2 else '255.255.255.255'
|
||||||
|
port = int(sys.argv[3]) if len(sys.argv) > 3 else 9
|
||||||
|
|
||||||
|
send_wol_packet(mac_address, ip_address, port)
|
||||||
16
Doc/Switches.dm.rb
Normal file
16
Doc/Switches.dm.rb
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
7c:5a:1c:e3:7d:ae # APX120 NET-AP11 Halle Antares
|
||||||
|
7c:5a:1c:f0:bc:84 # APX120 NET-AP15 Halle 2 Pfeile
|
||||||
|
7c:5a:1c:f0:bd:1d # APX120 NET-AP10 Halle 2 Wand
|
||||||
|
7c:5a:1c:f0:cd:40 # APX120 NET-AP14 H3 Ecke
|
||||||
|
7c:5a:1c:f1:0b:13 # APX120 NET-AP08 IT Büro
|
||||||
|
7c:5a:1c:f1:28:e4 # APX120 NET-AP09 Halle Antares
|
||||||
|
c8:4f:86:9e:e8:0a # APX120 NET-AP07 Halle Vivatis
|
||||||
|
c8:4f:86:9e:f0:13 # APX120 NET-AP05 Halle Vivatis
|
||||||
|
c8:4f:86:9a:a6:0c # APX120 NET-AP12 Perso
|
||||||
|
c8:4f:86:9a:a6:2e # APX120 NET-AP13 1.OG_2(OQS)
|
||||||
|
c8:4f:86:9a:a6:50 # APX120 NET-AP01 BTM Raum
|
||||||
|
c8:4f:86:9a:b3:43 # APX120 NET-AP04 Halle Vivatis
|
||||||
|
c8:4f:86:9a:b3:a9 # APX120 NET-AP03 Apotheke 02
|
||||||
|
c8:4f:86:9a:d8:1e # APX120 NET-AP02 Apotheke 01
|
||||||
|
c8:4f:86:9f:1e:d3 # APX120 NET-AP06 Halle Vivatis
|
||||||
|
|
||||||
0
Einkaufen/KaufenList.md
Normal file
0
Einkaufen/KaufenList.md
Normal file
70
GEMINI_o365_fertig.md
Normal file
70
GEMINI_o365_fertig.md
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
# Microsoft 365 SMTP Relay Beállítása Helyi Eszközökhöz
|
||||||
|
|
||||||
|
Ez az útmutató leírja a "best practice" módszert arra, hogyan lehet helyi hálózati eszközök (nyomtatók, scannerek, IoT eszközök) számára lehetővé tenni az e-mail küldést egy Microsoft 365 (korábban Office 365) fiókon keresztül.
|
||||||
|
|
||||||
|
## A probléma: Helyi eszközök és a Microsoft 365
|
||||||
|
|
||||||
|
Sok hálózati eszköz nem támogatja a modern, biztonságos e-mail küldési protokollokat (pl. STARTTLS, OAuth2), amelyeket a Microsoft 365 megkövetel. Emiatt közvetlenül nem tudnak e-mailt küldeni. A megoldás egy helyi SMTP Relay (smarthost) szerver beállítása, ami fogadja az eszközök egyszerű kéréseit és biztonságos módon továbbítja azokat a Microsoft 365 felé.
|
||||||
|
|
||||||
|
## Feladó Címe: Valódi Domain Használata
|
||||||
|
|
||||||
|
**Mindig a valódi, publikus domain nevet használja** a feladó címében (pl. `szkenner@ceged.hu`). Ne használjon `.local` vagy más nem létező domaineket, mert azokat a spam szűrők azonnal elutasítják, és nem teszik lehetővé a kézbesítéshez szükséges SPF/DKIM rekordok használatát.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Best Practice: SMTP Relay Megvalósítása
|
||||||
|
|
||||||
|
A folyamat három fő lépésből áll: a Microsoft 365 fogadó oldalának (Connector) beállítása, a helyi relay szerver konfigurálása, és végül az eszközök beállítása.
|
||||||
|
|
||||||
|
### Előfeltételek
|
||||||
|
* Egy folyamatosan működő helyi szerver (pl. egy Linux szerver Postfix-szel, mint egy ISPConfig gép).
|
||||||
|
* **Statikus (fix) publikus IP cím**, ahonnan a szerver az internet felé látszik.
|
||||||
|
* Adminisztrátori hozzáférés a Microsoft 365 tenant-hoz.
|
||||||
|
|
||||||
|
### 1. Lépés: Microsoft 365 Connector Létrehozása
|
||||||
|
|
||||||
|
Engedélyezni kell a Microsoft oldalon, hogy a fix IP címünkről érkező leveleket authentikáció nélkül elfogadja.
|
||||||
|
|
||||||
|
1. Jelentkezzen be a **Microsoft 365 Exchange admin centerbe**.
|
||||||
|
2. Navigáljon a **Mail flow > Connectors** menüpontra.
|
||||||
|
3. Kattintson az **"Add a connector"** gombra.
|
||||||
|
4. A beállítások a következők legyenek:
|
||||||
|
* Connection from: **Your organization's email server**
|
||||||
|
* Connection to: **Office 365**
|
||||||
|
5. Adjon a connectornak egy egyértelmű nevet (pl. "Helyi Irodai Eszközök Relay").
|
||||||
|
6. A következő lépésben adja meg a **statikus publikus IP címét**. A Microsoft ez alapján fogja azonosítani és megbízhatónak ítélni a szerverét.
|
||||||
|
7. Mentse a beállításokat.
|
||||||
|
|
||||||
|
### 2. Lépés: Helyi Relay Szerver (Postfix) Beállítása
|
||||||
|
|
||||||
|
A helyi szervernek tudnia kell, hogy minden levelet a Microsoft 365-nek kell továbbítania.
|
||||||
|
|
||||||
|
1. **Keresse meg az M365 MX rekordját:** Ezt a domainjéhez tartozó MX rekord határozza meg. Lekérdezheti pl. `nslookup -q=mx ceged.hu` paranccsal. Az eredmény valami hasonló lesz: `ceged-hu.mail.protection.outlook.com`.
|
||||||
|
2. **Konfigurálja a Postfix-et:** Szerkessze a `/etc/postfix/main.cf` fájlt, és adja hozzá vagy módosítsa a `relayhost` paramétert. A szögletes zárójel fontos!
|
||||||
|
|
||||||
|
```ini
|
||||||
|
# /etc/postfix/main.cf
|
||||||
|
relayhost = [ceged-hu.mail.protection.outlook.com]:25
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Engedélyezze a belső hálózatot:** Győződjön meg róla, hogy a `mynetworks` direktíva tartalmazza a belső hálózati tartományt (pl. `192.168.1.0/24`), hogy a helyi eszközök authentikáció nélkül tudják használni a szervert.
|
||||||
|
4. **Indítsa újra a Postfix szolgáltatást:**
|
||||||
|
```sh
|
||||||
|
sudo systemctl restart postfix
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Lépés: Eszközök és Nyomtatók Beállítása
|
||||||
|
|
||||||
|
Az összes érintett eszközön az SMTP szervernek a helyi relay szervert kell beállítani.
|
||||||
|
|
||||||
|
* **SMTP Szerver:** A helyi Postfix szerver IP címe (pl. `192.168.1.10`).
|
||||||
|
* **Port:** `25`
|
||||||
|
* **Titkosítás / SSL / TLS:** Nincs (None)
|
||||||
|
* **Authentikáció / Hitelesítés:** Nincs (Username/Password üresen hagyva)
|
||||||
|
* **Feladó címe:** Egy valós domainnel rendelkező e-mail cím (pl. `nyomtato@ceged.hu`).
|
||||||
|
|
||||||
|
## Az E-mail Útvonala
|
||||||
|
|
||||||
|
Ezzel a konfigurációval a levelek útja a következő:
|
||||||
|
|
||||||
|
`Eszköz (pl. nyomtató)` → `Helyi Postfix Szerver (auth nélkül)` → `Microsoft 365 Connector (IP azonosítással)` → `Címzett (belső vagy külső)`
|
||||||
111
GEMINI_smtp_relay_opprem.md
Normal file
111
GEMINI_smtp_relay_opprem.md
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
# Postfix SMTP Relay beállítása On-Premise Exchange szerverhez
|
||||||
|
|
||||||
|
Ez az útmutató leírja, hogyan lehet egy Postfix SMTP relay szervert beállítani egy Linux VM-en, amely a belső hálózati eszközökről (pl. nyomtatók, IoT eszközök) érkező e-maileket továbbítja egy helyi (on-premise) Microsoft Exchange szerver felé. A hitelesítés IP-cím alapú bizalmi kapcsolaton (Receive Connector) keresztül történik, nem igényel felhasználónevet és jelszót.
|
||||||
|
|
||||||
|
## Komponensek és IP-címek
|
||||||
|
|
||||||
|
* **Postfix Relay Szerver (Linux VM):** `10.101.0.251`
|
||||||
|
* **On-Premise Exchange Szerver:** `aps-exch01.aps.local`
|
||||||
|
* **Kliens Hálózat (Nyomtatók):** `10.102.9.0/24`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Lépések a Postfix Szerveren (`10.101.0.251`)
|
||||||
|
|
||||||
|
Ezeket a parancsokat a Linux VM-en kell futtatni.
|
||||||
|
|
||||||
|
### 1.1. Telepítés
|
||||||
|
|
||||||
|
Válassza ki a megfelelő parancsot a Linux disztribúciójának megfelelően.
|
||||||
|
|
||||||
|
**Fedora/CentOS/RHEL esetén:**
|
||||||
|
```bash
|
||||||
|
sudo dnf install postfix mailx cyrus-sasl-plain -y
|
||||||
|
```
|
||||||
|
|
||||||
|
**Debian/Ubuntu esetén:**
|
||||||
|
```bash
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install postfix mailutils libsasl2-modules -y
|
||||||
|
```
|
||||||
|
*A telepítés során válassza az **'Internet Site'** opciót. A "System mail name" mezőbe írjon be egy tetszőleges, de beszédes nevet, pl. `postfix-relay.aps.local`.*
|
||||||
|
|
||||||
|
### 1.2. Konfiguráció
|
||||||
|
|
||||||
|
Nyissa meg a `/etc/postfix/main.cf` konfigurációs fájlt egy szövegszerkesztővel (`sudo nano /etc/postfix/main.cf`), törölje a teljes tartalmát, és illessze be az alábbiakat:
|
||||||
|
|
||||||
|
```ini
|
||||||
|
# A belső, on-premise Exchange szerver címe, ahova továbbítjuk a leveleket.
|
||||||
|
relayhost = aps-exch01.aps.local
|
||||||
|
|
||||||
|
# A belső hálózatok, ahonnan a Postfix fogadja a leveleket (nyomtatók, stb.)
|
||||||
|
# Itt szerepel a loopback, és az Ön által megadott nyomtató hálózat.
|
||||||
|
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 10.102.9.0/24
|
||||||
|
|
||||||
|
# Nincs szükség kliens oldali hitelesítésre, mivel az Exchange-en beállítjuk az IP-alapú bizalmat.
|
||||||
|
smtp_sasl_auth_enable = no
|
||||||
|
|
||||||
|
# Ajánlott beállítás a TLS használatára, még belső hálózaton is
|
||||||
|
smtp_use_tls = yes
|
||||||
|
smtp_tls_security_level = may
|
||||||
|
```
|
||||||
|
|
||||||
|
### 1.3. Szolgáltatás újraindítása
|
||||||
|
|
||||||
|
A konfiguráció érvénybe léptetéséhez indítsa újra a Postfix szolgáltatást, és engedélyezze az automatikus indulást.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl restart postfix
|
||||||
|
sudo systemctl enable postfix
|
||||||
|
```
|
||||||
|
|
||||||
|
### 1.4. Tesztelés
|
||||||
|
|
||||||
|
Küldjön egy teszt e-mailt a parancssorból, hogy ellenőrizze a működést.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
echo "Ez egy teszt üzenet a Postfix relay szerverről." | mail -s "Postfix Teszt" valaki@az_on_domain_e.hu
|
||||||
|
```
|
||||||
|
*Cserélje ki a `valaki@az_on_domain_e.hu` címet egy valós e-mail címre a szervezetén belül.*
|
||||||
|
|
||||||
|
A levélforgalom naplóját a `/var/log/mail.log` (Debian/Ubuntu) vagy `/var/log/maillog` (Fedora/RHEL) fájlban követheti.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Lépések az On-Premise Exchange Szerveren (`aps-exch01.aps.local`)
|
||||||
|
|
||||||
|
Ezeket a lépéseket az Exchange adminisztrátorának kell elvégeznie az Exchange szerveren.
|
||||||
|
|
||||||
|
### 2.1. Receive Connector Létrehozása (Grafikus felületen)
|
||||||
|
|
||||||
|
1. Nyissa meg az **Exchange Admin Center (EAC)** webes felületét.
|
||||||
|
2. Navigáljon a **Mail flow > Receive connectors** menüpontra.
|
||||||
|
3. Kattintson az `+` ikonra egy új Receive Connector létrehozásához.
|
||||||
|
4. Adjon neki egy beszédes nevet: `Postfix_Relay_10.101.0.251`.
|
||||||
|
5. Válassza a **Frontend Transport** szerepkört.
|
||||||
|
6. A "Remote network settings" (Távoli hálózati beállítások) alatt távolítsa el az alapértelmezett `0.0.0.0-255.255.255.255` tartományt, és adja hozzá **csak a Postfix szerver IP-címét**: `10.101.0.251`.
|
||||||
|
7. A biztonsági beállításoknál győződjön meg róla, hogy az **Anonymous users** opció be van jelölve.
|
||||||
|
8. Mentse el a beállításokat.
|
||||||
|
|
||||||
|
### 2.2. Külső Relay Engedélyezése (PowerShell)
|
||||||
|
|
||||||
|
**Ez a lépés kritikus ahhoz, hogy a relay szerver a szervezeten kívüli címzetteknek is tudjon levelet küldeni!**
|
||||||
|
|
||||||
|
1. Nyisson meg egy **Exchange Management Shell-t** rendszergazdaként az Exchange szerveren.
|
||||||
|
2. Futtassa az alábbi parancsot (a connector nevének egyeznie kell a 2.1. pontban megadottal):
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
Get-ReceiveConnector "Postfix_Relay_10.101.0.251" | Add-ADPermission -User "NT AUTHORITY\ANONYMOUS LOGON" -ExtendedRights "Ms-Exch-SMTP-Accept-Any-Recipient"
|
||||||
|
```
|
||||||
|
A parancs lefutása után a beállítás élesedik.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Kliens Eszközök beállítása
|
||||||
|
|
||||||
|
A nyomtatókon, szkennereken, és egyéb IoT eszközökön a következő SMTP beállításokat kell használni:
|
||||||
|
|
||||||
|
* **SMTP Szerver:** `10.101.0.251`
|
||||||
|
* **SMTP Port:** `25`
|
||||||
|
* **Hitelesítés / Authentication:** Nincs / None
|
||||||
|
* **Titkosítás / Encryption:** Nincs / None (vagy STARTTLS, ha az eszköz támogatja)
|
||||||
47
Scripts/powershell/Send-AuthlessTestMail.ps1
Normal file
47
Scripts/powershell/Send-AuthlessTestMail.ps1
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
# Send-AuthlessTestMail.ps1
|
||||||
|
#
|
||||||
|
# E-mail küldése hitelesítés nélkül egy SMTP relay szerveren keresztül.
|
||||||
|
# Cél: Ellenőrizni a Postfix SMTP relay beállításait.
|
||||||
|
|
||||||
|
# --- Konfigurációs beállítások ---
|
||||||
|
# Az Ön Postfix SMTP relay szerverének IP-címe
|
||||||
|
$SmtpServer = "10.101.0.251"
|
||||||
|
# Az SMTP port, alapértelmezés szerint 25
|
||||||
|
$SmtpPort = 25
|
||||||
|
|
||||||
|
# A feladó e-mail címe. Fontos: Az Exchange-nek el kell fogadnia ezt a feladót a Postfix relay-ről.
|
||||||
|
# Cserélje le egy valós e-mail címre az Ön domainjéről!
|
||||||
|
$From = "noreply@aps-hh.de"
|
||||||
|
|
||||||
|
# A címzett e-mail címe. Ide fog megérkezni a teszt e-mail.
|
||||||
|
# Cserélje le egy valós címzett e-mail címre!
|
||||||
|
$To = "i.meszely@aps-hh.de"
|
||||||
|
|
||||||
|
# Az e-mail tárgya és törzse
|
||||||
|
$Subject = "Automatikus Teszt E-mail a Postfix Relay-en keresztül (Auth nélkül)"
|
||||||
|
$Body = "Tisztelt Címzett!" + "`n`n" +
|
||||||
|
"Ez egy automatikus teszt üzenet, amelyet egy PowerShell szkript küldött el a Postfix SMTP relay szerverén keresztül, hitelesítés nélkül." + "`n" +
|
||||||
|
"Ha ezt az e-mailt megkapta, az azt jelenti, hogy a Postfix relay szerver és az Exchange Receive Connector beállításai helyesek, és sikeresen továbbította az üzenetet." + "`n`n" +
|
||||||
|
"Üdvözlettel," + "`n" +
|
||||||
|
"Az Ön teszt szkriptje"
|
||||||
|
|
||||||
|
# --- E-mail küldése ---
|
||||||
|
try {
|
||||||
|
Write-Host "E-mail küldése a $($SmtpServer):$($SmtpPort) címre..." -ForegroundColor Cyan
|
||||||
|
|
||||||
|
# A -Credential paraméter elhagyása biztosítja, hogy ne történjen hitelesítési kísérlet.
|
||||||
|
Send-MailMessage -SmtpServer $SmtpServer -Port $SmtpPort -From $From -To $To -Subject $Subject -Body $Body -ErrorAction Stop
|
||||||
|
|
||||||
|
Write-Host "Sikeresen elküldött teszt e-mailt a $($SmtpServer)-re." -ForegroundColor Green
|
||||||
|
Write-Host "Kérem, ellenőrizze a $($To) postafiókját." -ForegroundColor Green
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Host "Hiba történt az e-mail küldésekor:" -ForegroundColor Red
|
||||||
|
Write-Host $_.Exception.Message -ForegroundColor Red
|
||||||
|
Write-Host "Kérjük, ellenőrizze a Postfix szerver logjait (/var/log/mail.log) a részletekért." -ForegroundColor Yellow
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- Fontos Megjegyzés ---
|
||||||
|
# Győződjön meg róla, hogy a forrásgép IP-címe (ahonnan futtatja a szkriptet)
|
||||||
|
# benne van a Postfix szerver main.cf fájljának 'mynetworks' direktívájában!
|
||||||
|
# Pl. ha a szkriptet a 10.102.1.121-ről futtatja, akkor a 'mynetworks'-ben szerepelnie kell a 10.102.1.0/24-nek.
|
||||||
Reference in New Issue
Block a user