Este é um sim descarado.
Quando se usa ssh
para executar um comando em um servidor remoto, ele realiza algum tipo de redirecionamento interno de entrada / saída. Na verdade, acho que esse é um dos recursos mais sutis do OpenSSH. Especificamente, se você usar ssh
para executar um comando arbitrário em um sistema remoto, o ssh mapeará STDIN
e STDOUT
para o comando que está sendo executado.
Para fins de exemplo, vamos supor que você queira criar um tarball de backup, mas não quer ou não pode armazená-lo localmente. Vamos dar uma olhada nessa sintaxe:
$ tar -cf - /path/to/backup/dir | ssh remotehost "cat - > backupfile.tar"
Estamos criando um tarball e o escrevendo para STDOUT
, coisas normais. Como estamos usando o ssh para executar um comando remoto, o STDIN é mapeado para STDIN
of cat
. Que nós então redirecionamos para um arquivo.