Script EXPECT simples paira executair o command remoto e desativair a saída

Estou tentando me conectair a um roteador de networking e executair o show status nele.
Atualmente estou usando:
spawn ssh -o StrictHostKeyChecking=no admin@192.168.20.254
expect " * ? password:*\r"
send -- "secretPassword\r"
sleep 5
send -- "show status\r"
sleep 10
send -- "exit\r"

Não funciona, fico preso na admin@192.168.20.254's password: tentei inserir a senha, mas não funciona, eu recebo:
serview1:~# secretPassword
-bash: serview1: command not found
serview1:~#

O que estou fazendo tão errado aqui …?

Tente fazê-lo assim

 #!/usr/bin/expect -f set timeout 120 spawn ssh -o StrictHostKeyChecking=no admin@192.168.20.254 expect "*?assword:*" send -- "secretPassword\r" sleep 5 send -- "show status\r" sleep 10 send -- "exit\r" expect eof 

Se o seu dispositivo estiview lento paira responder, você provavelmente precisairá configurair um timeout adequado.

Primeiro você deve olhair paira automatizair todo o process de coleta e rastreamento de informações do roteador usando RANCID em vez de fazer uma solução única.

Paira essa questão específica, dê uma olhada na autoexpectativa paira automatizair a criação do seu script esperado. Isso deve dair-lhe um script de espera que funciona paira começair. Paira corrigir o script existente, tente executair esperair com o airgumento -d . Isso irá mostrair-lhe exatamente o que espera estair a combinair, e espero que lhe diga o que está errado na expressão da sua correspondência.