Как разделить текстовый файл, содержащий IP-адрес принтера и текст для отправки на этот принтер - PullRequest
0 голосов
/ 10 апреля 2019

На сервере Linux мы получаем файл, который содержит:

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

Мне нужен скрипт оболочки bash, который может разбить файл и отправить текст на соответствующий принтер IP-адресов через FTP.

Файл может содержать несколько 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 голосов
/ 10 апреля 2019

Храните отдельные файлы для каждого документа, используя только XML.

Создайте одну таблицу текстового файла, в которой указан адрес и имя соответствующего файла.

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

Затем ваш сценарий может прочитать таблицу и узнать, где находится каждый файл данных, и может прочитать файл данных без изменения дизайна, нарушающего вашу целостность XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...