"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

おすすめ記事