Por favor note: portátil como em portableapps.com, não a definição tradicional. Originalmente postado em stackoverflow.com, perguntando aqui na sugestão de outro usuário.
Sou um DBA e um sysadmin, principalmente para máquinas Windows que executam o SQL Server. Eu estou procurando uma linguagem de programação / script para o Windows que não requer acesso de administrador ou um instalador, não necessitando de nenhum processo de instalação diferente de expandi-lo em uma pasta. Minha intenção é ter uma linguagem para automação na qual eu possa padronizar.
Até este ponto, tenho usado uma combinação de arquivos em lote e shell Unix, usando sh.exe de UnxUtils mas é longe de ser uma solução perfeita.
Eu avaliei um punhado de opções, todas elas têm pelo menos uma falha séria ou outra. Eu tenho uma strong preferência por algo de código aberto ou licença dupla, mas estou mais interessado em encontrar a ferramenta certa do que qualquer outra coisa. Não estou interessado em nada que dependa de Cygwin ou Java, mas neste momento eu estaria bem com algo que precisa do .NET.
Requisitos:
- Área de cobertura gerenciável (de 1 a 100 arquivos com menos de 30 MB instalados)
- Executar no Windows XP e Server (2003 +)
- Nenhum instalador (exe, msi)
- Funciona com canais, processos e arquivos externos
- Suporte para conexões MS SQL Server ou ODBC
Pontos de bônus:
- Código aberto
- FFI para chamar funções em DLLs nativas
- Suporte à GUI (nativo ou gtk, wx, fltk, etc)
- Suporte para Linux, AIX e / ou OS X
- Dinâmico, orientado a objetos e / ou funcional, interpretado ou bytecode compilado; desenvolvimento interativo
- Capaz de empacotar ou compilar scripts em executáveis
Até agora eu tentei:
- Ruby: 148 MB em disco, 23000 arquivos
- Portable Python: 54 MB em disco, 2800 arquivos
- Strawberry Perl: 123 MB em disco, 3600 arquivos
- REBOL: Ótimo, exceto código fechado e sem MSSQL ou ODBC na versão gratuita
- Squeak Smalltalk: Ótimo, exceto suporte insuficiente para scripts
---- cut: pontos de esclarecimento ----
Por que todas as limitações?
Eu percebo que alguns dos meus critérios parecem arbitrariamente limitantes. É principalmente um produto meu ambiente. Eu trabalho como um SQL Server DBA e backup Unix admin em uma divisão de uma grande empresa. Além de cerca de uma centena de caixas rodando uma ou outra versão do SQL Server no Windows, também suporto as instalações do SQL Server Express Edition em mais de mil máquinas no campo.
Devido às nossas políticas de segurança, não faço login em todas as máquinas. Frequentemente, surge um problema e recebo Admin local por algum período de tempo. Muitas vezes, é uma caixa que eu nunca toquei e ainda não tenho a configuração do meu próprio ambiente.
Eu posso ter direitos de administrador temporários na caixa, mas não sou o administrador da máquina - sou apenas o DBA. Eu não tenho interesse em pisar nos dedos dos administradores do Windows, nem quero assumir qualquer um dos seus deveres.
Se eu mencionar a "instalação" de algo, de repente se torna uma questão de interesse para o Controle de Produção e os administradores do Windows; se estou copiando um roteiro, ninguém se importa. A distinção pode não significar muito para os leitores, mas se alguém tiver a ideia errada, de repente tenho uma longa espera e uma sobrecarga significativa antes de poder instalar a ferramenta e resolver o problema.
É por isso que quero algo que possa ser copiado e executado da mesma maneira que um aplicativo portátil. E quanto à pequena pegada? Minha empresa tem três divisões, cada uma em uma localização geográfica diferente, e uma delas é uma nova aquisição. Temos diferentes políticas de controle de produção / segurança em cada divisão. Eu apoio nossos bancos de dados MSSQL em todas as três divisões. As máquinas de campo estão espalhadas pelos EUA, às vezes conectando-se à VPN através de links muito lentos. Instalar o Ruby \ usando o psexec levou muito tempo nessas conexões. Nesses casos, o maior desperdício de tempo parece ser arquivos com milhares e milhares de arquivos, em vez de seu tamanho.
Você poderia dizer que sou mimado pelo Unix, onde os administradores geralmente têm pelo menos alguma linguagem de script moderna instalada; Eu usaria o PowerShell, mas não o conheço bem e, mais importante, ele não está em todos os lugares em que preciso trabalhar.
É uma ocorrência regular que eu preciso escrever, implantar e executar algum script em curto prazo em alguma máquina em que eu nunca tenha logado. Desde que tenha Ruby ou algo parecido instalado em cada máquina que eu precisarei tocar é efetivamente impossível por causa das aprovações, do tempo e do trabalho de administração do Windows necessário. Faz mais sentido encontrar uma solução que me permita trabalhar nos meus próprios termos.