Я управляю множеством друпальных сайтов и пытаюсь автоматизировать некоторые вещи с помощью drush. Drush run локально вызывает drush на удаленном хосте через ssh, используя параметры, указанные в конфигурации для псевдонима сайта. Я делаю довольно много этих вызовов, поэтому для ускорения я использую постоянные ssh-соединения с ssh config следующим образом:
Host *
# see http://www.revsys.com/writings/quicktips/ssh-faster-connections.html
ControlMaster auto
ControlPath ~/tmp/%r@%h:%p
ControlPersist 3600
Я получаю ускорение, но я также получаю такие сообщения:
$ drush @alias drupal-directory webform
/var/local/www/example.com/htdocs/sites/all/modules/contrib/webform
Shared connection to 12.34.56.78 closed.
Сообщение об общем подключении находится на stdout вместе с желаемым выводом (серьезно? Почему не stderr?), Поэтому возникают проблемы при попытке записать вывод в моих сценариях:
directory=$(drush @$alias drupal-directory $module)
Я ожидаю, что мастер-соединение будет тем, которое у меня уже было открыто, и оно не выглядит как закрытое. Так может быть, drush явно делает это новое соединение основным и закрывает его? В любом случае, есть ли способ подавить сообщение о закрытии соединения?
[Эта проблема в контексте drupal / drush, но я думаю, что это в основном ssh. Это правильный сайт тогда?]
РЕДАКТИРОВАТЬ:
Похоже, проблема связана с тем, где используется -t
опция ssh. Я использую это, потому что svn-пароли необходимо вводить в разных точках, а без них -t
запросы пароля не отображаются. Может быть, есть еще один способ остановить потерю этих подсказок?
directory=$(drush @$alias drupal-directory $module | grep -v "Shared connection to")
?