当我从 bash 运行 SSHFS 连接脚本时,一切正常。
但是,当我使用该实用程序运行相同的脚本时expect
,当我尝试访问文件夹安装位置时,出现以下错误:
Transport endpoint is not connected
这是我的期望脚本:
#!/usr/bin/expect -f
spawn standard_sshfs_connection_string_or_script
expect "password: "
send "my_password\r"
问:有任何想法吗?
笔记:
- 我首先已经打电话过:
fusermount -u mount_location
- 是否有关于
spawn
创建新进程的问题,也许 sshfs 进程过早关闭? (有什么方法可以确保 sshfs 进程保持打开状态吗?)
答案1
我不确定 的输出sshfs
是否被捕获expect
。这可能是您的问题 - 脚本终止而不发送密码,这会导致您描述的问题。
另一种可能的情况是,sshfs
实际上正在向您发送输出user@domain password:
,而预期可能不喜欢它。
然而,这确实不是解决问题的好方法。您的密码在该脚本中以纯文本形式显示!
您是否考虑过使用公钥身份验证?看一眼这个 git 例子如果你不知道它是如何工作的。
答案2
我还没有尝试过,但也许我需要在send
命令后添加以下行:
expect "$ "
等待程序完全退出。
另一个想法:也许当expect退出/关闭时,所有子进程也会终止?