AP401 - Utilizando pipes no Monad
| Autor: |
Anderson Patricio / José Rodas |
| Publicação: |
29/Mar/2006 |
Overview
O Monad como
uma grande linguagem e poderoso shell fornece a possibilidade de usar
pipes, que basicamente são aproveitar a saída de um comando com outro
instrução.
Já possuímos
isto no cmd.exe mas de forma mais simplista, um exemplo de que podemos
utilizar:
netstat
-an | find ":25"
Com isto
estamos listando todas as portas abertar da máquina (netstat -an) e
mostrando somente os resultados que tiverem a incidência do texto ":25".

Solução
No Monad isto é
possível, iremos utilizar aqui alguns possíveis pipes, com isto podemos
combinar um ou mais comandos trazendo a informação importante de forma
mais fácil.
O que
devemos saber é quando utilizamos esta técnica, a resposta do primeiro
comando é utilizado pelo segundo e assim sucessivamente.
Bom para
entendermos bem o conceito segue abaixo o primeiro exemplo e um dos mais
comuns que é utilizar o cmdlet get-help <comando> por padrão ele mostra
todo o help passando todo conteúdo na tela, utilizando pipe (|) mais
more, conseguimos que a saída do primeiro cmdlet (get-help <comando>)
seja feita de forma mais fácil para o administrador permitindo
controlarmos o fluxo da informação.

get-help get-command | more
Pedimos ajuda
com possibilidade de controlar a saída do help.
Utilizando Pipes..
Bom vamos ver a
real funcionalidade do pipe, seguem os exemplos baseado em uma
necessidade, o Administrador da rede quer uma listagem dos processos
chamados svchost executados na máquina, mas o mesmo precisa no
formato .txt para entregar para o seu "chefe", vamos utilizar o
Monad para ajudarmos nesta árdua tarefa. Vamos fazer passo a passo
para melhor entendimento
get-process
Bom, para
listarmos os processos utilizamos o cmdlet get-process que
lista todos os processos, conseguimos 33% da tarefa que o
Administrador necessita.

get-process | where-object { $_.processname -eq "svchost" }
Agora que já
sabemos o cmdlet para listar os processos precisamos saber somente
os chamados svchost, então vamos utilizar o nosso primeiro pipe,
utilizando where-object { $_.processname -eq "svchost" }
onde toda saída do cmlet get-process será filtrado de forma
que será apresentando somente os processos chamados svchost.

get-process | where-object { $_.processname -eq "svchost" } |
out-file c:\anderson.txt
Bom conseguimos
no comando anterior listar somente o necessário utilizando pipes,
agora precisamos adicionar mais um pipe para jogar a saída do cmdlet
get-process e filtrado pelo segundo cmdlet e utilizamos um
terceiro cmdlet out-file c:\anderson.txt para jogar o
conteúdo para o arquivo anderson.txt.

Visualizando a necessidade do administrador...
Ainda a partir
do Monad digitamos notepad anderson.txt e será mostrado o que
nos foi solicitado.

Conclusão
Com este
tutorial mostramos como utilizar pipes no Monad permitindo melhores
resultados na administração de sistemas.
|