Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
Nagainos
- рядовой
- Сообщения: 31
- Зарегистрирован: 2008-06-09 9:38:10
- Откуда: в жопе алмазы...
-
Контактная информация:
Непрочитанное сообщение
Nagainos » 2012-08-24 15:12:56
Пишу сейчас скрипт для бекапа "Битрикс: Корпоративный портал" с использованием консольного curl'а.
Опишу алгоритм: 1) Авторизуемся в Битриксе, сохраняем куку. 2) Уже сформированным GET запросом пуляем в Битрикс (запрос собрал с помощью фаербага). И по-идее должен быть профит. Но! Как выяснилось после этого запроса Битрикс еще несколько раз отвечает клиенту информируя о ходе бекапа. Если эти запросы не принимать - бекап прекращается. Собственно вопрос - каким образом можно заставить curl еще около десяти минут имитировать поведение браузера принимая GET-ответы?
Код: Выделить всё
USR='USR'
PASSWD='PASS'
SITE='http://BITRIX'
COOKIEFILE='cookies.txt'
RUNPATH=`pwd`
COOKIE=`grep 'PHPSESSID' $RUNPATH/$COOKIEFILE | awk '{ print $7; }'`
#if [ ! -e curl ]
# then echo 'Please install cURL and run this script before' && exit 1;
#fi
curl -c $RUNPATH/$COOKIEFILE -d "AUTH_FORM=Y&TYPE=AUTH&USER_LOGIN=$USR&USER_PASSWORD=$PASSWD" $SITE/index.php?login=yes > /dev/null
echo $COOKIE
curl -b $RUNPATH/$COOKIEFILE -G -d "lang=ru&dump_file_kernel=Y&process=Y&action=start&dump_max_exec_time=45&dump_max_exec_time_sleep=0&&dump_integrity_check=Y&dump_file_public=Y&skip_mask=Y&arMask[]=/bitrix/backup&arMask[]=&max_file_size=0&dump_base=Y&dump_base_skip_stat=Y&sessid=$COOKIE" "$SITE/bitrix/admin/dump.php"
0xFF
Nagainos
-
Хостинг HostFood.ru
-
Хостинг HostFood.ru
Тарифы на хостинг в России, от 12 рублей:
https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.:
https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах:
https://www.host-food.ru/domains/
-
Nagainos
- рядовой
- Сообщения: 31
- Зарегистрирован: 2008-06-09 9:38:10
- Откуда: в жопе алмазы...
-
Контактная информация:
Непрочитанное сообщение
Nagainos » 2012-08-27 12:23:13
Извелись нынче извращенцы?
0xFF
Nagainos
-
kpp
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
-
Контактная информация:
Непрочитанное сообщение
kpp » 2012-09-02 21:41:18
Вопрос, конечно, интересный.
Думаю нужно поставить http-сниффер, выполнить все что надо через браузер, а потом проанализировать что когда кому шлет.
Задача сведется к повтору этих действий curl-ом.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
kpp
-
Nagainos
- рядовой
- Сообщения: 31
- Зарегистрирован: 2008-06-09 9:38:10
- Откуда: в жопе алмазы...
-
Контактная информация:
Непрочитанное сообщение
Nagainos » 2012-09-03 10:41:01
Про сниффер - уже
Иначе не получил-бы таких сведений.
Вся проблема в том что нужно поддерживать связь с http-сервером и отвечать на его ответы, в противном случае бекап не пройдет.
Вопрос заключается в том как это сделать.
0xFF
Nagainos
-
kpp
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
-
Контактная информация:
Непрочитанное сообщение
kpp » 2012-09-04 9:43:36
Что-то я не пойму: если есть сниффер, можно посмотреть что нужно чтобы "поддерживать связь" и повторить это curl-ом.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
kpp
-
Nagainos
- рядовой
- Сообщения: 31
- Зарегистрирован: 2008-06-09 9:38:10
- Откуда: в жопе алмазы...
-
Контактная информация:
Непрочитанное сообщение
Nagainos » 2012-09-04 11:18:31
Код: Выделить всё
Авторизуемся, сохраняем куку:
POST: AUTH_FORM=Y&TYPE=AUTH&USER_LOGIN=login&USER_PASSWORD=pass&Login=%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%D1%81%D1%8F&sessid=0397851b8ee611db37134ba9029020da
REPLY: Возвращается страничка с опциями бекапа.
Делаем запрос с параметрами бекапа
GET:
action=start
arMask[]=/bitrix/backup
arMask[]=
dump_base=Y
dump_file_kernel=Y
dump_file_public=Y
dump_integrity_check=Y
dump_max_exec_time=45
dump_max_exec_time_sleep=0
lang=ru
max_file_size=0
process=Y
sessid=0397851b8ee611db37134ba9029020da
skip_mask=Y
REPLY:
<div class="message">
<table cellpadding="0" cellspacing="0" border="0" class="message message-ok">
<tr>
<td>
<table cellpadding="0" cellspacing="0" border="0" class="content">
<tr>
<td valign="top"><div class="icon-ok"></div></td>
<td>
<span class="message-title">Сжатие...</span><br>
<div class="empty" style="height:5px;"></div>Файлов сжато: <b>4193</b><br>Размер файлов: <b>149.2 Мб </b> <br>Текущий путь: <b>/bitrix/components/bitrix/photogallery_user/templates/.default/lang/en/index.php</b><br>Затрачено времени: <b>45 сек.</b>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<script>
window.setTimeout("if(!stop)AjaxSend('?process=Y&sessid=0397851b8ee611db37134ba9029020da')",0);
</script>
GET: process=Y
sessid=0397851b8ee611db37134ba9029020da
REPLY: <div class="message">
<table cellpadding="0" cellspacing="0" border="0" class="message message-ok">
<tr>
<td>
<table cellpadding="0" cellspacing="0" border="0" class="content">
<tr>
<td valign="top"><div class="icon-ok"></div></td>
<td>
<span class="message-title">Сжатие...</span><br>
<div class="empty" style="height:5px;"></div>Файлов сжато: <b>15211</b><br>Размер файлов: <b>187.8 Мб </b> <br>Текущий путь: <b>/bitrix/components/bitrix/socialnetwork/templates/.default/result_modifier.php</b><br>Затрачено времени: <b>1 мин. 30 сек.</b>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<script>
window.setTimeout("if(!stop)AjaxSend('?process=Y&sessid=0397851b8ee611db37134ba9029020da')",0);
</script>
GET: process=Y
sessid=0397851b8ee611db37134ba9029020da
REPLY: <div class="message">
<table cellpadding="0" cellspacing="0" border="0" class="message message-ok">
<tr>
<td>
<table cellpadding="0" cellspacing="0" border="0" class="content">
<tr>
<td valign="top"><div class="icon-ok"></div></td>
<td>
<span class="message-title">Сжатие...</span><br>
<div class="empty" style="height:5px;"></div>Файлов сжато: <b>27142</b><br>Размер файлов: <b>253 Мб </b> <br>Текущий путь: <b>/bitrix/modules/idea/install/components/bitrix/idea/templates/.default/images/noavatar.gif</b><br>Затрачено времени: <b>2 мин. 15 сек.</b>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<script>
window.setTimeout("if(!stop)AjaxSend('?process=Y&sessid=0397851b8ee611db37134ba9029020da')",0);
</script>
***
GET: process=Y
sessid=0397851b8ee611db37134ba9029020da
REPLY: <div class="message">
<table cellpadding="0" cellspacing="0" border="0" class="message message-ok">
<tr>
<td>
<table cellpadding="0" cellspacing="0" border="0" class="content">
<tr>
<td valign="top"><div class="icon-ok"></div></td>
<td>
<span class="message-title">Создание резервной копии завершено</span><br>
<div class="empty" style="height:5px;"></div>Обработано таблиц: <b>454</b><br>Файлов сжато: <b>66225</b><br>Размер файлов: <b>4.1 Гб </b><br>Размер архива: <b>3.4 Гб </b><br>Затрачено времени: <b>16 мин. 16 сек.</b>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<input type="hidden" name="sessid" id="sessid" value="0397851b8ee611db37134ba9029020da" /> <script>
EndDump();
RefreshList();
</script>
Нужно повторить этот диалог с серваком. Проблема в том что слабо представляю как это сделать из консоли используя curl
0xFF
Nagainos
-
kpp
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
-
Контактная информация:
Непрочитанное сообщение
kpp » 2012-09-04 11:49:00
Авторизируемся на сервере, сохраняя куку :
Код: Выделить всё
curl -c cookies.txt -F "USER_LOGIN=login" -F "USER_PASSWORD=pass" адрес_сайта
Отправить параметры которые необходимо передать для начала процесса
Теперь в цикле с каким-то интервалом шлем "process=Y" используя ранее сохраненную куку :
Код: Выделить всё
curl -b cookies.txt -d "process=Y" адрес_сайта
При этом парсим ответ на предмет наличия фразы "Создание резервной копии завершено".
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
kpp
-
Nagainos
- рядовой
- Сообщения: 31
- Зарегистрирован: 2008-06-09 9:38:10
- Откуда: в жопе алмазы...
-
Контактная информация:
Непрочитанное сообщение
Nagainos » 2012-09-04 13:57:34
Спасибо. На днях реализую и опубликую скрипт на форуме.
0xFF
Nagainos