O problema com o telnet é que, uma vez que ele lê o fim do arquivo, ele fechará a conexão e você não verá nenhuma saída. Um truque simples é manter a entrada aberta por algum tempo extra, por exemplo:
(cat cmds; sleep 15) | ssh root@cc1 telnet MyHost
Obviamente, esta não é uma solução robusta, então você deve usar algo que seja capaz de detectar quando o controle remoto terminar, por exemplo, expect
. O exemplo a seguir espera que o script implemente uma conversa típica de telnet sobre ssh envolvendo um login para myusername
com a senha mypassword
e enviando o comando ls -l
para um prompt $<space>
shell:
#!/usr/bin/expect
spawn ssh root@cc1 telnet -l myusername myhost
expect Password:
send "mypassword\r"
expect {$ }
send "ls -l\r"
expect {$ }
send "exit\r"
expect eof