SHC, Shell Script Compiler

Alan Victor Sabado, 20 de Dezembro de 2014


SHC é um compilador genérico de shell script escrito por Francisco Javier Rosales García, esta é a pagina do desenvolvedor, Compilador SHC

Se você tem algum programa ou script simples em shell que possui informações restritas como login e senha, a ideia de compilar o script é muito boa. Resolvi usa-lo para compilar o script changeip.sh, pois no meio do deste script existe duas variáveis que recebe o seu nome de usuário e senha no changeip.com, em texto puro, esse e outros casos fazem o SHC ser uma ferramenta/compilador útil.

O SHC transforma o script shell num emaranhado de código C e compila.

Após a compilação, ele cria 2 arquivos, um C e um binário.

O intuito do script abaixo é para fins de estudo de shell script. O uso do SHC é muito simples, deixando o script abaixo meio inútil… Se preferir, leia e entenda o script, nele, está basicamente todos os passos para fazer os processos manualmente!

#!/bin/bash
# Estudando shell script.
# by Alan Victor - consultalinux.com / wavelinux.com
 
	SHC="$(which shc)"
 
	if [ ! -z $SHC ] ; then
 
		if [ $# = 0 ] ; then
		  echo "Informe o nome do script para compilar."
		  exit 1
		fi
 
		if [ ! -e $1 ] ; then
		  echo "Nome do script não existe."
		  exit 1
		fi
 
		if [ -x $SHC ] ; then
		  nome=$(echo $1 | sed 's/.sh$//')
		  STDERR=$($SHC -f $1 2>&1)
		  rm $1.x.c
		  mv $1.x $nome.bin
		  clear
		  echo "Tentando gerar o binário..."
		  sleep 1
 
	  		if [ -e $nome.bin ] ; then
		 	echo
			echo "Binário gerado com sucesso!"
		 	  else
	  		  echo
			  echo "Problema ao gerar o binário!"
			  echo
		  	  echo "Listando possíveis erros"
			  echo "-------------------------------------------------------"
			  echo "$STDERR" | egrep -v 'Success'
			  echo
			fi
		fi
	else
        echo "Compilador SHC não instalado."
	echo
	echo "Baixando as fontes..."
	wget -q http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9.tgz
 
		if [ -e shc-3.8.9.tgz ] ; then
		 tar -xf shc-3.8.9.tgz ; cd shc-3.8.9 ; gcc -o shc shc-3.8.9.c ; cp shc /usr/bin/
		else
 
		echo "Problema ao instalar o SHC, tente manualmente!"
		fi
	fi

A sintaxe do script acima é: compilador.sh script.sh
Será criado um arquivo script.bin

A sintaxe do SHC é: shc -f script.sh
Será criado 2 arquivos, um script.x.c e script.x
Bons estudos! Até a próxima!!