使用expect时:SSHFS传输端点未连接

使用expect时:SSHFS传输端点未连接

当我从 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"

问:有任何想法吗?

笔记:

  1. 我首先已经打电话过:fusermount -u mount_location
  2. 是否有关于spawn创建新进程的问题,也许 sshfs 进程过早关闭? (有什么方法可以确保 sshfs 进程保持打开状态吗?)

答案1

我不确定 的输出sshfs是否被捕获expect。这可能是您的问题 - 脚本终止而不发送密码,这会导致您描述的问题。

另一种可能的情况是,sshfs实际上正在向您发送输出user@domain password:,而预期可能不喜欢它。

然而,这确实不是解决问题的好方法。您的密码在该脚本中以纯文本形式显示!

您是否考虑过使用公钥身份验证?看一眼这个 git 例子如果你不知道它是如何工作的。

答案2

我还没有尝试过,但也许我需要在send命令后添加以下行:

expect "$ "

等待程序完全退出。

另一个想法:也许当expect退出/关闭时,所有子进程也会终止?

相关内容