Acontece que não é possível abrir pipes unix diretamente sobre o ssh, pois o Python gera um IOerror. Depois de alguma discussão, acabei fazendo o seguinte. Usando Python / Paramiko Eu executo esses comandos no servidor Solaris (via SSH):
mkfifo input
sleep 10800 > input &
Isso cria o canal de entrada e 'sleep' garante que o tubo permaneça aberto (10800 é de 3 horas em segundos). Se você não usar sleep, o pipe será fechado após a primeira vez que você passar um lote de comandos para ele.
Eu executo o meu processo, enviando isto por ssh:
nohup process_name < input > output.txt &
Isso inicia o processo, anexa o pipe de entrada ao seu stdin e sua saída para um arquivo de texto simples output.txt. o nohup garante que o processo permaneça ativo se eu desconectar a sessão do ssh.
Nota: A princípio, pretendia usar um canal de saída também para a saída, mas, como acontece, não consigo abrir canais via SSH, não há vantagem em usar um tubo. Eu ainda uso um pipe para a entrada, pois isso garante que meu processo continue aceitando comandos conforme eu os envio.
A saída é fácil de ler a partir do output.txt, mas para a entrada eu envio cada lote de comandos (que eu queria que o processo executasse). Primeiro, o script Python cria um arquivo de texto com o novo lote de comandos chamado redir.txt e, em seguida, envia o conteúdo desse arquivo de texto para o canal:
cat redir.txt > input
Isso redireciona os comandos primeiro para o canal de entrada e, em seguida, o processo lê os comandos do canal.
Espero que isso ajude alguém lá fora.