【问题标题】:Hiding output to command prompt for send command将输出隐藏到命令提示符以发送命令
【发布时间】:2016-08-10 11:29:08
【问题描述】:

我正在使用命令通过 ssh 连接到远程服务器

spawn ssh userId@host
expect "password:"
send "password\r"

有时会出现问题,即使在 shell 提示输入密码之前,发送命令也会运行,导致密码在控制台上以纯文本形式显示。

有办法

  1. 确保,send 总是在 expect 之后调用
  2. 或者如果它被调用,它应该显示类似*******而不是纯文本

我阅读了send 的文档,但没有运气。

【问题讨论】:

  • sshpass -p "YOUR_PASSWORD" ssh -o StrictHostKeyChecking=no YOUR_USERNAME@SOME_SITE.COM ? stackoverflow.com/questions/12202587/…
  • 如果可能,请使用公钥身份验证在没有密码的情况下登录,而不是在脚本中公开您的密码(sshpassexpect 都这样做)。
  • 这绝不是bash 的问题。 expect 是它自己的、基于 TCL 的语言——当你运行 expect 时,你不再使用 bash。

标签: shell expect


【解决方案1】:

您可以使用sttylog_user 隐藏控制台的输出。

使用stty

spawn ssh userId@host
expect "password:"
stty -echo
send "password\r"
stty echo

使用log_user

spawn ssh userId@host
expect "password:"
log_user 0
send "password\r"
log_user 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多