cPanel Change Working Directory (cwd) CONCLUÍDO

Resumo técnico

Este projeto é uma reescrita em Bash do utilitário original cwd (HostGator) para acelerar navegação operacional em servidores cPanel. O script resolve o document root de contas por username ou domain, aceita sufixo de subdiretório (/blog, /wp-admin) e retorna cd válido para ser aplicado no shell atual via eval.

Escopo executado

  • Reescrita completa da lógica original (Perl + XML API) para Bash puro.
  • Eliminação de dependência de cPanel XML API e autenticação WHM por hash.
  • Implementação de busca em múltiplas fontes locais do cPanel (/var/cpanel/userdata, /etc/userdatadomains, /var/cpanel/users).
  • Suporte operacional para entrada por usuário, domínio e subdomínio.
  • Fallback progressivo para subdiretórios inexistentes (volta para caminho pai válido).
  • Instalação automática de wrapper no .bashrc para uso com comando curto cwd.
  • Modos de execução -q (quiet) e -v (verbose) para automação e troubleshooting.

Arquitetura de resolução de docroot

Fluxo adotado no script para localizar caminho com previsibilidade:

  1. Tenta interpretar entrada como username de conta cPanel em /var/cpanel/userdata/<user>/.
  2. Procura arquivo exato de domínio dentro do userdata da conta.
  3. Valida servername/serveralias quando o nome não é exato no arquivo.
  4. Consulta índice global em /etc/userdatadomains.
  5. Faz fallback em /var/cpanel/users/<user> com leitura de campos DNS.
  6. Em último caso, utiliza /home/<user>/public_html como raiz operacional.

Execução prática


# uso básico
cwd [OPTIONS] username|domain[/subdir]

# por usuário
cwd linux

# por domínio
cwd linux.com

# domínio + subdiretório
cwd linux.com/blog

# modo silencioso (scripts)
cwd -q nonexistentuser

# modo verbose (diagnóstico)
cwd -v wrongdomain.com

Wrapper e comportamento de shell

O wrapper resolve o problema clássico de subshell. Em vez de executar cd isolado dentro do script, o comando emite saída para ser avaliada no shell chamador:


# saída gerada pelo script
cd /home/user/public_html

# aplicação no shell atual
output="$(/path/to/cwd.sh domain.com 2>&1)"
eval "$output"

Troubleshooting operacional


# validar presença da conta
ls /var/cpanel/userdata/username

# validar arquivo de domínio
ls /var/cpanel/userdata/username/domain.com

# validar documentroot no userdata
grep documentroot /var/cpanel/userdata/username/domain.com

# checar instalação duplicada do wrapper no bashrc
grep -n "CWD AUTO-WRAPPER" ~/.bashrc

Stack e ferramentas

  • Shell Script / Bash
  • cPanel/WHM
  • Linux
  • grep
  • sed
  • cut

Tags operacionais

  • cPanel
  • Bash
  • CLI
  • SysAdmin

Resultado operacional

  • Navegação entre contas e domínios em segundos, sem consulta remota a API.
  • Maior confiabilidade em cenários de incidente onde serviços cPanel podem estar degradados.
  • Redução de tempo de triagem operacional (document root, logs e arquivos web).
  • Padronização para equipes de suporte N1/N2/N3 com comando único de navegação.

Andamento no GitHub (issues)

Painel em tempo real com as issues mais recentes do repositório.

abertas (amostra): -- fechadas (amostra): -- base: -- ultimas issues

carregando andamento...

Resultados reais

Reescrita em Bash do utilitário clássico cwd para cPanel/WHM, com resolução de docroot por usuário ou domínio, fallback inteligente e instalação automática do wrapper no shell.

Arquitetura e organização

Execução e operação

O projeto segue fluxo reprodutível de execução com validação técnica em ambiente de produção/similar.

Screenshots

Falar sobre este projeto

Aplique este modelo no seu ambiente e acelere a entrega com consistência técnica.