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