Eu encontrei a solução:
#!/bin/bash
mkfifo /etc/z.conf
(
while (true)
do
ssh x@y cat /etc/z.conf > /etc/z.conf
done
) &
Eu quero criar um link simbólico ou um pipe ou qualquer outra coisa que possa ser usada no lugar de um arquivo. Eu quero que o pseudo-arquivo execute um comando e a saída desse comando deve se tornar o conteúdo desse arquivo
Algo parecido com isto (comando não real):
ln -s 'ssh x@y cat /etc/z.conf' /etc/z.conf
Basicamente, para que quando você cat /etc/z.conf
, ele execute ssh x@y cat /etc/z.conf
e conecte o canal stdout ao identificador de arquivo. Eu imagino, é possível fazer em um programa c, mas eu queria saber se isso poderia ser feito usando apenas ferramentas de linha de comando.
OBSERVAÇÃO : Eu NÃO estou procurando uma maneira de aliasar um comando. Eu quero que isso pareça um arquivo, como por exemplo: quando eu executo um serviço que lê /etc/z.conf
, ele lê o conteúdo deste arquivo de forma transparente para si mesmo. Também: simplesmente copiar o arquivo não é uma solução aceitável
Eu encontrei a solução:
#!/bin/bash
mkfifo /etc/z.conf
(
while (true)
do
ssh x@y cat /etc/z.conf > /etc/z.conf
done
) &