sshfs 未在期望脚本中使用密码

标签 ssh expect

我编写了一个小脚本来为 sshfs 提供密码,但由于某种原因 sshfs 没有获取密码。任何指针? (PS 我知道 ssh key 更好/更安全,但我工作的政治环境阻止在目标服务器上设置基于 key 的身份验证 - 叹息......)。

#!/usr/bin/expect
# NOT WORKING!!
exp_internal 1
spawn sshfs server:/export/pc_storage /home/sonia/mnt/server
expect {
    "assword:" {
        send "secret\r\r"
        send_user "\n"
    }
    timeout {
        send_user "timed out!\n"
     }
}

要终止密码,我试过\r\n\r\r - 没有用。

调试输出,显示密码提示正在触发:

spawn sshfs server:/export/pc_storage /home/sonia/mnt/server
parent: waiting for sync byte
parent: telling child to go ahead
parent: now unsynchronized from child
spawn: returns {17532}

expect: does "" (spawn_id exp6) match glob pattern "assword:"? no
pcuser@server's password: 
expect: does "pcuser@server's password: " (spawn_id exp6) match glob pattern "assword:"? yes
expect: set expect_out(0,string) "assword:"
expect: set expect_out(spawn_id) "exp6"
expect: set expect_out(buffer) "pcuser@server's password:"
send: sending "secret\r\r" to { exp6 }

% uname -a
Linux zapote 2.6.38-10-generic-pae #46-Ubuntu SMP Tue Jun 28 16:54:49 UTC 2011 i686 i686 i386 GNU/Linux

% sshfs -V
SSHFS version 2.2
FUSE library version: 2.8.4
fusermount version: 2.8.4
using FUSE kernel interface version 7.12

已解决:

(我无法发布答案,因为我没有 100 分 - 双重叹息)

我需要稍微修复一下...例如,我将 .bashrc 中的 PS1 硬编码为“bash_prompt”(我默认使用 zsh)。

#!/usr/bin/expect

# FIX: get homedir from env, set bash prompt somehow...

set timeout 30

spawn /bin/bash
expect "bash_prompt"
send_user "Shell spawned.\n"

send -- "sudo umount /home/sonia/mnt/server &> /dev/null\r"
expect "bash_prompt"

send -- "sshfs server:/export/pc_storage /home/sonia/mnt/server\r"
expect {
    "assword:" {
        send "secret\r"
        send_user "\n"
    }
    timeout {
        send_user "timed out!\n"
    }
}
expect "bash_prompt"

最佳答案

您可以直接提供密码,而不是使用 Expect。 试试这个:

echo your-password | sshfs server:/export/pc_storage /home/sonia/mnt/server -o password_stdin

不确定您是否可以使用您的密码策略进行此操作,但值得一试。

关于sshfs 未在期望脚本中使用密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7118101/

相关文章:

bash - 在 bash 脚本中期待

regex - linux期待命令

linux - 使用expect通过ssh和密码传输命令

linux - 使用 Mercurial 必须使用 Mercurial Server 吗?

mysql - 如何在交互式输入的自动 bash 脚本中发送存储值而不是别名

linux - 如何在后台运行 eval spawn ssh 和 expect?

linux - 转义 linux shell 参数

emacs - 在 Emacs TRAMP 模式下刷新远程目录

c# - 如何添加到我的 C# 项目 SSH.NET 库?

vim 在 tmux 上通过 ssh 滚动缓慢