Como posso scp um arquivo em dois servidores em uma linha? [duplicado]


0

Esta questão já tem uma resposta aqui:

Estou usando o Mac 10.9.5 e o shell bash. Em nosso ambiente, temos que passar por um proxy (uma máquina do CentOS) para o SSH adequadamente em uma máquina de destino (outra máquina do CentOS). O que eu gostaria de fazer é criar um atalho para que eu possa scp arquivos rapidamente para o servidor de destino, algo como

scp localfile.txt davea@server:/home/davea

Mas agora, eu tenho que fazer vários comandos para transferir o arquivo ...

scp localfile.txt davea@proxy:/home/davea
ssh davea@proxy
scp localfile.txt davea@server:/home/davea

É possível condensar o acima em uma linha?

Respostas:


1

Que tal uma função em você? .bash_profile

scps () {
    if [ -f $1 ] ; then
        scp $1 davea@proxy:/home/davea && ssh davea@proxy && scp $1 davea@server:/home/davea
    else
        echo "'$1' is not a valid file!"
    fi
}

Então você pode usar scps filename copiar filename para davea@server:/home/davea.


1
Oi, eu dei um presente, mas o resultado é que eu acabo SSH'ed no servidor proxy e o arquivo não foi transferido para o destino.
Dave

Eu aposto que quando ele disse ssh davea@proxy (e depois) scp localfile.txt davea@server:/home/daveaDave queria dizer ssh davea@proxy e depois scp localfile.txt davea@server:/home/davea a partir do prompt do shell no proxy hospedeiro . Seu ssh davea@proxy && scp $1 davea@server:/home/davea não vai fazer isso. Algo como echo "scp $1 davea@server:/home/davea" | ssh davea@proxy poderia trabalho, mas duvido que seja ótimo.
G-Man

Oi G-Man, O que você diz é definitivamente o que eu pretendia. No entanto, na sua solução sugerida, onde está a parte "scp $ 1 davea @ proxy: / home / davea" do comando?
Dave

0

Considere usar rsync para copiar automaticamente os arquivos do proxy para o destino:

rsync local-file user@remote-host:remote-file

Obrigado, mas eu queria fazer tudo em uma linha. Pelo que entendi, seu comando só funciona quando estou no servidor proxy.
Dave

Gostaria de definir o rsync para copiar automaticamente, por ex. adicionando a / etc / crontab * * * * * & lt; usuário & gt; bash & lt; rsync-cmd & gt;
Andreas F
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.