Talvez seja assim:
sftp username@server <<EOT
cd $path
get ubpbilp*
get cust.cmp*
get bunc.cmp*
quit
EOT
como o sftp não suporta mget
.
Eu escrevi um script de shell para obter os arquivos de outro servidor UNIX. Mas os arquivos não estão sendo copiados. Alguém poderia me ajudar com o que estou fazendo errado?
sftp username@server:$path
get ubpbilp* ./
mget cust.cmp* bunc.cmp* ./
echo "Your files are copied."
Como outros já comentaram, você precisa passar os comandos get
como entrada para sftp
. Você pode fazer isso com um documento aqui . Além disso, observe que sftp
não possui um comando mget
.
sftp "username@server:$path" <<'EOF'
get ubpbilp* ./
get cust.cmp* ./
get bunc.cmp* ./
EOF
O SFTP não é muito conveniente para o script. Se o servidor permitir scp, use-o. Se você quer apenas copiar alguns arquivos, fica mais fácil. Você pode passar padrões na linha de comando de scp
; Certifique-se de citá-los, para que eles sejam expandidos no lado remoto e não pelo shell local. Não esqueça o% final% co_de indicando que o destino é o diretório atual.
scp -p \
"username@server:$path/ubpbilp*" \
"username@server:$path/cust.cmp*" \
"username@server:$path/bunc.cmp*" \
.
Se você precisar fazer mais do que copiar arquivos, instale SSHFS , se possível. O SSHFS fornece acesso a arquivos remotos através do mecanismo normal do sistema de arquivos. Ele usa SFTP sob o capô, então se o servidor permitir SFTP, você pode usar o SSHFS, desde que o seu computador permita que o cliente 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* .