Saya mengelola banyak situs drupal, dan mencoba mengotomatisasi beberapa hal menggunakan drush. Drush menjalankan panggilan lokal drush pada host jarak jauh melalui ssh menggunakan opsi yang ditentukan dalam konfigurasi untuk alias situs. Saya membuat cukup banyak panggilan ini, jadi untuk mempercepatnya saya menggunakan koneksi ssh persisten dengan ssh config seperti:
Host *
# see http://www.revsys.com/writings/quicktips/ssh-faster-connections.html
ControlMaster auto
ControlPath ~/tmp/%r@%h:%p
ControlPersist 3600
Saya mendapatkan percepatan, tetapi saya juga mendapatkan pesan seperti:
$ drush @alias drupal-directory webform
/var/local/www/example.com/htdocs/sites/all/modules/contrib/webform
Shared connection to 12.34.56.78 closed.
Pesan tentang koneksi bersama ada di stdout, bersama dengan output yang saya inginkan (serius? Mengapa tidak stderr?), Jadi itu menyebabkan masalah ketika saya mencoba untuk menangkap output dalam skrip saya:
directory=$(drush @$alias drupal-directory $module)
Saya berharap koneksi master menjadi salah satu yang sudah saya buka, dan sepertinya tidak tertutup. Jadi mungkin drush secara eksplisit membuat koneksi baru ini menjadi master dan menutupnya? Bagaimanapun, apakah ada cara untuk menekan pesan tentang penutupan koneksi?
[Masalah ini dalam konteks drupal / drush, tapi saya pikir ini pada dasarnya tentang ssh. Apakah ini situs yang benar?]
EDIT:
Sepertinya masalahnya khusus di mana -t
opsi untuk ssh sedang digunakan. Saya menggunakan ini karena kata sandi svn perlu dimasukkan di berbagai titik, dan tanpa -t
, kata sandi tidak ditampilkan. Mungkin ada cara lain untuk menghentikan pertanyaan yang hilang?
directory=$(drush @$alias drupal-directory $module | grep -v "Shared connection to")
sudah cukup?