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

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

Re: [shell-script] Ajuda com montagem de script


From: eric miranda
Subject: Re: [shell-script] Ajuda com montagem de script
Date: Mon, 7 Nov 2011 01:14:03 -0200

Bom dia, MIchael.

Isso aqui funcionou aqui:

Primeiro filtrar a saída do datapath

eric@DESKTOPHOME:~$ datapath query device | grep -Ev "^[P=]|^$" | tr -s "/"
";"> datapath.txt

O script

eric@DESKTOPHOME:~$ cat script.sh
#!/bin/sh

while read i; do
        COLUNA1=$(echo $i | awk '{print $1}')
        COLUNA2=$(echo $i | awk '{print $2}')
        COLUNA3=$(echo $i | awk '{print $3}')
        COLUNA4=$(echo $i | awk '{print $4}')
        COLUNA5=$(echo $i | awk '{print $5}')
        COLUNA6=$(echo $i | awk '{print $6}')
        COLUNA7=$(echo $i | awk '{print $7}')
        if [ ${COLUNA1} = "SERIAL:" ]; then
                SERIAL=${COLUNA2}
                continue
        fi
        if [ ${COLUNA1} = "DEV#:" ]; then
                VIRTUALPATH=${COLUNA5}
                continue
        fi
        echo "${SERIAL};${VIRTUALPATH};${COLUNA2};${COLUNA3}"
done < $1

Testando

eric@DESKTOPHOME:~$ sh script.sh datapath.txt
75AMXH1100B;vpath75;fscsi0;hdisk99;OPEN
75AMXH1100B;vpath75;fscsi0;hdisk264;OPEN
75AMXH1100B;vpath75;fscsi0;hdisk363;OPEN
75AMXH1100B;vpath75;fscsi0;hdisk438;OPEN
75AMXH1100B;vpath75;fscsi2;hdisk145;OPEN
75AMXH1100B;vpath75;fscsi2;hdisk220;OPEN
75AMXH1100B;vpath75;fscsi2;hdisk495;OPEN
75AMXH1100B;vpath75;fscsi2;hdisk570;OPEN
75AMXH1100C;vpath76;fscsi0;hdisk100;OPEN
75AMXH1100C;vpath76;fscsi0;hdisk265;OPEN
75AMXH1100C;vpath76;fscsi0;hdisk364;OPEN
75AMXH1100C;vpath76;fscsi0;hdisk439;OPEN
75AMXH1100C;vpath76;fscsi2;hdisk146;OPEN
75AMXH1100C;vpath76;fscsi2;hdisk221;OPEN
75AMXH1100C;vpath76;fscsi2;hdisk496;OPEN
75AMXH1100C;vpath76;fscsi2;hdisk571;OPEN

Boa sorte!

Eric Miranda

Em 5 de novembro de 2011 07:04, MrBiTs <address@hidden> escreveu:

> **
>
>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
>
>
> > Conseguem montar um unico script para gerar esta saida ?
> >
> > Obrigado
>
> Acho que várias pessoas conseguem e você também consegue, mas não é bem
> assim que o grupo funciona não. Por que não nos mostra
> suas tentativas, não nos mostra que você fez a lição de casa ? Assim, com
> dúvidas mais específicas, fica mais fácil ajudar você.
>
> Realmente, fazer para você eu não vou, mas a dica inicial é que você tem 3
> tipos de linhas interessantes:
>
>
> DEV#: 75 DEVICE NAME: vpath75 TYPE: 2107900 POLICY: Optimized
> SERIAL: 75AMXH1100B
> 0 fscsi0/hdisk99 OPEN NORMAL 60796 0
> 1 fscsi0/hdisk264 OPEN NORMAL 47092 0
>
> Você quer uma saída assim:
>
> 75AMXH1100C;vpath75;fscsi0;hdisk99;OPEN
>
> Seu primeiro campo vem da linha que começa com "SERIAL", o segundo da
> linha que começa com DEV# e o resto da linha que começa com
> um espaço ou tab. Bem didático, algo assim funcionaria:
>
> cat arquivo | while read LINHA ; do
> if [ ${LINHA} =~ "^SERIAL" ] ; then
> # Bash 3 tem o =~, operador de comparação de expressões regulares
> SERIAL=$(cut -d " " -f 2)
> fi
> done
>
> E aí você pega essa idéia básica e extrapola para os outros tipos de
> linha, sempre armazenando os pedaços da linha final em
> variáveis que depois você vai ecoar para seu arquivo final
>
> Outro conselho: pare com as drogas. Use LibreOffice Calc no lugar e Excel.
>
> - --
>
> LLAP
>
> .0. MrBiTs - address@hidden
> ..0 GnuPG -
> http://keyserver.fug.com.br:11371/pks/lookup?op=get&search=0x6EC818FC2B3CA5AB
> 000 http://www.mrbits.com.br
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.11 (GNU/Linux)
>
> iQEcBAEBCAAGBQJOtPwhAAoJEG7IGPwrPKWrBxkIAKTJ3YoxQrm7gIpa77o6ZGca
> y3JAgnffjoyYZhjYOVy9DNsd5Q7DUcczICI2xJdQdfKIGFUn1H3Emp8toGqCL/QO
> iewi6+ZXZpW5mDaKDJPCNYBfRoTofGR1bH7aJNRth9xuOxKMGjsCgPP0F46cwrEv
> Iw3NPLRa/EQYm2mwiZ1rBtw3M/9c0mWpoyvOQC0RVc0aClQb3UAixxNyt5if17n7
> 6wppWwA6urZR+AW1KgQF4yhodIBluzVFosYJ+CGxTJZVsmS4my2gw34seY1omc6D
> FX9JyfZgc+Hd1O9eIwd6mQPSKv+S+o7Zy/gTVUTJVTfIi+/rsWxkYkMSiFyP0ZM=
> =6OtD
> -----END PGP SIGNATURE-----
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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