Ich verwalte viele Drupal-Sites und versuche, einige Dinge mit Drush zu automatisieren. Drush run local ruft drush auf dem Remote-Host über ssh auf, wobei die in der Konfiguration für den Site-Alias angegebenen Optionen verwendet werden. Ich mache ziemlich viele dieser Aufrufe. Um dies zu beschleunigen, verwende ich dauerhafte SSH-Verbindungen mit der SSH-Konfiguration wie folgt:
Host *
# see http://www.revsys.com/writings/quicktips/ssh-faster-connections.html
ControlMaster auto
ControlPath ~/tmp/%r@%h:%p
ControlPersist 3600
Ich bekomme eine Beschleunigung, aber ich bekomme auch Nachrichten wie folgt:
$ drush @alias drupal-directory webform
/var/local/www/example.com/htdocs/sites/all/modules/contrib/webform
Shared connection to 12.34.56.78 closed.
Die Nachricht über die gemeinsam genutzte Verbindung befindet sich zusammen mit der gewünschten Ausgabe auf stdout (ernsthaft? Warum nicht stderr?). Daher verursacht sie Probleme, wenn ich versuche, die Ausgabe in meinen Skripten zu erfassen:
directory=$(drush @$alias drupal-directory $module)
Ich erwarte, dass die Master-Verbindung eine ist, die ich bereits geöffnet hatte, und sie sieht nicht so geschlossen aus. Vielleicht macht drush diese neue Verbindung explizit zu einer Master-Verbindung und schließt sie? Gibt es in jedem Fall eine Möglichkeit, die Meldung über das Schließen der Verbindung zu unterdrücken?
[Dieses Problem befindet sich in einem Drupal / Drush-Kontext, aber ich denke, es geht im Wesentlichen um ssh. Ist das dann die richtige Seite?]
BEARBEITEN:
Es sieht so aus, als ob das Problem spezifisch dafür ist, wo die -t
Option für ssh verwendet wird. Ich verwende dies, weil SVN-Passwörter an verschiedenen Stellen eingegeben werden müssen und ohne sie -t
die Passwortabfragen nicht angezeigt werden. Vielleicht gibt es eine andere Möglichkeit, um zu verhindern, dass diese Eingabeaufforderungen verloren gehen?
directory=$(drush @$alias drupal-directory $module | grep -v "Shared connection to")
genug?