n8n SSH-нода это не прозрачный shell: спас base64

Когда делал обработку заказов через n8n, нужно было запустить многострочный Python-скрипт на удаленном сервере через SSH-ноду. Попробовал классический heredoc: cat << 'PYEOF' ... PYEOF. Но n8n выдавал «bash: line 1: import: command not found» - весь Python вдруг стал bash-командами.

Оказалось, n8n SSH-нода не прозрачный shell. Перед отправкой команды на сервер нода применяет expression-resolution к содержимому. Мой heredoc разрушался в процессе этой предобработки. Попытка передать структурированный код через n8n наталкивалась на их обработчик выражений.

Выход: кодировать весь скрипт в base64 локально, передавать одной строкой, на сервере распаковывать. Команда на выходе: echo "BASE64STRING" | base64 -d | python3. Единственный надежный способ пробить expression-resolution и доставить код целым куском.

Потом понял, что это стандарт для такого паттерна: многострочные скрипты через SSH в n8n всегда ломаются, если не обернуть в base64. Каждый tool по-своему смотрит на текст, и нужно понимать границы этого взгляда. Иначе часы отладки уйдут на то, что работает везде, кроме одного места.

#n8n #автоматизация #SSH #интеграции #Python #грабли #разработка