Как выполнить удаленную команду и передать ее в локальный файл?

Можно ли сделать это:

ssh user@socket command /path/to/file/on/local/machine

То есть, я хочу выполнить удаленную команду, используя локальный файл за один шаг, без предварительного использования scp для копирования файла.

  • Существует ли xterm-эквивалент, оптимизированный для использования в VNC?
  • PuTTY (SSH) (tracert) Ошибка сети: программное обеспечение вызвало прерывание соединения
  • Поддерживать приложения Xserver, даже после закрытия удаленной консолидации
  • Размер входного буфера для MacOS
  • Существует ли ограничение на вложенные сеансы ssh?
  • Каким образом SFTP не основан на SSH?
  • daemonize rtorrent
  • работа с именами файлов в другой кодировке по ssh
  • 3 Solutions collect form web for “Как выполнить удаленную команду и передать ее в локальный файл?”

    Вы пропустили только один символ =)

     ssh user@socket command < /path/to/file/on/local/machine 

    Один из способов, который работает независимо от команды, – сделать файл доступным на удаленном компьютере через удаленную файловую систему. Поскольку у вас есть соединение SSH:

    1. Установите обратный туннель SSH . См. Также SSH легко скопировать файл в локальную систему
    2. Установите дерево каталогов на вашем компьютере, содержащее файл для совместного использования на удаленном компьютере с помощью SSHFS . ( Пример )
     # What if remote command can only take a file argument and not read from stdin? (1_CR) ssh user@socket command < /path/to/file/on/local/machine ... cat test.file | ssh user@machine 'bash -c "wc -l <(cat -)"' # 1_CR 

    В качестве альтернативы замене процесса bash < <(xargs -0 -n 1000 cat) <(cat -) или < <(xargs -0 -n 1000 cat) (см. Ниже) вы можете просто использовать xargs и cat для передачи содержимого указанных файлов в wc -l (который более портативный).

     # Assuming that test.file contains file paths each delimited by an ASCII NUL character \0 # and that we are to count all those lines in all those files (provided by test.file). #find . -type f -print0 > test.file # test with repeated line count of ~/.bash_history file for n in {1..1000}; do printf '%s\000' "${HOME}/.bash_history"; done > test.file # xargs & cat ssh localhost 'export LC_ALL=C; xargs -0 -n 1000 cat | wc -l' <test.file # Bash process substitution cat test.file | ssh localhost 'bash -c "export LC_ALL=C; wc -l < <(xargs -0 -n 1000 cat)"' 
    Interesting Posts

    Как использовать 7z для архивации всех файлов и каталогов (в том числе скрытых) в каталоге?

    Можно ли установить CentOS и некоторые пакеты, а затем положить весь результат в installable iso?

    Я хотел бы удалить весь архив архива, кроме сохранения последнего сгенерированного архивного журнала

    «Голова» печатает только одну строку?

    btrfs – снимок родительского подвыбора исключает дочерние подвыборы?

    Включает ли перфект некоторые «графические» способности?

    Создание apt-оффлайн-пакета для использования на многих машинах

    Блокировать файл от редактирования или удаления

    Является ли "sync" перед drop_caches необходимым?

    Прокрутка отключена внезапно в терминале

    502 Неверный шлюз

    Использовать поставщика VirtualBox по умолчанию для Fedora 21

    Как отправить данные на последовательный порт и посмотреть какой-либо ответ?

    Как подражать «cp -a» на Solaris, у которого его нет?

    Установите Ghostscript v 9.05 (или новее) на CentOS

    Linux и Unix - лучшая ОС в мире.