Um shell script é um pequeno programa que armazena uma sequencia de ações realizadas através da interface de linha de comando de um sistema.
Neste post, irei falar sobre um tipo de shell script que permite a utilização de recursos avançados do sistema, mas para podermos entender melhor do que se trata, dividi o post em duas seções. Na primeira descrevo o conceito dos shell scripts e na segunda vou falar e mostrar um exemplo de uso desse script avançado.
1. Shell Script
No linux, qualquer arquivo de texto com permissão de execução pode conter um script e ser executado através do terminal. No windows, além dos executáveis, apenas os arquivos de lotes, em que são armazenados sequencias de comandos do interpretador, tem permissão de serem executados. Desde o DOS, conhece-se os arquivos de extensão .bat como arquivos de lote, mas os arquivos com extensão .cmd também são arquivos de lote a partir do windows NT.
Em qualquer um destes, pode-se criar pequenos programas estruturados que utilizam construtores para instruções de repetição, seleção, desvio condicional e incondicional, entrada e saída de dados.
Na tabela a seguir são mostradas as principais instruções e estruturas disponíveis no windows e no Linux
Instrução | Windows | Linux |
Declaração + inicialização de Variável | SET NOME_VARIAVEL=VALOR | export NOME_VARIAVEL=VALOR |
Entrada de Dados | SET /P NOME_VARIAVEL= | read NOME_VARIAVEL |
Referência a variável | %NOME_VARIAVEL% | $NOME_VARIAVEL |
Saída de Dados | ECHO TEXTO ECHO %VARIAVEL% ECHO TEXTO e VALOR=%VARIAVEL% | echo "Algum Texto" echo $NOME_VARIAVEL |
Desvio Condicional | IF %VARIAVEL% ==VALOR ( SEQUENCIA DE COMANDOS ) ELSE ( SEQUENCIA DE COMANDOS )
| if condicao SEQUENCIA DE COMANDOS else SEQUENCIA DE COMANDOS fi |
Repetição | for /R %v IN (*.ini) DO echo %v imprime o nome de todos os arquivos .ini dentro do diretório corrente e de todos os sub-diretorios. | selection = until [ "$selection" = "0" ]; do read selection done
|
Bem, falei até o momento sobre o básico do shell script, mas este tópico tem como objetivo falar sobre um recurso avançado do windows chamado Windows Scripting Host.
2. Windows Scripting Host (WSH)
Permite acesso a recursos privilegiados dos recursos do Windows desde sua versão 98. O mesmo é muito usado para criar scripts para serem realizados durante o login do sistema. Mas, através do WSH pode-se dar privilégio de administrador à ao prompt de comando ou realizar funções avançadas do sistema como ejetar a bandeja do cd-rom do computador.
Um diferencial do WSH para os arquivos de lote é a sintaxe de comando utilizada. Os arquivos de lote, como todo shell script, tem sintaxe de texto definidas pelo interpretador de comando. Os WSH são mais interessantes pois permitem a utilização de diversas linguagens como o PHP, PERL, BASIC, VB, PYTHON, JAVASCRIPT. Isto com certeza facilita o desenvolvimento deste tipo de script.
É simples criar scripts WSH, basta realizar os seguintes comandos
- criar um arquivo .vbs (caso vc queira usar o VB) ou .js (para usar JAVASCRIPT) contendo um script desejado
- chamar o comando csscript.
Por exemplo, o seguinte script ejeta os cdroms da máquina.
Set oWMP = CreateObject("WMPlayer.OCX.7" )
Set colCDROMs = oWMP.cdromCollection
if colCDROMs.Count >= 1 then
For i = 0 to colCDROMs.Count - 1
colCDROMs.Item(i).Eject
Next ' cdrom
End If
Porque você não tenta fazer o seu?
2.1. Procurando mais transparência
Uma limitação do uso direto de um .vbs é que o mesmo pode ser usado como forma de transferencia de virus. Isto faz com que qualquer anti-virus entenda os arquivos .vbs como potenciais ameaças.
Para deixar algo mais transparente para o usuário pode-se criar um arquivo de lote (.bat) que cria um .vbs temporário e depois o executa. Seria algo assim:
@ECHO OFF
ECHO Set oWMP = CreateObject("WMPlayer.OCX.7" ) > %TEMP%\cd.vbs
ECHO Set colCDROMs = oWMP.cdromCollection >> %TEMP%\cd.vbsECHO if colCDROMs.Count >= 1 then >> %TEMP%\cd.vbsECHO For i = 0 to colCDROMs.Count - 1 >> %TEMP%\cd.vbsECHO colCDROMs.Item(i).Eject >> %TEMP%\cd.vbsECHO Next ' cdrom >> %TEMP%\cd.vbsECHO End If >> %TEMP%\cd.vbs
cscript %TEMP%\cd.vbs
Desta forma, o anti-virus acaba não bloqueando seu script.
0 comentários:
Postar um comentário