É possível escrever um script bash, que
- seria iniciado na máquina A, efetuaria login em uma máquina diferente B pelo ssh (ambas as máquinas A e B seriam Linux-Machines),
- copia alguns arquivos para a máquina B
- executa um script python em um determinado script python nessas máquinas.
- transfere os resultados de volta para a máquina A
- faz logoff da máquina B.
Isso é tecnicamente factível?
bash
ssh
shell-script
Aufwind
fonte
fonte
cat file | ssh user@host 'cat > /destination/of/file; /path/to/script &>/dev/null; cat results' > /destination/of/results
ControlMaster=yes
eControlPath=/path/to/socketfile
e inicie uma conexão ssh com-f
para executar um ssh em segundo plano. Diga a todas as conexões SSH subseqüentes para usar o mesmo arquivo de soquete.É possível fazer tudo em uma única
ssh
conexão / sessão:Este:
local_src
pararemote_dst
,command
,remote_src
paralocal_dst
.Mas se
command
escreverstdout
, o resultado com também estarálocal_dst
. Secommand
ler a entrada destdin
, receberá eEOF
.fonte
Embora você possa fazer isso em uma única sessão ssh, é um pouco complicado combinar a cópia de arquivos com os comandos em execução.
A maneira mais fácil de executar essa tarefa é executar sessões SSH separadas para as três operações:
Isso requer autenticação no machineB três vezes. A maneira recomendada de evitar a autenticação várias vezes é usar o recurso de compartilhamento de conexão nas versões modernas do OpenSSH: inicie uma conexão mestre com o B de uma vez por todas e permita que o SSH ative automaticamente essa conexão mestre. Adicione
ControlMaster auto
umaControlPath
linha ao seu~/.ssh/config
, inicie uma conexão mestre em segundo plano e execute suas tarefas.Em vez de usar scp ou rsync para copiar arquivos, pode ser mais fácil montar o sistema de arquivos remoto no SSHFS . A propósito, você cuidará da configuração de uma conexão mestre (assumindo que você configurou a sua
~/.ssh/config
como indicado acima).fonte