использовать SFTP в сценарии оболочки

Я написал сценарий оболочки для получения файлов с другого сервера UNIX. Но файлы не копируются. Может ли кто-нибудь помочь мне в том, что я делаю неправильно.

sftp username@server:$path get ubpbilp* ./ mget cust.cmp* bunc.cmp* ./ echo "Your files are copied." 

  • Браузер в порядке, но не может направлять интернет через сервер теней
  • Могу ли я подключиться к просмотренным сеансам ssh или просматривать их?
  • Multihop с sshpass
  • Копирование файла из одного каталога в другой каталог на основе метки времени
  • как войти с помощью ssh с паролем?
  • Храните приложение x11 GUI, перенаправленное через ssh после потери соединения
  • Как проверить, могу ли я войти на сервер через ssh?
  • Какая конфигурация существует в CentOS, но не в Ubuntu, которая показывает имя пользователя @ hostname для сеансов удаленного терминала?
  • ANDed условное использование regexp и переменных
  • Подтвердить start-dfs.sh
  • Какую оболочку по умолчанию использовать для пользователя SSH, ограниченного одной командой
  • Почему wget не работает через туннель ssh? Что делает прокси-сервер для предотвращения использования ssh-client?
  • 2 Solutions collect form web for “использовать SFTP в сценарии оболочки”

    Возможно, вот так:

     sftp username@server <<EOT cd $path get ubpbilp* get cust.cmp* get bunc.cmp* quit EOT 

    поскольку sftp не поддерживает mget .

    Как отмечали другие, вам необходимо передать команды get качестве входных данных sftp . Вы можете сделать это с помощью этого документа . Также обратите внимание, что sftp не имеет команды mget .

     sftp "username@server:$path" <<'EOF' get ubpbilp* ./ get cust.cmp* ./ get bunc.cmp* ./ EOF 

    SFTP не очень удобно писать. Если сервер разрешает scp, используйте его. Если вы просто хотите скопировать некоторые файлы, это проще. Вы можете передавать шаблоны в командной строке scp ; обязательно процитируйте их, чтобы они были расширены с удаленной стороны, а не с локальной оболочки. Не забывайте о финале . указывая, что местом назначения является текущий каталог.

     scp -p \ "username@server:$path/ubpbilp*" \ "username@server:$path/cust.cmp*" \ "username@server:$path/bunc.cmp*" \ . 

    Если вам нужно сделать больше, чем копировать файлы, установите SSHFS , если это возможно. SSHFS обеспечивает доступ к удаленным файлам через обычный механизм файловой системы. Он использует SFTP под капотом, поэтому, если сервер разрешает SFTP, вы можете использовать SSHFS, при условии, что ваш компьютер позволяет клиенту разрешать FUSE .

     mkdir server-dir trap 'fusermount -u server-dir; rmdir server-dir' 0 HUP INT TERM sshfs "username@server:$path" server-dir cp -p server-dir/ubpbilp* cust.cmp* bunc.cmp* . 
    Linux и Unix - лучшая ОС в мире.