Я использовал бы, находят
find ./foo -type d | wc -l
в конечном счете с -maxdepth
опция
SSH не выделяет псевдо-TTY, когда вы указываете команду для запуска. Попробуйте добавить опцию «-t», чтобы переопределить это.
Передача команды в командной строке - это не то же самое, что ввод команд в оболочке. В первом случае оболочке необходимо проанализировать аргументы, а во втором - прочитать строки из стандартного ввода.
Если это тупая (или ограниченная, если вы предпочитаете называть ее) интерактивная оболочка, она может очень сильно ну, не были закодированы для поддержки обоих (я видел такое поведение на практике). Однако, поскольку оболочка явно поддерживает типизированные команды, вам, вероятно, повезет больше, если вы просто отправите все команды на его стандартный ввод. Примерно так:
echo command | ssh ...
Как кто-то прокомментировал, попробуйте добавить -t или даже -tt, чтобы заставить его. Похожая проблема была предположительно исправлена с помощью этого обходного пути.
На самом деле у меня есть проблема, связанная с этой, за исключением меня, она работает из интерфейса командной строки, но не работает через cron.
это работает на SRX240:
( echo 'sh conf|d s|n'; echo 'quit' ) | ssh root@192.168.1.1 "cli"
Это можно улучшить, заставив использовать bash heredoc, чтобы вы могли просто вставить в него полные операторы, но этот пример должен достаточно помочь вам сейчас.