shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Echo e executa: superecho


From: Maicon Vinicius Nunes
Subject: Echo e executa: superecho
Date: Tue, 18 Mar 2008 04:49:41 -0300
User-agent: Thunderbird 2.0.0.12 (X11/20080213)

Procurei alguma forma de, em um script, chamar um comando de modo que exibisse a linha de comando chamada e depois o executasse. Não o encontrei, e fiz esse superecho. Tá meio tosco, mas me é util aqui em logs.

Abaixo segue o script, depois um exemplo de uso e a saida em arquivo:

superecho:

#!/bin/bash
#######################################

if [ $# = 0 ]
  then
     echo "Use superecho [opcoes...]"
     echo "Opcoes:"
     echo "-c \"comando entre aspas\""
     echo "-o \"arquivo para saida da execucao\""
     echo "-O \"arquivo para saida da linha de comando executada \""
     echo "Se -o ou -O nao for usado, sai para STDOUT"
  else

     while getopts "c:o:O:" OPCAO
        do
           case "$OPCAO" in
              "o")
                 SAIDACOMANDO="$OPTARG"
              ;;
              "O")
                 SAIDA="$OPTARG"
              ;;
              "c")
                 COMANDO="$OPTARG"
              ;;
           esac
        done

     if [ ! "$COMANDO" == "" ]
        then
           if [ "$SAIDA" == "" ]
              then
                 echo "superecho: $COMANDO"
                 if [ "$SAIDACOMANDO" == "" ]
                    then
                        $COMANDO
                    else
                        $COMANDO >> $SAIDACOMANDO
                    fi
              else
                 echo "superecho: $COMANDO" >> "$SAIDA"
                 if [ "$SAIDACOMANDO" == "" ]
                    then
                        $COMANDO
                    else
                        $COMANDO >> $SAIDACOMANDO
                    fi
           fi
        else
           echo "A opcao -c é obrigatória"

      fi
  fi

######################################################

Exemplo de uso:

#!/bin/bash
LOG=/tmp/teste/saida
superecho -c "ls /" -O $LOG -o $LOG
superecho -c "cat /proc/net/dev" -O $LOG -o $LOG

#######################################################

Conteúdo da saida:
[ root@mknote:/tmp/teste ]# cat /tmp/teste/saida
superecho: ls /
bin
boot
dev
etc
home
lib
man
media
mnt
nohup.out
opt
proc
rede
rest
root
sbin
sh2log
share
srv
suspend_file
sys
tmp
usr
var
vista
superecho: cat /proc/net/dev
Inter-|   Receive                                                |  Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed lo: 56119 549 0 0 0 0 0 0 56119 549 0 0 0 0 0 0 eth0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 eth1:116976024 137066 0 0 0 0 0 0 12442324 105993 0 0 0 0 0 0
#####################################################

Ou seja, vai arquivando o comando executado e a saída dele. Numa saída como essa, é possível dar um grep superecho e ver apenas os comandos executados. E é claro, é possível também não guardar a saída dos comandos, apenas a linha de comando.
Espero que sirva pra alguém.

--
Maicon Vinicius Nunes
(51) 9355-1734

# Imprima esse e-mail! Ao imprimir você está incentivando
# uma indústria que emprega milhares de pessoas e gera divisas
# para o país!

Ubuntu [ùbúntú]:
1. Old African word meaning "I have no idea how to configure Slackware"



reply via email to

[Prev in Thread] Current Thread [Next in Thread]