sinais transparentes sobre o ssh

3

Por transparência quero dizer o encaminhamento de:

  • stdin , stdout e stderr
  • sinais padrão ( SIGHUP ou SIGINT seria ótimo para começar)

Como exemplo, considere estas invocações de um comando local e remoto (sem ponto):

$ 'cat - > /dev/null; sleep 10' < /local/file
$ ssh user@host "cat - > /dev/null; sleep 10" < /local/file

Eu posso interromper o primeiro com ^C . Mas se eu tentar isso durante o segundo, ele afetará apenas ssh , deixando o comando em execução no servidor remoto se cat já tiver terminado.

Eu sei sobre o lançamento de ssh com -t , mas dessa forma não posso enviar dados via stdin . Isso é possível com ssh sozinho?

    
por jnsg 28.06.2012 / 03:33

1 resposta

0

Os sinais são o domínio do kernel local; eles nunca são transportados através de um link de rede.

Embora você possa executar comandos em uma sessão ssh remota a partir de um computador local, isso não faz magicamente os eventos de nível de sistema no computador remoto disponíveis localmente.

Você teria que embrulhar tudo em um script que intercepta todos os sinais (possíveis) e os comunica através da conexão ssh, mas mesmo assim eles não se transformariam em sinais novamente.

Talvez algo envolvendo nc seja mais apropriado para embaralhar std {in | out | err} entre; isso também não faz parte do conjunto de ferramentas do ssh.

    
por 24.10.2012 / 16:28