Ao usar o expect: o terminal de transporte SSHFS não está conectado

5

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:

  1. Eu já chamei pela primeira vez: fusermount -u mount_location
  2. Existe algo sobre spawn criando um novo processo, talvez o processo sshfs feche prematuramente? (Existe alguma maneira de garantir que o processo do sshfs permaneça aberto?)
por user2533809 29.07.2014 / 02:03

2 respostas

0

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?

    
por 09.10.2014 / 21:55
0

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.

    
por 30.07.2014 / 03:22