70 lines
3.8 KiB
Markdown
70 lines
3.8 KiB
Markdown
# Több parancs futtatása n8n-ben SSH-n keresztül
|
|
|
|
Amikor egy SSH kapcsolaton keresztül több parancsot szeretnél futtatni nem-interaktív módon (mint az n8n-ben), több megközelítés is létezik. A script felmásolása és futtatása gyakran a legjobb megoldás komplex feladatoknál.
|
|
|
|
### 1. Több parancs egyetlen "SSH Execute Command" node-ban
|
|
|
|
**Hogyan:**
|
|
Több parancsot egyszerűen beírhatsz egyetlen `SSH Execute Command` node "Command" mezőjébe, elválasztva őket:
|
|
- `parancs1; parancs2; parancs3` (egymás után futtatja, függetlenül attól, hogy az előző sikeres volt-e)
|
|
- `parancs1 && parancs2 && parancs3` (csak akkor futtatja a következőt, ha az előző sikeres volt)
|
|
- Akár soronként is írhatod őket, a shell értelmezője gyakran kezeli.
|
|
|
|
**Mikor használd:**
|
|
- Nagyon egyszerű, 2-3 parancsból álló sorozatokhoz.
|
|
- Ha a parancsok függetlenek, vagy a hibakezelés nem kritikus.
|
|
|
|
**Hátrányok:**
|
|
- **Nehezen olvasható és karbantartható:** Ahogy nő a parancsok száma, egyre átláthatatlanabbá válik.
|
|
- **Hibakeresés:** Ha valami elromlik a közepén, nehezebb kideríteni, hogy pontosan hol.
|
|
- **Újrahasznosíthatóság:** A parancssorozat be van "égetve" az n8n node-ba, nehéz máshol felhasználni.
|
|
- **Komplex logika:** Nehéz benne `if` feltételeket, `for` ciklusokat vagy változókat kezelni.
|
|
|
|
### 2. Script felmásolása és futtatása (A JAVASOLT MEGOLDÁS)
|
|
|
|
Ez a leggyakoribb, legjobb gyakorlat komplex feladatok esetén.
|
|
|
|
**Hogyan:**
|
|
1. **Létrehozod a scriptet:** Írd meg a shell scriptet (pl. `my_complex_task.sh`) a kívánt logikával, változókkal, hibakezeléssel.
|
|
2. **"SSH Upload File" node:** Ezzel a node-dal másold fel a scriptet a célgépre egy ideiglenes helyre (pl. `/tmp/my_complex_task.sh`).
|
|
3. **"SSH Execute Command" node (chmod):** Tedd futtathatóvá a scriptet: `chmod +x /tmp/my_complex_task.sh`
|
|
4. **"SSH Execute Command" node (futtatás):** Futtasd a scriptet: `/tmp/my_complex_task.sh`
|
|
5. **"SSH Execute Command" node (takarítás - opcionális, de ajánlott):** Töröld le a scriptet a szerverről, ha már nincs rá szükség: `rm /tmp/my_complex_task.sh`
|
|
|
|
**Mikor használd:**
|
|
- Bármilyen 2-3 parancsnál komplexebb feladathoz.
|
|
- Ha a logikában változók, feltételek, ciklusok vannak.
|
|
- Ha a scriptet újra fel akarod használni más workflow-kban vagy más helyeken.
|
|
- Ha könnyen debugolható, olvasható kódot szeretnél.
|
|
|
|
**Előnyök:**
|
|
- **Olvashatóság és karbantarthatóság:** A shell script tiszta, strukturált.
|
|
- **Hibakeresés:** Ha hiba történik, a script megmondja, hol, és könnyebben reprodukálható a szerveren is.
|
|
- **Újrahasznosíthatóság:** A script egy önálló egység, amit könnyen tudsz másolni, módosítani.
|
|
- **Komplex logika:** Bármilyen shell script funkciót használhatsz.
|
|
- **Jobb hibakezelés:** A scripten belül fejlettebb hibakezelést is implementálhatsz.
|
|
|
|
### 3. Script generálása n8n-en belül és pipe-olás shellbe
|
|
|
|
**Hogyan:**
|
|
1. Egy n8n `Function` node-ban JavaScripttel generáld le a shell script tartalmát egy stringként.
|
|
2. Ezután egy `SSH Execute Command` node-ban futtasd a következőképpen:
|
|
```bash
|
|
bash -s <<'EOF'
|
|
{{ $json.scriptContent }}
|
|
EOF
|
|
```
|
|
Vagy egyszerűbben: `echo "{{ $json.scriptContent }}" | bash`
|
|
|
|
**Mikor használd:**
|
|
- Ha a script tartalma nagyon dinamikus, és az n8n-en belüli változók alapján generálódik.
|
|
- Ha nem akarsz fájlokat hagyni a célgépen, és a script nem túl hosszú.
|
|
|
|
**Hátrányok:**
|
|
- Nehezebben debugolható, mivel a script sosem létezik fájlként.
|
|
- Korlátozott a generált script mérete.
|
|
|
|
### Összefoglalva:
|
|
|
|
A script felmásolása és futtatása a legtöbb esetben a **legjobb megoldás** komplex feladatoknál. Ez a legátláthatóbb, leginkább karbantartható és újrafelhasználható módszer.
|