automatizar configurações SSH com python

Eu uso muito o sshconfigs. É sempre bom conectar uma conexão ssh com configuração personalizada apenas com “ssh host_name”.

recentemente, lancei um utilitário de linha de comando para lidar com configurações de ssh. Ele não traz coisas mágicas em comparação com vim ~ / .ssh / config. Mas eu gosto mais dessa forma, e comandos como list / search seriam muito úteis se você tiver muitos servidores em sua configuração de ssh.

após o lançamento, muitas pessoas pediram para usá-lo como uma biblioteca em vez de uma ferramenta de linha de comando. Então, aqui está, uma pequena documentação sobre como usar o Storm como uma biblioteca Python (felizmente, ele foi desacoplado o suficiente para usá-lo dessa forma).

instalação


pip install stormssh
</code></pre>
initialization:


from storm import ssh_config

sconfig = ssh_config.ConfigParser("/home/emrebey/.ssh/config")
sconfig.load()

</code></pre>

get the raw config

output:


[{
'host': 'vps',
'type': 'entry',
'options': {
'hostname': 'emreyilmaz.me',
'user': 'root',
'port': '22'
},
'order': 1
}, {
'host': 'netscaler',
'type': 'entry',
'options': {
'hostname': 'netscaler.com',
'user': 'root',
'port': '22'
},
'order': 2
}
]

</code></pre>

add a host to config

sconfig.add_host('name', {
'user': 'user',
'hostname': 'hostname.com',
'port': 2400,
})

sconfig.writetossh_config() # save it to the config
</code></pre>

modify a host


sconfig.update_host('name', {
'user': 'root',
'hostname': 'root.com',
'port': 22,
})

</code></pre>

deleting a single host by name

from storm.exceptions import StormValueError
try:
sconfig.delete_host('name')
except StormValueError:
pass
</code></pre>

delete all hosts

sconfig.deleteallhosts()
</code></pre>

searching hosts

print sconfig.search_host('vps')
</code></pre>

output:

[{
'host': 'vps',
'type': 'entry',
'options': {
'hostname': 'emreyilmaz.me',
'user': 'emre',
'port': '22'
},
'order': 1
}, {
'host': 'vps_backup',
'type': 'entry',
'options': {
'hostname': 'emreyilmaz.me',
'user': 'root',
'port': '24'
},
'order': 2
}
]
</code></pre>

browse ssh_config.py for more.