如何拆分包含打印机IP地址和文本的文本文件以发送到该打印机

时间:2019-04-10 14:41:44

标签: bash shell unix tcp

在Linux服务器上,我们收到一个文件,其中包含:

1. the printer IP address 
2. the Text (XML tags) to be sent to that printer using FTP

我需要一个bash shell脚本,该脚本可以分割文件并通过FTP将文本发送到相应的IP地址打印机。

文件可以包含多个IP地址,后跟文本

在所示示例中:     首先是IP地址,以分隔符终止。 (可以更改或删除)。     然后,我们将文本发送到打印机,以</labels>结尾     第二个IP地址和要发送到该IP地址的文本。     第三个IP地址和要发送到该IP地址的文本。

12.123.12.123|
<?xml version="1.0" standalone="no"?>
<!DOCTYPE labels SYSTEM "label.dtd">
<labels _FORMAT="E:HOTDOC.ZPL" _QUANTITY="1" _PRINTERNAME="Printer 1" _JOBNAME="LBL101">
       <label>
                <variable name="TEXT1">30959</variable>
        </label>
        <label>
                <variable name="TEXT1">30960</variable>
        </label>
        <label>
                <variable name="TEXT1">30961</variable>
        </label>
</labels>
12.567.12.123|
<?xml version="1.0" standalone="no"?>
<!DOCTYPE labels SYSTEM "label.dtd">
<labels _FORMAT="E:HOTDOC.ZPL" _QUANTITY="1" _PRINTERNAME="Printer 1" _JOBNAME="LBL101">
        <label>
                <variable name="TEXT1">30962</variable>
        </label>
        <label>
                <variable name="TEXT1">30963</variable>
        </label>
</labels>
12.890.12.123|
<?xml version="1.0" standalone="no"?>
<!DOCTYPE labels SYSTEM "label.dtd">
<labels _FORMAT="E:HOTDOC.ZPL" _QUANTITY="1" _PRINTERNAME="Printer 1" _JOBNAME="LBL101">
        <label>
                <variable name="TEXT1">309625</variable>
        </label>
</labels>

过去,我们有一个IP地址文件(printer.txt)和一个单独的文本文件(xmlfile.txt)。我正在使用以下脚本。但是现在,我们有几台打印机,因此需要将IP添加到文件中以定义目标。

#!/bin/sh
HOST='12.123.12.212'
USER='anonymous'
FILE='/a01/folder/xmlfile.txt'

ftp -n $(cat /a01/folder/printer.txt) /a01/folder/ <<END_SCRIPT
quote USER $USER
put $FILE
quit
END_SCRIPT
exit 0

1 个答案:

答案 0 :(得分:0)

仅使用XML保留每个文档的单独文件。

创建一个文本文件表,该表是匹配文件的地址和名称。

12.123.12.123|/path/to/file1
12.567.12.123|/path/to/file2

然后,您的脚本可以读取表并知道每个数据文件在哪里,并且可以读取数据文件而无需进行设计更改即可破坏XML完整性。