Um script de shell para executar comandos local e remotamente

0

Então, aqui está o problema. Eu tenho um arquivo em uma máquina remota disponível apenas para o root, e um acesso SSH não-raiz somente-chave privada (eu tenho sudo embora). Eu preciso copiar esse arquivo para a máquina local, e torná-lo tão fácil de usar quanto possível (um alias ou um script de shell), porque isso será usado várias vezes por pessoas diferentes.

Aqui está o que eu estava pensando: 1. SSH para a máquina remota e copie o arquivo para algum local onde eu tenho permissões 2. Na máquina local, faça rsync --remove-source-files para o arquivo que acabei de copiar.

Mas não vejo como fazer isso com apenas um comando. Existe?

    
por T. Spikes 10.05.2016 / 08:33

2 respostas

1

Acho que posso melhorar a resposta dada pelo EightBitTony.

ssh -t user@target 'sudo cat /source/file' > output && chmod +x output

Quando mais de um arquivo está envolvido, acho pax muito mais fácil de usar do que o rsync, não importando a frequência com que o rsync é "simplificado" para mim.

ssh -t user@target 'cd /src && pax -w ./' | pax -r 

HTH.

    
por 11.05.2016 / 07:58
0

ssh -t user@target machine sudo cp /source/file /target/file

O -t cria uma pseudo-tty, para que o sudo possa pedir uma senha. O comando ssh recebe um comando opcional ( sudo cp .... , neste caso) que é executado na máquina de destino e, em seguida, desconecta-se.

Você será solicitado a fornecer a senha sudo (por exemplo, a senha do usuário @ target).

Você pode então executar o rsync . Você pode roteirizar isso na máquina inicial com apenas as duas linhas em um único script.

    
por 10.05.2016 / 10:39