Not logged in. · Lost password · Register
Forum: Non-English Discussion Russian discussion RSS
Правка страниц при помощи скрипта
Avatar
Yaroslav #1
Member since Sep 2015 · 3 posts
Group memberships: Members
Show profile · Link to this post
Subject: Правка страниц при помощи скрипта
Доброго дня.
Возникла необходимость править страницы (возможно даже создавать) при помощи скриптов. Предусмотрена ли такая возможность системой?
Avatar
Aleksandr #2
Member since Mar 2010 · 587 posts · Location: Volgograd, Russia
Group memberships: Members
Show profile · Link to this post
См. https://www.dokuwiki.org/xmlrpc
ru: Пожалуйста, избегайте избыточного цитирования.
en: Don’t use an overquoting, please.
Avatar
Yaroslav #3
Member since Sep 2015 · 3 posts
Group memberships: Members
Show profile · Link to this post
Спасибо, но я сделал уже с помощью tftp и dwpage.php
Вопрос возникал больше из-за нерабочего скрипта dwpage.php.
Проблема решилась изменением 251 строчки на if(checklock($wiki_id)) {, т.к. checklock возвращает null при совпадающем пользователе. Мб кому-то поможет.
Avatar
Aleksandr #4
Member since Mar 2010 · 587 posts · Location: Volgograd, Russia
Group memberships: Members
Show profile · Link to this post
Напишете мануал?
ru: Пожалуйста, избегайте избыточного цитирования.
en: Don’t use an overquoting, please.
Avatar
Yaroslav #5
Member since Sep 2015 · 3 posts
Group memberships: Members
Show profile · Link to this post
Ну не мануал, а так, что хотел, что получилось
Задача моя заключалась в мониторинге изменения конфигураций оборудования и некоторых серверов. Т.к. наше оборудование умеет только TFTP, то вопрос о методе отправки конфиг не стоял.
Первым делом взгляд упал на скрипт dwpage.php. Но скрипт не работал, возвращал "Unable to obtain lock for ..."
Далее пробовал править файл, файл истории и метаданные вручную (удалять метаданные, перекурливать страницу и многое многое другое), но изменения в истории страницы появлялись не всегда (так и не понял, с чем связано).
В итоге начал разбираться со скриптом dwpage.php и опытным путем выяснил, что 251 строчка
if(checklock($wiki_id) != $this->username) {
не работает, а именно после блокирования пользователем checklock($wiki_id) возвращает пустое значение, что всегда не равно $this->username. Изменил её на
if(checklock($wiki_id)) {
т.к. если файл заблокирован другим пользователем, то выдает имя заблокированного пользователя.
В итоге вышел такой скрипт:
#!/bin/bash

move()
{
        while read data; do
        wiki_path=$(echo $data | sed 's/\/tftpboot/config/' | sed 's/\//\:/g')
        chmod 644 $data
        su www-data -c "/usr/share/dokuwiki/bin/dwpage.php -u cserver commit -m \"Update from\" $data $wiki_path"
    done
}

check_new_files()
{
        find /tftpboot/ -type f -mmin -2 | move
}

cd "$(dirname "$0")"

while true; do
        check_new_files
        sleep 100
done
Делаем из него сервис, добавляем в автозагрузку, делаем/настраиваем агентов, которые при изменений файлов будут закидывать их на TFTP и мы следим за изменениями важных для нас устройств и серверов.
This post was edited on 2015-09-21, 05:00 by Yaroslav.
Close Smaller – Larger + Reply to this post:
Verification code: VeriCode Please enter the word from the image into the text field below. (Type the letters only, lower case is okay.)
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Special characters:
Go to forum
Imprint
This board is powered by the Unclassified NewsBoard software, 20150713-dev, © 2003-2015 by Yves Goergen
Current time: 2020-04-02, 21:51:47 (UTC +02:00)