Предпочтительный способ автоматического обновления файла конфигурации SSH с помощью Python?

Я использую Fabric для автоматизации некоторых из моих рабочий процесс, большая часть которого связана с манипулированием экземплярами EC2.

Я ищу способ поддерживать мой файл .ssh / config в актуальном состоянии, так как я регулярно включаю и выключаю экземпляры EC2, и мне очень полезно, если я могу использовать ssh в них легко для отладки и так далее.

Записи в моем файле конфигурации SSH выглядят следующим образом

Host ins_id
Hostname xxxxxxxx.com
User ubuntu
IdentityFile ~/.ssh/kp.pem

На данный момент я делаю что-то вроде следующего (используя Fabric и boto ), то есть откровенно чушь подход:

def my_cool_spin_up_function(self):
    . . .
    . . .
    ssh_conf = os.path.join(homedir, '.ssh/config')
    ssh_info = '\n'.join(['Host %s'         % name,
                          'Hostname %s'     % ins.dns_name,
                          'User %s'         % env.user,
                          'IdentityFile %s' % kp_loc,
                          '\n'])
    w_com = 'echo %s | cat - %s | tee %s > /dev/null' % (ssh_info, ssh_conf, ssh_conf)
    local(w_com)

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

Мне интересно, есть ли какие-нибудь библиотеки Python, которые позволяют рассматривать .ssh / config как нечто большее, чем файл конфигурации, соответствующие части которого могут быть обновлены по мере необходимости. Например, было бы замечательно, если бы вы могли просто рассматривать .ssh / config как словарь и абстрагироваться от чтения / записи файла. . .

Спасибо за любые предложения!

6
задан tom 28 January 2018 в 23:10
поделиться