2015-04-23 2 views
0

Мне нужно подключиться к нескольким серверам с помощью ssh и выполнять разные команды для каждого из них в разных точках скрипта.Создавать функции или наследовать от paramiko class?

Это код для SSH соединений Я использую:

ssh = paramiko.SSHClient() 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
ssh.connect(host, key_filename=keypriv, timeout=10) 
stdin, stdout, stderr = ssh.exec_command("vgdisplay -v -F | grep -v 'vg_status=deactivated'") 
vgdata = stdout.readlines() 

Как я собираюсь открыть несколько соединений и выполнить несколько команд. Я думаю о создании нового класса, который наследует от paramiko и добавлять некоторые функции (создавать, закрывать и исполнять) или создавать новый класс без наследования от paramiko.

Есть ли какой-нибудь способ pythonist для решения этой проблемы?

ответ

2

Я думаю, что вопрос, который вы зададите себе, это «Composition over Inheritance»?

Этот вопрос в основном сводится к вопросу о том, есть ли у вас отношения «есть» или «есть-а». В вашем случае это «имеет» отношения, так как класс, который вы создаете, делает что-то с соединение paramiko, а не как соединение.

Я не совсем уверен, что эти create, execute и close методы собираются делать, но это звучит для меня, как «менеджер соединений» или некоторых удобных методов, для которых композиция будет правильным выбором на мой взгляд.

Смежные вопросы