从变量列的文本文件创建python字典

2024-09-28 05:26:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我的基本要求是将数据馈送到一个API,该API在一个数据库上创建和删除用户系统API有自己的格式,它将采用数据API有两个步骤:

  1. 连接到系统
  2. 根据输入文件中的数据创建/删除用户

输入数据格式如下:

Device1 192.168.1.2 NEW:jason:OPERATOR NEW:kylie:ADMINISTRATOR DELETE:ron:OPERATOR
Device2 10.12.34.12 NEW:kim:OPERATOR DELETE:joe:USER_ROLE_GUEST 
Device3 12.3.21.45 
Device4 8.21.34.25 DELETE:alex:USER_ROLE_GUEST

API格式如下(第一行数据的示例):

b = bigsuds.BIGIP(hostname = '192.168.1.2', username = 'admin', password = 'letmein') 

b.Mgmt.UserMgmt.create_user([{'user': {'name': 'jason'}, 
                          'password': {'password': 'letmein'}, 
                          'permissions': [{'role': 'USER_ROLE_GUEST'}], 
                          'login_shell': '/sbin/nologin'},
                         {'user': {'name': 'kylie'}, 
                          'password': {'password': 'letmein'}, 
                          'permissions': [{'role': 'ADMINISTRATOR'}], 
                          'login_shell': '/sbin/bash'}])
b.Mgmt.UserMgmt.delete_user(['ron'])

密码总是固定的价值观登录shell值由以下字典决定:

find_shell = {'USER_ROLE_GUEST':'/sbin/nologin', 'OPERATOR':'/var/tmp', 'ADMINISTRATOR':'/sbin/bash'}

我想要的是循环遍历文件的每一行,连接到IP地址,执行添加或删除,或者完全跳过IP(如果没有要添加或删除的用户)。这最好由我使用readlines()完成,将其拆分为列,然后使用列索引执行必要的操作操作。但是,这里的列长度不是固定。分开前两列总是固定的,从示例数据可以明显看出,其余的列总是固定的变化。什么最理想的方法是什么?你知道吗


Tags: 数据用户apinewpasswordshelldeleteoperator
1条回答
网友
1楼 · 发布于 2024-09-28 05:26:52

可能是这样的:

with open(filename) as file:
   input_data = file.readlines()

for line in input_data:
   columns = line.strip().split(' ')
   if len(columns)<3:
      continue
   device = columns[0]
   IP_address = columns[1]
   actions = columns[2:]
   open_connection(IP_address) #whatever this may be
   for action in actions:
      perform_action(action) #whatever this may be

如果前两列是固定的,那么列[2:]将包含您应该执行的命令。只要确保你过滤的情况下,你只有2列。你知道吗

你不需要专门的字典来把行分成列。你知道吗

相关问题 更多 >

    热门问题