Ну не мануал, а так, что хотел, что получилось
Задача моя заключалась в мониторинге изменения конфигураций оборудования и некоторых серверов. Т.к. наше оборудование умеет только 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 и мы следим за изменениями важных для нас устройств и серверов.