【发布时间】: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]