Доброе утро,
У меня есть файл конфигурации с такими данными:
[hostset 1]
ip = 192.168.122.136
user = test
password =
pkey = ~/.ssh/id_rsa
[hostset 2]
ip = 192.168.122.138
user = test
password =
pkey = ~/.ssh/id_rsa
Я хочу иметь возможность присоединиться к ips любого заданного числа наборов хостов в этой конфигурации файл, если другие значения совпадают, поэтому загруженные и отформатированные данные будут храниться в формате dict, что-то вроде этого:
{
ip: ['192.168.122.136', '192.168.122.138'],
user: 'test',
password: '',
pkey: '~/.ssh/id_rsa',
}
, выполнив что-то вроде:
from configparser import ConfigParser
def unpack(d):
return [value for key, value in d.items()]
def parse(configuration_file):
parser = ConfigParser()
parser.read(configuration_file)
hosts = [unpack(connection) for connection in [section for section in dict(parser).values()]][1:]
return [i for i in hosts]
if __name__ == '__main__':
parse('config.ini')
I можно получить список списков, содержащих элементы файла конфигурации, например:
[['192.168.122.136', 'test', '', '~/.ssh/id_rsa'], ['192.168.122.138', 'test', '', '~/.ssh/id_rsa']]
Тогда мне просто нужен способ сравнения двух списков, и если все элементы похожи, кроме ip, то присоединиться их в список вроде:
[['192.168.122.136','192.168.122.138'], 'test', '', '~/.ssh/id_rsa']
Так что мне просто нужен умный способ сделать это со списком списков без определенной длины c и объединить все подобные списки.