O PuTTY não sabe quando um comando remoto está aguardando entrada. No que diz respeito ao terminal (ou ao cliente SSH), a entrada pode sempre ser enviada. (Mesmo tentando adivinhar com base no texto mostrado é inútil, uma vez que muitas exibições de progresso são indistinguíveis para um computador a partir de prompts de entrada.)
Dadas as suas necessidades, a única opção que posso imaginar é uma biblioteca LD_PRELOAD
que imprime um sino sempre que qualquer programa tenta ler de um dispositivo tty. Algo como:
#define _GNU_SOURCE
#include <dlfcn.h>
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count) {
static ssize_t (*real_read)(int fd, void *buf, size_t count);
if (isatty(fd))
write(fd, "\a", 1);
if (!real_read)
real_read = dlsym(RTLD_NEXT, "read");
return real_read(fd, buf, count);
}
(Bem, não funciona para nenhum binário ligado estaticamente, mas perto o suficiente.)
Então, novamente, se um comando espera por uma entrada, então é por definição que não foi feito , então os requisitos são um pouco contraditórios.