Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 263

торые позволят пакету запускаться с помощью Python 3. Если все пройдет успешно, при-

меры, приведенные далее, будут работать. В противном случае вам придется запускать их

с помощью Python 2.

338

Глава 11. Конкуренция и сети

Для начала установим пакет fabric с помощью следующей команды:

$ pip2 install fabric

Вы можете запустить код локально из файла fabric непосредственно, без ис-

пользования SSH. Сохраните первый файл под именем fab1.py:

def iso():

from datetime import date

print(date.today().isoformat())

Далее введите следующую команду, чтобы запустить его:

$ fab -f fab1.py -H localhost iso

[localhost] Executing task 'iso'

2014-02-22

Done.

Опция -f fab1.py указывает использовать файл fabric fab1.py вместо варианта

по умолчанию fabfile.py. Опция -H localhost указывает запустить команду на вашем

локальном компьютере. Наконец, iso — это имя функции, которую нужно запустить.

Она сработает точно так же, как и в рассмотренном нами примере, где использова-

лись RPC. Вы можете найти большее количество опций на сайте с документацией

(http://docs.fabfile.org/).

Для того чтобы запускать внешние программы на локальной или удаленной

машинах, вам нужно запустить SSH-сервер. В системах семейства Unix этот сервер

называется sshd; команда service sshd status скажет вам, запущен ли сервер, а ко-

манда service sshd start запустит его при необходимости. В операционных системах

Mac откройте пункт меню System Preferences, щелкните на вкладке Sharing, а затем

установите флажок Remote Login. Операционная система Windows не имеет встро-

енной поддержки SSH, вам стоит установить putty (http://bit.ly/putty-ssh).

Сейчас мы снова используем имя функции iso, но в этот раз заставим ее запускать

команду с помощью метода local(). Так выглядят команда и результат ее работы:

from fabric.api import local

def iso():

local('date -u')

$ fab -f fab2.py -H localhost iso

[localhost] Executing task 'iso'

[localhost] local: date -u

Sun Feb 23 05:22:33 UTC 2014

Done.

Disconnecting from localhost... done.

Удаленный двойник функции local() — функция run(). Так выглядит файл fab3.py:

from fabric.api import run

def iso():

run('date -u')

Сети

339

Применение функции run() указывает fabric использовать SSH для того, чтобы

связаться с указанными в командной строке хостами, поскольку была указана

опция -H (показано в следующем примере). В противном случае будет использован