"lsque -q" 명령의 출력 변환

"lsque -q" 명령의 출력 변환

파일에는 프린터 목록이 있습니다.

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

이 출력을 생성하는 명령이 있습니다(PRINTQ1과 같은 특정 프린터에 대한 정보의 경우 =가 있는 줄 순서는 다음과 다를 수 있음).

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 #

lsque -q PRINTERNAME다음의 명령 출력이 필요합니다.

/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"

질문: lsque 명령의 출력에서 ​​piomisc_base 명령을 어떻게 생성할 수 있나요? piomisc_base의 올바른 위치에 값을 입력하면 됩니다.

따라서 기본적으로 나중에 (다른 서버에서) 실행할 piomisc_base 명령을 생성합니다.

-b"/usr/lpd/rembak"-> 이것은 상수이다

답변1

사용 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"

대기열은 명령줄에서 얻어지고 변수에 저장됩니다 queue. 그런 다음 해당 값을 사용하여 lsque질문에 표시되는 출력을 얻습니다. 이 sed명령은 이 출력의 첫 번째 줄을 제거하고 모든 공백을 제거합니다.

위 작업의 결과가 전달되고 typeset출력의 변수에 값이 할당됩니다.

그런 다음 이러한 변수는 호출에 사용됩니다 piomisc_base.

관련 정보