Код: Выделить всё
...
def easyrsa_gen_req(self):
variables = self.__set_env()
try:
command = (
f"{self.easyrsa_binary} gen-req {self.email} "
f"--passin env:EASYRSA_PASSIN "
f"--passout env:EASYRSA_PASSOUT"
)
proc = subprocess.Popen(
command, shell=True, stdin=subprocess.PIPE,
stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=variables
)
stdout, stderr = proc.communicate()
print(f"OUT: {stdout.decode()}")
print(f"ERROR: {stderr.decode()}")
return True, self.user_password
except:
import traceback
traceback.print_exc()
return False, None
...
Код: Выделить всё
...
def __set_env(self):
env_vars = os.environ.copy()
variables = self.conf['easyrsa']['env_vars']
for variable in variables:
if "$PASSWORD$" in variable['value']:
variable['value'] = self.conf['easyrsa']['password']
if "$USERPASS$" in variable['value']:
variable['value'] = self.user_password
env_vars[variable['key']] = variable['value']
return env_vars
...
Код: Выделить всё
...
"env_vars": [
{"key": "EASYRSA_BATCH", "value": "1"},
{"key": "EASYRSA_REQ_CN", "value": "vpn.me.dev"},
{"key": "EASYRSA_PASSIN", "value": "$PASSWORD$"},
{"key": "EASYRSA_PASSOUT", "value": "$USERPASS$"}
],
...
Я пробовал заменить --pass(out|in) с паролем:паролем для каждого, а также просто полностью удалив его и добавив в переменные env. Это по-прежнему запрашивает у меня пароль независимо от того, что я делаю. Я ожидаю, что он примет переменные passin и passout и будет использовать их вместо запроса.
Код: Выделить всё
$ python test.py
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
OUT:
ERROR: Generating a RSA private key
...............................+++++
..............+++++
writing new private key to '/mnt/c/Users/saman/bin/python/loader/vpn_backend/test_dir/openvpn-ca/pki/private/my.key.uLL8vZbMrF'
-----
True tns-y+0kTu6839V_BCIjvnK
Подробнее здесь: https://stackoverflow.com/questions/793 ... pem-phrase
Мобильная версия