Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Технические вопросы по PtokaX _ Посылка команд процессу

Автор: Panasonic 19.12.2013, 9:41

Если вдруг подобный вопрос уже задавался - извиняюсь. Как послать команду процессу PtokaX? Нужно что бы при открытии определённого bat файла птоха перезагружал текстовые файлы.

Автор: Ksan 19.12.2013, 18:23

Panasonic, напишите и отправьте в чат команду:

Цитата
!reloadtxt
и файлы Птоки перезагрузятся.
Короче, всё делается через через строку сообщений, главное, написать в строке сообщений нужную команду и отправить в чат. Список доступных администратору команд можете получить так же командой, отправив в чат:
Цитата
!help

А чтоб не делать всё это через чат, можно в меню хаба (в админскую часть меню) и прямо из меню отправлять команды, результат будет тот же.
И такой скрипт с меню хаба есть на форуме. Кажется, называется HubMenu, поиском найдёте. Чего там не хватает, сами добавите по образу и подобию других присутствующих там команд.

Автор: Nickolya 19.12.2013, 19:42

Ksan, он же вроде задал условия для задачи:

Цитата
Нужно что бы при открытии определённого bat файла птоха перезагружал текстовые файлы.

Ты уверен, что посоветовал ему то, что он хотел?)))

А если по теме ТС, то наверно можно только сделать при помощи файла-маркера или записи в файле, допустим, если создан файл reload_txts в какой-то определенной папке, то ребутим скриптом текстовые файлы. в bat файле можно просто прописать создание файла-маркера.

Можно конечно просто воспользоваться удаленным администрированием хаба через http://mydc.ru/topic2131.html.

Автор: Alexey 19.12.2013, 20:01

Цитата(Nickolya @ 19.12.2013, 19:42) *
Ksan, он же вроде задал условия для задачи:

Но он сделал это так, что без толмача не разобраться.

Цитата(Nickolya @ 19.12.2013, 19:42) *
Ты уверен, что посоветовал ему то, что он хотел?)))

Да кто его знает, что он хотел...

Ещё можно заточить какой-нибудь из пингеров под эту задачу: будет при вызове из командной строки заходить на хаб под админским профилем и говорить !reloadtxt с последующим отключением от хаба. Осталось придумать, как ловить событие "при открытии определённого bat файла".

Автор: Ksan 19.12.2013, 20:14

Nickolya, я думаю, что ему важен не сам bat-файл, а именно перезагрузка текстовых файлов Птоки. А про bat он написал только потому, что не знал, что бы ещё придумать такого, чтоб перезагрузить эти самые файлы. big_smile.gif
Как-то так, я думаю. Дальше моя экстрасенсорика не может углубиться.

Автор: HackFresse 20.12.2013, 11:18

усложняете, товарищи))

Оно, конечно, можно как-то написать скрипт для хаба, который будет смотреть события виндового журнала безопасности и выполнять какие-то действия при появлении строчек "..\*\определённый_файл.bat" , но вероятность, что оно такое нужно, "крайне мала" (нужно постараться, чтобы придумать юзкейс)

"Определённый bat-файл" - просто специально написанный, чтобы каким-то образом отправлять хабу произвольные команды.
Да, я тоже вижу 2 варианта

1) бат-файл создаёт в назначенном месте специальный файл + на самом хабе висит скрипт, который будет выполнять команду по наличию файла или по его содержимому (список команд на выполнение).

2) примитивная реализация дц-клиента (переделанный пингер), который заходит на хаб от имени админа, выполняет несколько команд и отключается.

второй вариант мне нравится больше (больше гибкости, один "компонент", не нужна циклическая проверка наличия и содержимого файла, проще сделать обработку ошибок)

Нужно только найти пингер на переделку =)


Автор: Tsd 21.12.2013, 15:21

На примере покажу как я реализовал включение/выключение радио на сервере хаба, батники не привожу, там фантазия безгранична.

local sMenu = "= Меню хаба =\\X Радио\\"

tAllowed = { -- Профили, имеющие доступ
[0] = true, -- Owner
[1] = false, -- Admin
[2] = false, -- Operator
[3] = false, -- sVIP
}

function OnStartup()
sBot = SetMan.GetString(21)
end

function OpConnected(user)
if tAllowed[user.iProfile] then
Core.SendToNick(user.sNick,"$UserCommand 1 3 "..sMenu.."Включить$<%[mynick]> #radioon||")
Core.SendToNick(user.sNick,"$UserCommand 1 3 "..sMenu.."Выключить$<%[mynick]> #radiooff||")
end
end

