@ -3,22 +3,16 @@ import paramiko
from time import sleep
def gen_certs ( client , ip ) :
if " ou tput " not in os . listdir ( ) :
os . mkdir ( " ou tput " )
if " tem p" not in os . listdir ( ) :
os . mkdir ( " tem p" )
priv_key = paramiko . RSAKey . from_private_key_file ( f " { os . environ [ ' USERPROFILE ' ] } { os . sep } .ssh { os . sep } id_rsa " )
with paramiko . SSHClient ( ) as ssh_client :
ssh_client . set_missing_host_key_policy ( paramiko . AutoAddPolicy ( ) )
ssh_client . connect ( hostname = f " { ip } " , username = " root " , pkey = priv_key )
ssh_client . exec_command ( f " EASYRSA_BATCH=1 EASYRSA_PKI=/etc/openvpn/pki easyrsa build-client-full { client } nopass " )
#Мой юный друг, наверняка у тебя возник вопрос "А нахуя тут sleep?" Отвечаю
#Скрипт выполняется быстрее команды, отправленной на сервер, поэтому при попытке (А Х А Х А Х А Х А Х ПОПЫТ) скачать файл скрипт е г о не находит
#Наверняка следующий вопрос "А нет ли более изящнного решения?" Отвечаю
#Н е е б у , если знаешь - напиши мне
sleep ( 2 )
_ , stdout , _ = ssh_client . exec_command ( f " EASYRSA_BATCH=1 EASYRSA_PKI=/etc/openvpn/pki easyrsa build-client-full { client } nopass " )
stdout . read ( )
with ssh_client . open_sftp ( ) as scp_client :
#Н у и конечно же будет вопрос "А не будет ли мешанины из конфигов и в чем тогда прикол твоей проги если нужно будет тратить время на поиск сертификатов и конфига к клиенту?" Отвечаю
#Вот это всё говно потом будет сохранятся в папку temp, а там уже архивироваться и отправляться в output в zip архиве (ЗИП ФАЙЛ кстати). Почему сразу нормально не сделать? Н е е б у , спроси у Flask какого хуя он падает
scp_client . get ( f " /etc/openvpn/pki/private/ { client } .key " , f " output/ { client } .key " )
scp_client . get ( f " /etc/openvpn/pki/issued/ { client } .crt " , f " output/ { client } .crt " )
scp_client . get ( f " /etc/openvpn/pki/ca.crt " , f " output/ca.crt " )
scp_client . get ( f " /etc/openvpn/keys/ta.key " , f " output/ta.key " )
scp_client . get ( f " /etc/openvpn/pki/private/ { client } .key " , f " temp/ { client } .key " )
scp_client . get ( f " /etc/openvpn/pki/issued/ { client } .crt " , f " temp/ { client } .crt " )
scp_client . get ( f " /etc/openvpn/pki/ca.crt " , f " temp/ca.crt " )
scp_client . get ( f " /etc/openvpn/keys/ta.key " , f " temp/ta.key " )