Shell trava ao fazer o comando do ssh

1

Estou tentando automatizar um processo de atualização do servidor. O que isso deve fazer é verificar os arquivos git diff e listá-los, para depois serem copiados de um lugar para outro.

Aqui está o meu script na minha máquina local:

update_frontend.sh

#!/bin/sh
ssh [login details] -t -t 'bash -s' < ~/Scripts/update_frontend_cmd.sh

update_frontend_cmd.sh

SOURCE=/var/www/git_front/mydir_front
TARGET=/var/www/front
dothis=

cd "$SOURCE"
for i in $(git diff --name-only origin/master master)
    do
    x='echo $i | sed 's/mydir\///''
        dothis='echo "
$dothis
cp './mydir/$x' '$TARGET/$x'"'
    done

git pull
eval $dothis

O problema é que, depois de qualquer entrada minha (seja login para git pull, ou se eu removê-lo, qualquer outro comando que eu tente executar) faz com que o shell fique travado. Acabei de receber uma linha em branco uma espera infinita. Alguma ideia do que está causando isso?

    
por casraf 10.06.2013 / 16:55

3 respostas

2

Após o update_frontend_cmd.sh ter sido processado, você está no final da entrada. O ssh não muda de volta para a entrada do teclado.

O que você poderia considerar é executar uma sessão de tela na máquina remota e executar comandos nela. Em seguida, volte a ligar assim que terminar.

Uma possibilidade mais simples é empurrar o script para o servidor ( scp , ou empurrar melhor via git ) e executá-lo localmente.

    
por 10.06.2013 / 18:20
0

Basta omitir as opções -t de ssh invocação e a sessão será encerrada assim que EOF for atingido em stdin .

    
por 11.06.2013 / 14:58
0

Isso funciona para mim:

( echo 'echo yes'; echo 'exit') | ssh me@localhost -t -t 'bash -s'

Tente substituir o echo 'echo yes' pelo seu cat .

Miau.

    
por 21.02.2017 / 16:21

Tags