function ChatArrival(tUser,sData)
if tAllowed[tUser.iProfile] then
local data = sData:match("%b<>%s(.*)|")
local sCmd = data:match"(%S*)"
if sCmd == "#radioon" then
os.execute("c:/StartRadio.bat")
Core.SendToUser(tUser,"<"..sBot.."> Мой Господин, радио хаба включено.")
return true
end
if sCmd == "#radiooff" then
os.execute("c:/ShutDownRadio.bat")
Core.SendToUser(tUser,"<"..sBot.."> Мой Господин, Радио хаба выключено.")
return true
end
end
collectgarbage("collect")
end

Автор: Артём 22.12.2013, 0:34

прикольно))) big_smile1.gif "Core.SendToUser(tUser,"<"..sBot.."> Мой Господин, Радио хаба выключено.")"

Автор: Panasonic 23.12.2013, 5:52

Опишу ситуацию подробнее... Есть сайт и хаб. Регистрация на хабе реализована через регистрацию на сайте. Через PHP код добавляются пользователи в файл RegisteredUsers.xml. Однако птоха просто не видит новых пользователей до перезагрузки файлов или перезагрузки самой птохи. Я эту проблему решил принудительным завершением и запуском процесса птохи через bat файл, который в свою очередь включил в php код (функция exec). Но постоянный ребут хаба это не дело. Поэтому суть вопроса такова - как можно послать команду (на перезагрузку текст. файлов) на хаб через php код или бат файл?

Автор: Ksan 23.12.2013, 7:19

Panasonic, и где вы были 4 дня, пока тут ломались копья? Может, давно бы уже решили вашу проблему, если бы сразу внесли ясность.
А по существу, решений несколько, я думаю. Одно из них - луа-скриптом хаба периодически считывать файл с вашими новыми юзерами (их ники и пароли), и, если их нет в среди уже регистренных, просто добавлять в текущий список регистренных юзеров. Открываете файл скриптом, парсите его, главное, получить оттуда последовательно сочетания ник - пароль (ну профиль, понятно, будет 2 (регистрированный юзер)), далее должен сработать примерно такой код:

Код
                RegMan.AddReg(sNick, sPass, 2) -- сам процесс регистрации
                RegMan.Save()  --  сохранение базы профилей

потом закрываете открытый файл.
Это не полный скрипт, а просто главный кусок, вокруг которого строите инфраструктуру, естественно. big_smile.gif Думаю, вам это просто будет сделать.

PS: Поправка - в коде цифра не 2, а 3... малость промахнулся (прицел сбился).

Автор: Panasonic 23.12.2013, 8:10

Все проверки уже реализованы через PHP. Задача проста, после регистрации нового юзера просто перезагружать текстовые файлы. А вот про скрипт вы подали не плохую идею. Но дело в том, что я нуб в LUA. Можете помочь в написании? Суть в том, что бы каждый промежуток времени, который задаётся переменной, вызывалась функция перезагружающая текстовые файлы?

Автор: Артём 23.12.2013, 15:56

Ksan,

Цитата
будет 2 (регистрированный юзер))

2 - VIP (стандарт птоки) , а 3 - Reg big_smile.gif
P.S. По теме, вэб-регистрация есть в http://mydc.ru/index.html?showtopic=1432&view=findpost&p=41688 посмотри как там сделано это, может поможет. big_smile.gif

Автор: Ksan 23.12.2013, 16:13

Артём, опс, да, 3.
Ведь собирался же писать 3, а откуда-то втиснулась двойка.
Вот же я троечник.. :(

Автор: Panasonic 23.12.2013, 16:26

Цитата(Артём @ 23.12.2013, 16:56) *
InstaHub посмотри как там сделано это, может поможет. big_smile.gif

Цитата
Но дело в том, что я нуб в LUA. Можете помочь в написании? Суть в том, что бы каждый промежуток времени, который задаётся переменной, вызывалась функция перезагружающая текстовые файлы?

Автор: Ksan 23.12.2013, 16:59

Нет. Через определённый промежуток времени проверяется файл из определённой папки, который заполняется (или обновляется, или по новой записывается, всё зависит от алгоритма вашего скрипта на хабе и скрипта сайта) сайтом, если в файле есть изменения (скажем, размер изменился, или появилось слово-признак), то скрипт считывает информацию из файла, сортирует как нужно, записывает в таблицу зарегистрированных юзеров и сохраняет эту таблицу в файл. Последние 2 действия я как раз и показал выше в виде кода.

Автор: Артём 23.12.2013, 17:21

Panasonic, а ты смотрел его или нет? там есть InstaHub\webreg и там куча РНРшных скриптов, возможно там интересное для себя найдёшь. big_smile.gif