我的代码到达这一行时抛出错误:
{% set encrypted_password = salt['cmd.run']('openssl enc -aes-128-cbc -a -salt -md md5 -in <(echo -n "' + ssm_plaintext_password +'") -pass pass:'+random_password) %}
错误:
[ERROR ] Command '[u'openssl', u'enc', u'-aes-128-cbc', u'-a', u'-salt', u'-md', u'md5', u'-in', u'<(echo', u'-n', u'g0vknM6a%,)', u'-pass', u'pass:zHwhIwKesJVXZO9taCHuEVGSPTW3J95g']' failed with return code: 1
[ERROR ] stdout: unknown option '-n'
但是当我运行命令时openssl enc -aes-128-cbc -a -salt -md md5 -in <(echo -n "g0vknM6a%,") -pass pass:zHwhIwKesJVXZO9taCHuEVGSPTW3J95g它为我提供了输入。
我正在执行这个亚马逊Linux2基于实例具有Python3和salt-call 2019.2.0(氟)。这是由于任何二进制版本的变化,因为此代码完美地与亚马逊 Linux1
答案1
我在这里找到了解决方案:https://github.com/saltstack/salt/issues/44226。
我用 cmd.shell 替换了 cmd.run,这对我来说很好用。
答案2
将python_shell=True
选项添加到cmd.run
。