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
.bashrcpara uso com comando curtocwd. - 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:
- Tenta interpretar entrada como
usernamede conta cPanel em/var/cpanel/userdata/<user>/. - Procura arquivo exato de domínio dentro do userdata da conta.
- Valida
servername/serveraliasquando o nome não é exato no arquivo. - Consulta índice global em
/etc/userdatadomains. - Faz fallback em
/var/cpanel/users/<user>com leitura de campos DNS. - Em último caso, utiliza
/home/<user>/public_htmlcomo 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.