Converte a saída do comando “lsque -q”

1

Existe uma lista de impressoras em um arquivo:

0:root@SERVER:/root #cat printernames.txt
PRINTQ1
PRINTQ2
PRINTQ3
...
0:root@SERVER:/root #

E há um comando que produz esta saída (informações sobre determinadas impressoras, por exemplo, o PRINTQ1, as linhas que têm = poderiam estar em uma ordem diferente da seguinte):

0:root@SERVER:/root #lsque -q PRINTQ1
PRINTQ1:
    device = PRINTQ1.dev
    host = AL1
    l_statfilter = /usr/lib/lpd/aixlong
    rq = LPT1_PASSTHRU
    s_statfilter = /usr/lib/lpd/aixshort
    up = TRUE
0:root@SERVER:/root #

Precisamos da saída do comando lsque -q PRINTERNAME no seguinte comando:

/usr/sbin/piomisc_base mkpq_other  -q"PRINTQ1" -d "PRINTQ1.dev" \
  -b"/usr/lpd/rembak" -u"TRUE" -h"PRINTQ1" -r"PRINTQ1" \
  -s"/usr/lib/lpd/aixshort" -l"/usr/lib/lpd/aixlong"

Pergunta : como podemos gerar os comandos piomisc_base a partir da saída do comando lsque? Apenas colocando os valores no lugar certo para o piomisc_base.

Então, basicamente, criando os comandos piomisc_base que serão executados posteriormente (em outro servidor).

-b"/usr/lpd/rembak" - > isso é constante

    
por PeterBill 17.02.2017 / 13:56

1 resposta

3

Usando ksh93 :

#!/bin/ksh -e

queue="$1"

typeset $( lsque -q "$queue" | sed -e '1d' -e 's/ //g' )

/usr/sbin/piomisc_base mkpq_other \
    -q"$queue" \
    -d "$device" \
    -b"/usr/lpd/rembak" \
    -u"$up" \
    -h"$queue" \
    -r"$queue" \
    -s"$s_statfilter" \
    -l"$l_statfilter"

A fila é retirada da linha de comando e salva na variável queue . Este valor é então usado com lsque para obter a saída mostrada na pergunta. Esse comando sed remove a primeira linha desta saída e remove todos os espaços.

O resultado da operação acima é passado para typeset , que simplesmente executará as atribuições de valores para as variáveis na saída.

Estas variáveis são então usadas na chamada para piomisc_base .

    
por 17.02.2017 / 14:20