usa SFTP no shell script

1

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."
    
por Aravind 15.05.2015 / 17:45

2 respostas

5

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 .

    
por 15.05.2015 / 17:59
2

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* .
    
por 16.05.2015 / 03:05

Tags