Published:


Compilação de comandos drush em ambiente multisite Permalink

Seleção de comandos drush usados para gerenciamento de centenas de sites em Drupal com core compartilhado, em especial no ambiente aegir. Compilados em conjunto com Augusto César Freire Santiago e Ricardo Fontoura.

Trocar senha do usuário admin para sua senha-secreta:

site='exemplo.com'
drush @$site user-password admin --password='senha-secreta'

Listar temas desabilitados de um site:

drush @[site] pml --status=disabled --type=theme --pipe

Listar módulos desabilitados de um site:

site=exemplo.usp.br
drush @$site pml --status=disabled --type=module --pipe

Mesma listagem acima, mas com o resultado em uma única linha:

site=exemplo.usp.br
drush @$site pml --status=disabled --type=module --pipe | tr -s '\n' ' '

Verificar quais temas estão habilitados em todos sites *.exemplo.com:

for site in $(ls sites/ | grep exemplo.com); 
do 
  echo $site; 
  drush @$site pml --status='enabled' --type='theme' --format=list; 
done

Desinstalar o tema em todos os sites:

for site in $(ls sites/ | grep exemplo.com); 
do
  drush @$i pm-uninstall $tema -y; 
done

Módulos que estão na plataforma p1 e não estão na p2:

diff  p1/sites/all/modules/ p2/sites/all/modules/ | grep "Only in p1" | cut -d':' -f2

Específicos para Drupal 7

Desinstalar todos os módulos desabilitados de todos os sites *.exemplo.com:

for site in $(ls sites/ | grep exemplo.com);
do 
  echo "Desabilitando módulos no $site"; 
  modules=$(drush @$site pml --status=disabled --type=module --pipe | tr -s '\n' ' '); 
  drush @$site pmu $modules -y; 
done

Configurar usuário 1 com username admin:

site='exemplo.com'
drush @$site sql-query "update users set name='admin' where uid=1"

Específicos para Drupal 8

Verificar se um tema específico está como default em algum site *.exemplo.com:

tema='adaptivetheme'
for site in $(ls sites/ | grep *.exemplo.com);
do 
  echo "Verificando $site"; 
  drush @$site cget system.theme default | grep $tema; 
done

Apagar qualquer configuração referente a um módulo específico. Muito útil para quando a pasta do módulo foi removida e a ausência da mesma está quebrando o site. Por exemplo, vamos usar o webform:

site='exemplo'
for i in $(drush @$site cli | grep webform);do 
  drush @$site config-delete $i;
done
drush @$site cache-rebuild

Atualizar banco de dados depois de atualização:

ls /sites/all/modules > /tmp/lista.txt 
for i in $(cat /tmp/lista | grep fflch.usp.br); do drush updb -l http://$i -y; done

Criar lista de módulos que não são do core

drush pml --no-core --type=module --status="enabled" --pipe > /tmp/modules.txt

Listar módulos e temas desabilidados:

drush pm-list --no-core --status="disabled,not installed" --pipe -l http://modelod7.fflch.usp.br

Habilitar módulos e temas desabilitados

drush en `drush pm-list --status="disabled,not installed" --pipe -l http://grafica.fflch.usp.br` -l http://grafica.fflch.usp.br

Específicos para Aegir

Subir um site no aegir, dado um backup gerado pelo mesmo, compactador em tag.gz:

drush provision-save @backup.exemplo.org \ 
    --context_type=site                  \
    --platform=@platform_d8              \
    --uri=backup.exemplo.org             \
    --aliases=www.backup.exemplo.org     \
    --db_server=@server_mysql            \
    --redirection=0                      \
    --profile=standard

drush @backup.exemplo.org provision-deploy backup.tar.gz

Migração de todos sites da platform_d8a para platform_d8b:

cd platforms
sites=$(ls d8a/sites | grep fflch.usp.br)
for site in $sites;
do
  drush @$site provision-migrate @platform_d8b
done

Verificando um site:

drush @hostmaster hosting-task @sti.fflch.usp.br verify

Verificando uma plataforma:

drush @hostmaster hosting-task @platform_drupal884a verify