Estou tentando configurar uma ligação mutt
para canalizar um email para uma chamada ssh
para processar o email em uma máquina remota com um script que exibe alguma saída usando less
. No entanto, isso não funciona, porque less
me fornece toda a saída sem paginação.
Tentando restringi-lo, o que estou essencialmente tentando emular é:
seq 1 100 | less
mas com less
em execução na máquina remota. (Devido ao meu caso de uso de chamar o script em mutt, a seq 1 100
part (representando o email) não pode ser executada na máquina remota, nem a less
part (representando o script com menos) é executada na máquina local. )
Se eu fizer:
seq 1 100 | ssh -t REMOTE_MACHINE less
Eu recebo o aviso "O pseudo-terminal não será alocado porque o stdin não é um terminal." e less
exibe a saída diretamente sem fazer qualquer paginação.
Se eu fizer:
seq 1 100 | ssh -t -t REMOTE_MACHINE less
less
falha com "Nome do arquivo ausente (" menos - ajuda "para ajuda)", então eu acho que sua entrada está perdida.
Eu também tentei adicionar zsh -ic
, sem efeito. Qual é a invocação de ssh
correta para que less
no host remoto possa ler sua entrada padrão e fazer a paginação normalmente?
Editar para tentar responder ao comentário de Gilles abaixo: O problema também ocorre se a invocação less
nos exemplos acima for substituída por um script real. Se eu criar um arquivo executável script.sh
contendo:
#!/bin/bash
exec less
e eu coloco isso em minha casa na máquina local e remota, então os seguintes trabalhos:
seq 1 100 | ~/script.sh
mas o seguinte não (com -t
ou -t -t
ou nenhum):
seq 1 100 | ssh REMOTE_MACHINE less