我正在管理许多drupal网站,并尝试使用drush自动化一些操作。使用站点别名的配置中指定的选项,Drush通过ssh在远程主机上本地调用drush。我进行了大量此类调用,因此为了加快速度,我将持久性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.
关于共享连接的消息以及我想要的输出(严重?为什么不是stderr?)在stdout上,所以当我尝试在脚本中捕获输出时,这会引起问题:
directory=$(drush @$alias drupal-directory $module)
我希望主连接是我已经打开的连接,但看起来并没有关闭。那么,也许匆匆忙忙地明确地使这个新连接成为主连接并关闭它?无论如何,有没有办法抑制有关连接关闭的消息?
[这个问题是在drupal / drush上下文中,但是我认为它本质上是关于ssh的。这是正确的网站吗?]
编辑:
看来问题是特定-t
于ssh选项的使用位置。我之所以使用它,是因为需要在各个点输入svn密码,如果没有-t
,则不会显示密码提示。也许还有另一种方法可以阻止这些提示丢失?
这就是我目前正在做的事情。只是比起换行符和要处理的东西还更糟糕,而且它存在于很多地方,所以我真的希望有某种方法可以使ssh变得更安静。
—
mc0e 2015年
“到12.34.56.78的共享连接已关闭。” 消息输出实际上是在stderr而不是stdout上。
—
德里克森
@Dereckson-除非有人修复了它,否则不会。
—
mc0e
directory=$(drush @$alias drupal-directory $module | grep -v "Shared connection to")
就足够了吗?