Назад | Перейти на главную страницу

Как отправить пароль со специальными символами из недоступного в скрипт Python?

Я вызываю скрипт Python из доступной книги. При вызове я передаю учетные данные скрипту python в качестве аргументов. В пароле есть специальные символы.

Но в скрипте Python я получаю пароль без специальных символов. Таким образом, пароль становится неверным, и я получаю несанкционированную ошибку.

У меня есть эти учетные данные в Ansible Tower. Итак, я сохранил как 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 

Выше показан сценарий Ansible, который вызывает скрипт Python. Скажите, что фактическое имя пользователя и пароль - «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, подобную этой, и запустите playbook. Этот regex_escape () поможет избежать специальных символов.

username: '{{ lookup("env","CREDS_TEST_PWD_USERNAME") }}'
password: '{{ lookup("env","CREDS_TEST_PWD_PASSWORD") }}'
credential_password: "{{ password | regex_escape() }}"