#4 - 10 апреля 2016 в 11:25 | |
krazen, ты так и не расписал, откуда нужные данные берутся в табличном процессоре. Также нет постановки задачи и ожидаемого результата. Попробую "пованговать" как оно видится мне:
1. данные в лист вносятся вручную оператором
2. по факту внесения этих данных нужно выполнить "простынь" команды
3. результатом получается и наличие записи в таблице и отправленная на выполнение команда.
Если все так - то налицо явно лишняя прослойка в виде получения данных из либры. Её можно и не открывать даже, по сути) На мой взгляд куда проще собрать от пользователя сырые данные и затем отправить в лист уже на запись. Можно поробовать только bash'ем, чоб не смешивать инструментарий
На вход взять простой zenity, примерно в таком виде
Код BASH:OUTPUT=$(zenity --forms --title="ВВОД" --text="ВВОД ДАННЫХ" --separator="," --add-entry="IP" --add-entry="Бранч" --add-entry="LDAP" --add-entry="SIP" --add-password="Password")
accepted=$?
if ((accepted != 0)); then
echo "something went wrong"
exit 1
fi
ip=$(awk -F, '{print $1}' <<<$OUTPUT)
branch=$(awk -F, '{print $2}' <<<$OUTPUT)
ldap=$(awk -F, '{print $3}' <<<$OUTPUT)
sip=$(awk -F, '{print $4}' <<<$OUTPUT)
paswd=$(awk -F, '{print $5}' <<<$OUTPUT)
echo "...user_name=$sip...auth_name=$sip...auth_pass=$paswd...root@10.102.$ip"
получим следующий простой интерфейс для ввода:
При ОК в нем получим выхлоп последнего echo уже с введенными значениями:
Здесь надеюсь мысль уже понятна, что вместо echo вполне может быть твой чудо скрипт.
Осталось только вписать эти же переменные в лист. в зависмости от формата решения могут быть разными. например в ods можно просто unzipнуть его в xml:
Код BASH:unzip table.ods content.xml
и к xml-конструкции добавить table-row ветку, примерно такую:
<table:table-row table:style-name="ro1"><table:table-cell office:value-type="string" calcext:value-type="string"><text:p>192.10</text:p></table:table-cell><table:table-cell office:value-type="string" calcext:value-type="string"><text:p>some_branch</text:p></table:table-cell><table:table-cell office:value-type="string" calcext:value-type="string"><text:p>some_ldap</text:p></table:table-cell><table:table-cell office:value-type="string" calcext:value-type="string"><text:p>123987</text:p></table:table-cell><table:table-cell office:value-type="string" calcext:value-type="string"><text:p>sdfn2Jg236</text:p></table:table-cell></table:table-row> |
и спаковать обратно:
Код BASH:zip -j table.ods content.xml
Если же, по каким-то причинам необходим именно парсинг таблицы, то для ods в баше можно пойти тем же путем:
получить xml, разбить его на <table-row>, затем каждую строку на ячейку <table-cell> и взять её <text> в переменную. Тут может быть полезен grep c регулярками.
zenity тогда можно откинуть и передавать напрямую в выполение или же можно подавать как дефолтные значения в диалоговое окошко для пошагового выполнения.
p/s - много текста получилось, но тут реально неограниченный простор для полета мысли... Как говорится - "есть у автоматизации начало, нет у автоматизации конца"