Scripts Avançados no Windows


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 WindowsLinux 
 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 DadosECHO 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
  1. criar um arquivo .vbs (caso vc queira usar o VB) ou .js (para usar JAVASCRIPT) contendo um script desejado
  2. 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.
Até a próxima!
SHARE

Sobre o Autor... Leandro

    Blogger Comment
    Facebook Comment

0 comentários: