转换“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

相关内容