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

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

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

  • SCP без запроса пароля с использованием другого имени пользователя
  • Соединение ssh с сервером закрывается сразу после аутентификации
  • Операция rdiff-backup не разрешена
  • Каковы команды для применения изменений, внесенных в / etc / ssh / sshd_config?
  • ssh-порт для доступа к моей домашней машине из любого места
  • перенаправить звук (микрофон) через ssh, как позвонить через ssh?
  • Может ли SSH-Agent работать с удаленным сценарием bash?
  • scp не работает без пароля
  • 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 - лучшая ОС в мире.