Compilar shell script
Dica publicada em Shell Script / Miscelânea
Compilar shell script
Boas galera,
Se você tem um cliente e deseja criar scripts de backup, rotinas etc e não o faz por receio de haver cópia, pois bem, existe uma solução, que é o SHC.
O SHC ou Generic Shell Script Compiler, cria um arquivo binário executável. Ele converte para C e posteriormente para um binário executável.
Instalação:
Red-likes - você deve ter instalado o repositório rpmforge:
# yum install shc
Debian-likes:
# apt-get install shc
Utilização:
Crie um arquivo
$ vi teste
E insira o seguinte conteúdo:
Salve e feche o arquivo, execute o shc sobre ele:
$ shc -f -r -v teste
Onde:
Torne o arquivo teste.x executável (chmod +x teste.x) e execute:
$ ./teste.x
Você pode renomeá-lo para teste.bin pra ficar mais bonitinho, lembrando também que você deve chamar o interpretador no começo do arquivo:
Até a próxima...
Marcos Miras
www.atmsystem.com.br
Se você tem um cliente e deseja criar scripts de backup, rotinas etc e não o faz por receio de haver cópia, pois bem, existe uma solução, que é o SHC.
O SHC ou Generic Shell Script Compiler, cria um arquivo binário executável. Ele converte para C e posteriormente para um binário executável.
Instalação:
Red-likes - você deve ter instalado o repositório rpmforge:
# yum install shc
Debian-likes:
# apt-get install shc
Utilização:
Crie um arquivo
$ vi teste
E insira o seguinte conteúdo:
#!/bin/bash
echo "Viva o Linux!"
echo "Viva o Linux!"
Salve e feche o arquivo, execute o shc sobre ele:
$ shc -f -r -v teste
Onde:
- f = arquivo a ser compilado;
- v = modo verbose;
- r = torna compatível com outras distros.
Torne o arquivo teste.x executável (chmod +x teste.x) e execute:
$ ./teste.x
Você pode renomeá-lo para teste.bin pra ficar mais bonitinho, lembrando também que você deve chamar o interpretador no começo do arquivo:
#!/bin/bash
Até a próxima...
Marcos Miras
www.atmsystem.com.br
Apenas para contribuir e corrigir o comando:
No lugar de:
shc -f -r -v teste
O Correto é:
shc -rvf teste
Pois no Slackware não funciona assim: shc -f -r -v teste
Porque após o -f precisa informar o nome do arquivo!
Testado com a versão 3.8.7 do shc