【问题标题】:Expect script with encrypted passwords returning string with single quotes期望带有加密密码的脚本返回带有单引号的字符串
【发布时间】:2022-01-17 23:46:23
【问题描述】:

我正在尝试使用期望脚本从 cisco 设备中提取配置。不要问客户为什么不使用标准工具。

我的问题是他们希望在会话中使用加密密码。我可以将密码加密并加盐到文件中,然后在期望脚本中使用 cat 将密码提取到变量中……请参见下面的代码,但是,exec 命令将字符串值放入单引号中。期待脚本,我认为将单引号区别为双引号,当然也不像字符串。

我可以通过将原始密码作为替代品放入脚本中来验证其余代码是否有效,如果我使用“puts”来显示它显示的变量 '密码'

正如我所说,我的想法是 exec 命令然后将字符串放回原处,并在它们周围加上单引号。

我已经尝试将 SED 和 TR 通过管道传输到命令字符串的末尾,但仍然给出了与我预期相同的结果。

任何想法

set salt "mrsalty"
set admincmd "cat /mrpwd.txt | openssl enc -aes-256-cbc -md sha512 -a -d -salt -pass pass:$salt"
set password [ exec sh -c $admincmd ]

【问题讨论】:

  • expect 是 tcl 扩展,单引号在 tcl 中没有特殊含义(不像双引号),是的。 exec 命令不会在执行的命令返回的内容周围添加任何内容。
  • 你可以只使用set password [exec cat /mrpwd.txt | openssl enc -aes-256-cbc -md sha512 -a -d -salt -pass pass:$salt] btw。
  • 或者,没有猫 set password [exec openssl enc -aes-256-cbc -md sha512 -a -d -salt -pass pass:$salt -in /mrpwd.txt]

标签: bash openssl exec expect


【解决方案1】:

(这不是一个真正的答案,更像是一个很长的格式化评论)

exec 命令将字符串值放在单引号中

不,它没有。 一个演示:

首先,在shell中创建一个加密的密码文件

$ salt=mrsalty
$ echo MyPass1234 | openssl enc -aes-256-cbc -md sha512 -a -e -salt -pass pass:$salt > pw.encrypted
$ cat pw.encrypted
U2FsdGVkX18bFSAmQbXqGjeSBVtE8AzJ2K8Lif4muB8=

期待中

expect1.1> set salt mrsalty
mrsalty
expect1.2> set file pw.encrypted
pw.encrypted
expect1.3>  set password [exec openssl enc -aes-256-cbc -md sha512 -a -d -salt -pass pass:$salt -in $file]
MyPass1234

那里没有单引号。

即使将命令存储在变量中并使用 sh

expect1.4>  set admincmd "cat $file | openssl enc -aes-256-cbc -md sha512 -a -d -salt -pass pass:$salt"
cat pw.encrypted | openssl enc -aes-256-cbc -md sha512 -a -d -salt -pass pass:mrsalty
expect1.5> set password [exec sh -c $admincmd]
MyPass1234

你如何在期望代码中使用 $password?

【讨论】:

  • 谢谢,事实上你的评论促使我从头开始,我注意到事实上,我被发送来创建加盐/加密密码文件的原始文本带有错误的引号,这意味着文件中的密码本身有引号。 . PIBKAC 错误,非常抱歉。
  • 请更新您的问题,或提供答案,以便未来的读者不必通过完整的问题和答案来发现这是一个错字。
猜你喜欢
  • 1970-01-01
  • 2017-01-22
  • 1970-01-01
  • 1970-01-01
  • 2015-11-28
  • 2015-11-13
  • 2014-11-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多