Script para transferir arquivo usando SSH

2

Eu quero transferir tipos específicos de arquivos do diretório no servidor. Então aqui está a cena:

A estrutura de diretórios é

empresas / compA / filedir /
empresas / compB / filedir /
empresas / compC / filedir /

Então, eu quero mover arquivos * .csv de diretórios filedir de cada empresa para outro servidor. Eu quero usar o ssh para transferência de arquivos. Alguém já usou ssh para transferência de arquivos no shell script? Como você lida com essa situação?

    
por yogsma 24.08.2010 / 16:53

4 respostas

5

Use scp ou rsync .

scp usa o ssh para copiar arquivos de e para computadores conectados. Exemplo de sintaxe de cópia do computador local para um host remoto:

scp -r companies/compA/filedir [email protected]:/some/remote/directory

Você precisará usar chaves públicas / privadas para facilitar o login, caso ainda não tenha feito isso em ssh .

rsync pode usar o ssh por sua capacidade de se conectar a outro servidor. A sintaxe da amostra seria:

rsync -avz -e ssh remoteuser@remotehost:/remote/dir /companies/compA/filedir

Ele também precisará de chaves públicas / privadas ativadas.

    
por 24.08.2010 / 17:03
1

Você realmente deseja usar o scp que usa o SSH. Se você quiser usar o rsync, você deve usar o argumento -e ssh .

Quanto ao script, você provavelmente criaria 1) um loop for que percorre uma matriz que contém uma lista de todos os locais e executa o comando scp / rsync correspondente OU 2) você poderia usar uma instrução find que passa por e executa cada comando scp / rsync para você.

O exemplo do comando find seria algo como (não testado):

find /dir/companies/*/filedir/ -type f -name \*.csv -exec scp {} [email protected] \;

Sugiro que, se você estiver usando o SSH para qualquer tipo de transferência, configure algum tipo de autenticação de chave pública, para que não seja solicitada a senha.

Eu posso entrar em mais detalhes, se necessário, apenas tentando começar e apontar na direção certa.

    
por 24.08.2010 / 17:01
0

Você não usaria o programa ssh - você deveria usar scp ou sftp. Mas tendo dito que uma solução melhor seria executar o rsync sobre o ssh para evitar a cópia de arquivos que você já recebeu - mas isso é apenas uma opção se o rsync estiver disponível (ou puder ser instalado no sistema remoto).

Para evitar a necessidade de fornecer uma senha, você precisa primeiro configurar um par de chaves e, em seguida, apenas:

#!/bin/bash

scp somuser@server:/companies/compA/filedir/*.csv /local/compa/filedir
scp somuser@server:/companies/compB/filedir/*.csv /local/compb/filedir
scp somuser@server:/companies/compC/filedir/*.csv /local/compC/filedir
    
por 24.08.2010 / 17:02
0

empresas de scp / comp? / filedir / *. csv 192.168.1.200:/remotedir sendo 192.168.1.200 o ip do servidor remoto.

Se você precisar de um usuário e passar você deve checar o manual do scp (man scp), mas eu acredito que você não pode especificar aqueles no comando scp. Em vez disso, você deve usar as teclas.

    
por 24.08.2010 / 17:05

Tags