Comandos sobre o SSH não produzindo saída

1

Estou executando o seguinte no terminal do Unix:

client$: ssh host "cat foo.txt"

e esperando que a saída do arquivo e a conexão ssh sejam fechadas, por exemplo:

bar
client$:

O que está realmente acontecendo é que nenhuma saída é produzida pelo cat e o terminal ainda está no host remoto:

server$ :

Agora posso fazer o "cat foo.txt" e obter o conteúdo do arquivo e fechar a conexão com a saída ou o logout. Ouptut do ssh é:

debug1: Entering interactive session.
debug2: callback start
debug2: client_session2_setup: id 0
debug1: Sending environment.
debug1: Sending env LANG = en_GB
debug2: channel 0: request env confirm 0
debug1: Sending command: cat foo.txt
debug2: channel 0: request exec confirm 0
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug2: channel 0: rcvd adjust 2097152

Eu tenho outra conta de usuário para a qual isso realmente funciona bem, mas até agora não consegui encontrar uma diferença na configuração / perfil que possa estar causando esse comportamento. A saída ssh para uma conta de usuário em funcionamento é:

debug1: Entering interactive session.
debug2: callback start
debug2: client_session2_setup: id 0
debug1: Sending environment.
debug1: Sending env LANG = en_GB
debug2: channel 0: request env confirm 0
debug1: Sending command: cat foo.txt
debug2: channel 0: request exec confirm 0
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug2: channel 0: rcvd adjust 2097152
bar
debug2: channel 0: rcvd eof
debug2: channel 0: output open -> drain
debug2: channel 0: obuf empty
debug2: channel 0: close_write
debug2: channel 0: output drain -> closed
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug2: channel 0: rcvd close
debug2: channel 0: close_read
debug2: channel 0: input open -> closed
debug2: channel 0: almost dead
debug2: channel 0: gc: notify user
debug2: channel 0: gc: user detached
debug2: channel 0: send close
debug2: channel 0: is dead
debug2: channel 0: garbage collecting
debug1: channel 0: free: client-session, nchannels 1
debug1: Transferred: stdin 0, stdout 0, stderr 0 bytes in 0.2 seconds
debug1: Bytes per second: stdin 0.0, stdout 0.0, stderr 0.0
debug1: Exit status 0

Existe alguma configuração óbvia que possa estar causando isso? Ou alguma opção ssh que possa ajudar? Eu dei uma olhada em .bashrc e .bash_profile, mas não vejo nada que possa ser a causa. Ambos os usuários não possuem .ssh / config, então acho que a configuração é em todo o sistema em / etc / ssh / ssh_config. Executando o ssh -n host "cat foo.txt" fecha a conexão, mas ainda não há saída do cat:

debug1: Entering interactive session.
debug2: callback start
debug2: client_session2_setup: id 0
debug1: Sending environment.
debug1: Sending env LANG = en_GB
debug2: channel 0: request env confirm 0
debug1: Sending command: cat foo.txt
debug2: channel 0: request exec confirm 0
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug2: channel 0: rcvd adjust 2097152
debug2: channel 0: read<=0 rfd 5 len 0
debug2: channel 0: read failed
debug2: channel 0: close_read
debug2: channel 0: input open -> drain
debug2: channel 0: ibuf empty
debug2: channel 0: send eof
debug2: channel 0: input drain -> closed
debug2: channel 0: rcvd eof
debug2: channel 0: output open -> drain
debug2: channel 0: obuf empty
debug2: channel 0: close_write
debug2: channel 0: output drain -> closed
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug2: channel 0: rcvd close
debug2: channel 0: almost dead
debug2: channel 0: gc: notify user
debug2: channel 0: gc: user detached
debug2: channel 0: send close
debug2: channel 0: is dead
debug2: channel 0: garbage collecting
debug1: channel 0: free: client-session, nchannels 1
debug1: Transferred: stdin 0, stdout 0, stderr 0 bytes in 0.3 seconds
debug1: Bytes per second: stdin 0.0, stdout 0.0, stderr 0.0
debug1: Exit status 0
    
por Kam 04.08.2014 / 09:59

2 respostas

1

Tente usar ssh -T "username@"host" "cat foo.txt"

-T pára um terminal pseudo-tty sendo atribuído

ou se falhar, tente

echo "cat foo.txt" | ssh "username"@"host"

que deve funcionar como ssh "username"@"host" "cat foo.txt"

apenas pensei em outro em vez do eco, tente usar

ssh -t -t "username"@"host" "cat foo.txt"

    
por 04.08.2014 / 14:48
0

Não tenho certeza se isso é relevante para o seu caso, mas consegui resolver um problema semelhante em um Ubuntu 16.10 editando .bashrc :

De:

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) exit;;
esac

Para:

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

Então, se você puder encontrar um exit em qualquer lugar em seus arquivos de configuração, talvez seja isso que está fazendo o nasties .

Substitua-o por return .

Felicidades,
Gus

    
por 03.03.2017 / 12:16

Tags