Многопоточность в Python с несколькими циклами for внутри основной функции - PullRequest
0 голосов
/ 29 апреля 2020

Я проверяю, можете ли вы использовать несколько циклов for внутри основной функции согласно приведенному ниже коду. Причина этого в том, что я пытаюсь сохранить эти данные в базе данных. Но во время выполнения кода появляются новые значения, что делает данные несовместимыми между списками. Я использую функцию zip для объединения всех значений списка вместе.

Так что, если я смогу выполнить каждое из них для l oop как отдельный поток, это будет достаточно быстро для получения точных данных.

# Creating empty list to store the values

ana_username = []
publicip = []
privateip = []
bytes_Tx = []
bytes_Rx = []
group_policy03 = []
duration03 = []

def ana():

# SSH Connection parameters

    remote_conn_pre = paramiko.SSHClient()
    remote_conn_pre.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    remote_conn_pre.connect(hostname='10.10.10.10', port=22, username='root',
                            password='*******',
                            look_for_keys=False, allow_agent=False)

    remote_conn = remote_conn_pre.invoke_shell()

# Initiating list of commands

    remote_conn.send('\n')
    remote_conn.send('en\n')
    remote_conn.send(str(password)+ '\n')
    remote_conn.send('conf t\n')
    remote_conn.send('pager 0\n')
    remote_conn.send('end\n')
    time.sleep(1)

    remote_conn.send('sh vpn-sessiondb anyconnect | grep Username\n')
    time.sleep(1)
    policy_user = remote_conn.recv(11111)

    remote_conn.send('sh vpn-sessiondb anyconnect | grep Assigned\n')
    time.sleep(1)
    policy_ip = remote_conn.recv(11111)

    remote_conn.send('sh vpn-sessiondb anyconnect | grep Bytes\n')
    time.sleep(1)
    policy_bytes = remote_conn.recv(11111)

    remote_conn.send('sh vpn-sessiondb anyconnect | grep Group Policy\n')
    time.sleep(1)
    policy_group = remote_conn.recv(11111)

    remote_conn.send('sh vpn-sessiondb anyconnect | grep Duration\n')
    time.sleep(1)
    policy_duration = remote_conn.recv(11111)

# End the SSH session

    remote_conn.send('pager 25\n')
    remote_conn.send('quit\n')


# Create multiple for loops to iterate each grep request in the given policies variables #

# List of usernames

for i in policy_user.decode('utf-8').split('\r\n'):
    if i.startswith('Username'):
        user_slice = i[15:30]
        user_rep = user_slice.replace(" ", "")
        ana_username.append(user_rep)

# List of IP (private and public)

for i in policy_ip.decode('utf-8').split('\r\n'):
    if i.startswith('Assigned'):
        ippriv_slice = i[15:30]
        ippub_slice = i[53:]
        ippriv_rep = ippriv_slice.replace(" ", "")
        privateip.append(ippriv_rep)
        publicip.append(ippub_rep)

# List of data volumes in bytes (tx and rx)

for i in policy_bytes.decode('utf-8').split('\r\n'):
    if i.startswith('Bytes'):
        bytestx_slice = i[15:30]
        bytesrx_slice = i[53:]
        bytestx_rep = bytestx.replace(" ", "")
        bytes_Tx.append(bytestx_rep)
        bytes_Rx.append(bytesrx_slice)

# List of group policy

for i in policy_group.decode('utf-8').split('\r\n'):
    if i.startswith('Group Policy'):
        pol_slice = i[15:30]
        pol_rep = pol_slice.replace(" ", "")
        group_policy03.append(pol_rep)

# List of duration

for i in policy_duration.decode('utf-8').split('\r\n'):
    if i.startswith('Duration'):
        dur_slice = i[15:30]
        dur_rep = dur_slice.replace(" ", "")
        duration03.append(dur_rep)

# Pairing values together

for a,b,c,d,e,f,g in zip(ana_username, privateip, publicip, bytes_Tx, bytes_Rx, group_policy03, duration03):
    print (a, b, c, d, e, f, g)

Ваша помощь очень ценится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...