3.8 KiB
3.8 KiB
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
iffeltételeket,forciklusokat 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:
- 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. - "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). - "SSH Execute Command" node (chmod): Tedd futtathatóvá a scriptet:
chmod +x /tmp/my_complex_task.sh - "SSH Execute Command" node (futtatás): Futtasd a scriptet:
/tmp/my_complex_task.sh - "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:
- Egy n8n
Functionnode-ban JavaScripttel generáld le a shell script tartalmát egy stringként. - Ezután egy
SSH Execute Commandnode-ban futtasd a következőképpen:Vagy egyszerűbben:bash -s <<'EOF' {{ $json.scriptContent }} EOFecho "{{ $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.