Files
WPanda/GEMINI_n8n_ssh.md
2025-12-16 15:30:21 +01:00

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 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 -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.