Я проверяю, можете ли вы использовать несколько циклов 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)
Ваша помощь очень ценится.