Eu não tentei, mas talvez eu precise ter a seguinte linha após o comando send
:
expect "$ "
para esperar que o programa saia totalmente.
Outra ideia: talvez quando esperar saídas / fechamentos, todos os processos filhos também terminem?
Quando executo meu script de conexão SSHFS do bash, tudo funciona perfeitamente.
No entanto, quando executo o mesmo script usando o utilitário expect
, recebo o seguinte erro ao tentar acessar o local de montagem da pasta:
Transport endpoint is not connected
Este é o meu script esperado:
#!/usr/bin/expect -f
spawn standard_sshfs_connection_string_or_script
expect "password: "
send "my_password\r"
Q: Alguma idéia?
Nota:
fusermount -u mount_location
spawn
criando um novo processo, talvez o processo sshfs feche prematuramente? (Existe alguma maneira de garantir que o processo do sshfs permaneça aberto?) Eu não tentei, mas talvez eu precise ter a seguinte linha após o comando send
:
expect "$ "
para esperar que o programa saia totalmente.
Outra ideia: talvez quando esperar saídas / fechamentos, todos os processos filhos também terminem?
Não sei se a saída de sshfs
foi capturada em expect
. Este pode ser o seu problema - o script termina sem enviar a senha, o que causaria o problema que você descreve.
Outro cenário possível é que sshfs
está realmente enviando a saída user@domain password:
, e a expectativa pode não gostar disso.
No entanto, isso não é uma boa maneira de lidar com o problema. Sua senha está em texto simples dentro desse script!
Já pensou em usar a autenticação por chave pública? Dê uma olhada em este exemplo de git se você não souber como funciona.