Python
如何將帶有特殊字元的密碼從ansible發送到Python腳本?
我正在從 ansible playbook 呼叫 python 腳本。在呼叫時,我將憑據作為參數傳遞給 python 腳本。密碼有一些特殊字元。
但是在 Python 腳本中,我收到的密碼沒有特殊字元。所以密碼不正確,我收到未經授權的錯誤。
我在 Ansible 塔中擁有此證書。所以我將 ansible playbook 和 python 腳本都保存在 Git 中,並在 Ansible Tower 中作為作業執行。
- hosts: localhost gather_facts: false vars: username: '{{ lookup("env","CREDS_TEST_PWD_USERNAME") }}' password: '{{ lookup("env","CREDS_TEST_PWD_PASSWORD") }}' tasks: - debug: var=password - name: Invoking python script script: python_script.py {{username}} {{password}} args: executable: python register: user_response delegate_to: perbhd01 - debug: var=user_response
以上是呼叫 python 腳本的 Ansible 劇本。假設實際的使用者名和密碼是“ADMIN”和“Oracle$123!”。但是我在 Python 腳本中得到的是“ADMIN”和“Oracle123!”
這就是我在 python 腳本中檢索憑據的方式。
import requests import json import warnings import sys user_name=sys.argv[1] password=sys.argv[2] print (password +"****from ansible****")
如果您對我面臨的這個問題有任何想法,請告訴我。
像這樣再添加一個變數“credential_password”並執行劇本。這個 regex_escape() 將有助於轉義特殊字元。
username: '{{ lookup("env","CREDS_TEST_PWD_USERNAME") }}' password: '{{ lookup("env","CREDS_TEST_PWD_PASSWORD") }}' credential_password: "{{ password | regex_escape() }}"