Não tenho certeza se recebo o problema corretamente. Mas basta gerar o script no lado local, copiá-lo via scp e depois executá-lo com o ssh deve ser muito mais fácil.
Se você quiser executá-lo com o ssh, use esta sintaxe:
ssh localhost -C "echo test; echo blub"
EDITAR : Ok, finalmente encontrei o problema no seu script. O comando $ está executando o seu "comando" dentro do loop "while read", e enquanto comandos locais como "echo" ou "tar -f" (o -f é importante pois pega um FILE e nenhuma entrada de stdin) tudo funciona como um charme.
Por outro lado, oSSH tenta criar uma sessão "interativa" onde a entrada do seu teclado é encaminhada para a outra máquina. O problema agora é que ele lê todos os "dados de espera" do redirecionamento "< $ INPUT_FILE" e os envia para o host ssh.
Você pode realmente ver esse comportamento. Tente adicionar um comando como:
ssh user@host tee flush.txt
Tee agora está redirecionando o "resto" de seu $ INPUT_FILE para o arquivo de hosts remotos "flush.txt". Então, da próxima vez que passarmos "pronto", não há mais nada para consumir para "ler".
Para consertar este comportamento, você simplesmente tem que dizer $ command para obter a entrada de algo como / dev / null.
$command < /dev/null
consertará seu problema.