No seu primeiro cenário (reiniciando do login ssh): Se o seu dispositivo está realmente reinicializando, então todos os processos são eliminados, incluindo aquele conectado ao seu cliente ssh. Você não precisa fazer o login após uma reinicialização para matar processos antigos, já que eles não podem existir! Eu suspeito que seu cliente ssh não esteja manipulando gentilmente o fechamento forçado da conexão no lado remoto, e por isso ele trava. Você deve poder apenas fechar / matar em seu sistema local.
Desculpe, não sei muito sobre expect
, então não tenho conselhos sobre seus problemas específicos. No entanto, se você quiser fazer o script de uma reinicialização remota, pode ser possível configurar o login do ssh sem senha por meio de um arquivo de chaves e, em seguida, fazer apenas ssh root@mydevice reboot
.