MacCentre
Форум: Mac и Mac OS X
Тема: Как определенному процессу заблокировать доступ в сеть
Страницы: 1 [2]

[Ответить]
EsTaF [07.05.2015 12:58] :
Ну, есть программа на питоне, которая следит за разным контентом и, если видит на одной из страниц активизацию потокового видео, то прослушивает данные о потоке и отдает это дело уже в rtmpdump приложение, которое становится наследником. Но саму программу, что на python, не разбирал. А проблема в том, что если сделать kill наследуемому процессу, или удалить на ходу файл, который может быть уже не нужен, то родителя начинает глючить и через час другой он валится. Ибо следит за процессами (ибо, как предположение, если какой из контента с опр. страницы уже качается, снова не качает, пока не закроется поток видео).
Что бы программа не валилась, нужно самому закрыть соединение для опр. наследуемого процесса и только потом удалять файл.
Программе можно указывать страницы, за которыми нужно следить (список алиасов ака path segment (http://domainname/pathsegment) после имени домена), за которыми она будет следить.

Обошел тем, что создал одно cron задание на поиск файлов по дате и перемещение оных в параллельную директорию, cкрипт из двух частей и список-исключение. В такой список достаточно занести алиас-исключение, запустить скрипт и будут удалены все файл с именами, что есть в этом списке, и алиас в списке, за которым следит программа. естественно, удаляются лишь файлы в этой параллельной директории, а не в той, в которую идет закачка.

crontab -e:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
*/5 * * * * find /home/iron/1/tmp/captured/ -type f -mtime -7 ! -mmin -2 -exec mv "{}" /home/iron/1/tmp/111/ ";"
7 - это на глаз. не суть важно значение. можно и день поставить, вместо недели. двойка - то же. можно и минуту, но почему-то минуту не стал. вдруг дата не обновится в метке за минуту.
так как при закачке файл имеет дату изменения реалтайм, то такие файлы не перемещаются. Остальные переносятся во вторую директорию.

список алиасов list.txt
r24russia
1tvnet
scanermanual
davincicasting
итц

к примеру, качаются все потоки, что есть на http://domainname/r24russia, http://domainname/1tvnet и так далее. Прибить наследуемый процесс нет возможности, но на него можно забить, дождавшись конца потока и он сам перепрыгнет в соседний каталог за счет find /home/iron/1/tmp/captured/ -type f -mtime -7 ! -mmin -2 -exec mv "{}" /home/iron/1/tmp/111/ ";"
Но, если алиасов много, и файлов, которые нужно удалить, что бы не маячили на глазах при последующем пересмотре, то же много и они все с разными именами - это все держать в голове, или даже потом из списка руками как-то не очень удобно. А заодно еще и удалять из списка. Это много действий. Делается список с исключениями, файлы и строки которых нужно удалить. К примеру exclude.txt:
scanermanual

Получается скрипт:
file2=/Volumes/media/tmp/pytjon001/exclude.txt
file1=/Volumes/media/tmp/python001/list.txt
for i in `cat $file2`;
do
find /Volumes/media/tmp/111 -mindepth 1 -name *$i* -delete;
done
#
for a in `cat $file2`; do sed -i -e "/$a/d" $file1; done
########
for a in `cat $file2`; do sed -i -e "/$a/d" $file1; done - этой командочкой очень удобно бить все строки в целевом файле, которые есть в файл-списке исключении.
Словом, обошел, да и проще. Хотя, можно было бы устроить мультискрипт и для блокировки соединения опр. процессу+удаление алиаса из списка+удаление самого файла, если он получил заголовок, как уже не просто стрим, а контейнер полноценный.
Мне остается лишь забить алиас в файл исключение и запустить скрипт и будет произведена туча рутинных действий. А так как потоки живут не более часа, двух, то файл исключение можно периодически подчищать, что бы не нагромождать процесс лишними действиями.

саму питон прожку взял здесь https://www.reddit.com/r/DataHoarder/comments/2mlk2f/capturebate_chaturbatecom_automated_data/
естественно, не для chatturbate))) то есть, переделал ее немножко, но c отслежкой процессов в ней так и не разобрался, что бы она забивала на проблемы у процессов потомков (в плане их ругани на исчезнувший файл итц).
[Ответить]
[< Назад]