All streams
Search
Write a publication
Pull to refresh
6
0
Михаил Евгеньевич @fleaump

Пользователь

Send message
про то как слать через powershell

$EmailFrom = «server@mail.local»
$EmailTo = «some@mail.local»
$Subject = «Subject theme»
$Body = «Hello»
$SMTPServer = «mail-srv»
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25)
###Если надо акредитоваться
###$SMTPClient.Credentials = New-Object System.Net.NetworkCredential(“usr”, “pass”);
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)


Но лучше не страдать ерундой, а делать оповещения через централизованный мониторинг.
1. Если есть exchange, то ничего придумывать не надо, отправка мыла работает по умолчанию.

2. Системы мониторинга, тот же zabbix может снимать логи с винды из коробки(Item->zabbix active= eventlog[«Security»] ), и уже на нем накручивай какие хочешь триггеры на события|коды событий, а уж оповещалки и на мыло, и на телефон через тот же pushbullet, и даже через sip позвонить голосом, а так же градация по важности. И не надо городить велосипеды с тем что с разного оборудования одни алерты как то клеить, с других осей третьи свистелки оповещалки.

Лень двигатель прогресса.
А чем по крону не устраивает делать то же самое? По ночам конвертить спокойно и складывать куда надо.

И прав не надо давать, лишняя лазейка же, тем более права даются на такое как chown chmod, что равно сильно простому запуску под рутом по возможностям.
Сливает в бд, а с бд уже работает самописный сайт с которого тыкаю что воспроизводить на ТВ.
кусочек php
<?php
include_once("http.php");

class KinoPoisk {

        public function Parse($subject) {

                $p = '#itemprop="name">(.*)</h1>#';
                preg_match($p, $subject, $matches);
                $name=strip_tags($matches[1]);

                $altname="";
                $p = '#itemprop="alternativeHeadline">(.*)</span>#';
                preg_match($p, $subject, $matches);
                if(count ($altname)!=0)
                        $altname=$matches[1];

                $p = '#<a href="/lists/m_act%5Byear%5D/(.*)/"#';
                preg_match($p, $subject, $matches);
                $year=$matches[1];

                $p = '#<img width="205" src="(.*)" alt#';
                preg_match($p, $subject, $matches);
                $img=$matches[1];


                $p = '#itemprop="description">(.*)</div>#';
                preg_match($p, $subject, $matches);
                $desc=$matches[1];

                $p = '#IMDb:(.*)</div>#';
                preg_match($p, $subject, $matches);
                $imdb=$matches[1];

                $p = '#rating_ball">(.*)</span>#';
                preg_match($p, $subject, $matches);
                $rating=$matches[1];


                $p = '#itemprop="genre">(.*)#';
                preg_match($p, $subject, $matches);
                $genre=strip_tags($matches[1]);
                return array("name"=> mysql_real_escape_string(html_entity_decode($name)),
                                        "altname" => mysql_real_escape_string(html_entity_decode($altname)),
                                        "img"=>$img,
                                        "year"=>$year,
                                        "genre"=>mysql_real_escape_string(html_entity_decode($genre)),
                                        "desc"=>mysql_real_escape_string(html_entity_decode($desc)),
                                        "IDMb"=>mysql_real_escape_string(html_entity_decode($imdb)),
                                        "rate"=>mysql_real_escape_string(html_entity_decode($rating)));

        }
        public function GetAndParse($film) {
                $curl = new HttpBurn();
                $html = $curl->Get($film);
                $data = $this->Parse(iconv('cp1251','utf-8',$html)) + array("URL"=>$film);
                return $data;
        }

        public function Find($film) {
                $curl = new HttpBurn();
                $f = $curl->Get("www.kinopoisk.ru/index.php?first=no&what=&kp_query=".rawurlencode($film));
                $p = '#<p class="pic"><a href=\"(.*)\"><img#';
                preg_match($p, $f, $matches);
                $f = $matches[1];
                $p = '#film/(.*)/sr/#';
                preg_match($p, $f, $matches);
                $html = $curl->Get("http://www.kinopoisk.ru/film/".$matches[1]);
                $data = $this->Parse(iconv('cp1251','utf-8',$html)) + array("URL"=>"http://www.kinopoisk.ru/film/".$matches[1]);
                return $data;
        }


}


cat http.php


<?php


class HttpBurn {
        public $UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0";
        public $headers = array
        (
                'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*;q=0.8',
                'Accept-Language: ru,en-us;q=0.7,en;q=0.3',
                'Accept-Encoding: deflate',
                'Accept-Charset: utf-8,windows-1251;q=0.7,*;q=0.7'
        );
        public $refer = "http://ya.ru";

        public function Get($URL){
                if($ch = curl_init($URL)){
                        curl_setopt ($ch, CURLOPT_USERAGENT, $this->UserAgent);
                        curl_setopt($ch, CURLOPT_HTTPHEADER,$this->headers);
                        curl_setopt($ch, CURLOPT_REFERER, $this->refer);
                        curl_setopt($ch, CURLOPT_COOKIEJAR, "kino_coo.txt");
                        curl_setopt($ch, CURLOPT_COOKIEFILE, "kino_coo.txt");
                        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                        $result = curl_exec($ch);
                        curl_close($ch);
                        return $result;
                }
                return null;
        }
        public function Post($url,$post){
                if( $curl = curl_init($url) ) {
                        curl_setopt ($curl, CURLOPT_USERAGENT, $this->UserAgent);
                        curl_setopt($curl, CURLOPT_HTTPHEADER,$this->headers);
                        curl_setopt($curl, CURLOPT_REFERER, $this->refer);
                        curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
                        curl_setopt($curl, CURLOPT_POST, true);
                        curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
                        $out = curl_exec($curl);
                        curl_close($curl);
                        return $out;
                }
                return null;
        }

}




Там на целую статью, данный кусок просто ищет в кинопоиске запрошенный фильм,

$o = new KinoPoisk();
$film = $o->Find("а зори здесь тихие");
var_dump($film);

Но момент,- на сайте кинопоиска лучше искать через гуглю. Весь обвес выложу статьей.
А так, в итоге отказался этого мониторинга папки, у меня всё что требуется выполняет скрипт по завершению скачки:
«script-torrent-done-filename»: "/var/lib/transmission/.config/transmission/do.sh",

он вынимает ссылку из торрент файла на то место откуда был скачан( сейчас все любят в поле Comment URL страницы скидывать) если нет там url, то парсит выдачу с яндекса- ищется где файл аннонсирован.
Далее если кинцо, то кидает в кино, парсит страницу -> переименовывает, парсит кинопоиск -> вкидывает описание и прочее.
Всё.

Автокачем и докачем не занимался, сериалы смотрю уже когда вышли серии.
Проблем-то нагенерировать связок, это первое, второе там можно подкрутить чтобы учитывались подпапки через рекурсию, ключ -r и просто другой формат отдачи поймого события и будет тоже что вы описали до RSS. Вообщем, под свою задачу — своё решение.

1) Автоматический парсер дирректорий с поддиректориями с нахождением .torrent файлов и

Для трансмишена когдато впилил

там где стартует демон вписал
nohup /root/scripts/notyfy.sh /opt/samba/torrent/video/ /opt/HDD/video/ &
nohup /root/scripts/notyfy.sh /opt/samba/torrent/music/ /opt/HDD/music/ &
nohup /root/scripts/notyfy.sh /opt/samba/torrent/distr/ /opt/HDD/distr/ &



и сам скрипт
#!/bin/bash
#как запустить в фоне
#nohup /root/scripts/notyfy.sh /opt/samba/torrent/video/ /opt/HDD/video/ &
#inotify-tools не забудьте поставить

[ $# -ne 2 ] && { echo Usage: $0 [/torrent/watch/dir/] [/when/torrent/download/]; exit; }
DIR=$1
DWN=$2

###Авторизация для трансмишеа
AUTH=" 192.168.1.1:9091 -n user:password "

while RES=$(inotifywait -e create $DIR --format %f .)
do 
 if [ ! -z `expr $RES : '.*\(torrent$\)'` ]; then

    transmission-remote $AUTH -a $DIR/$RES --download-dir $DWN;
    rm -f $DIR/$RES;

  fi
done



как только появляется торрент файл в папке, он тут же скармливается и удаляется. inotifywait фича ядреная, так что не нагружает.
Было бы еще хорошо чтоб была поддержка HDMI CEC(
RainBowSix 3 старый PCшный позволял перед миссией сделать план штурма с разрисовкой какая группа откуда и как пойдет, синхронизация действий, обработка «что делать перед дверью», огневые позиции и т.д и т.п… Можно было самому всё пройти, как в любом шутере, а можно было дать всё на откуп ботам, которые по построенному плану действовали, а ты просто наблюдал со стороны.
Астериск, софтфон c видео, ноутбук.

для остального мастеркард.

PS Нужно если HD, то берется внешний видеомикшер.
Пупетка вещь хорошая, только вот маловато о ней описано.
Мб вторую часть?
>Во-первых, iDrac никогда не заменит массовую установку через pxe. Представьте, у Вас под 200 серверов,
Образ готовой системы можно разворачивать как угодно, в данном случае просто поинтересовался, что так заморачивались с IPKVM, т.к. про Express лицензию iDrac ни слова в статье
>Во-вторых, изначально IP KVM
Вкурсе

>Вы почему-то рассматриваете инфраструктуру «с нуля»
Такие вещи всегда планируют, что тут обсуждать

>Не до конца понимаю как Вы видите мою инфраструктуру сидя за монитором, что беретесь судить о том, как «на деле»:
>>На деле, парк из сотен физических серверов разносольным никто не делает
Тут не о вашей инфраструктуре, а из статьи:
А если это 10 или 20 или 100 серверов?


>В-третьих, я продолжаю слышать нотки теории в Вашем комментарии.
Это вы зря :)

>Другая несостыковка — это не работает в среде стартапа, где темпы роста компании намного больше чем возможность оглянуться назад и сделать рефакторинг.

Отлично работает, если изначально об этом подумать, виртуализация дает отличную маштабируемость и апдейт на новый сервер занимает считанные минуты(если просто замена железки, и диски виртуалок доступны для нового сервера изначально локально), достаточно развернуть гипервизор, и всё, тащи виртуалки туда и давай им больше ресурсов.

>К тому же со стороны сервиса надежность железного сервера выше чем надежность 10 виртуалок на 1м сервере, потому что на один сервис приходится один полностью, как минимум, вдвойне зарезервированный (redundant) сервер (CPU, Memory, PSU), в то время как в соотношении 10:1 на каждую виртуалку приходится только часть зарезервированного сервера, но я думаю это и так понятно что это означает.

Используйте кластеры виртуализации, либо более простое: если железка упала — включаешь всё на резервной, и ставить ничего не надо, нажал вкл и оно запустилось. Так же, надежность надежностью, а развернуть заново виртуалку можно в разы быстрее, и не важно их кол-во.

>В-четвертых, с чего Вы взяли что в моей боевой среде нужны «физически немощные сервачки»?
«Сервачок» в контексте виртуализации, это скорее сервис или задача.

>В-пятых <...> виртуализацию я люблю
и я того же мнения :)

>Если бы сейчас мне предложили проект, который бы получил пользу от гибкости, где нужно было бы конфигурировать типовые машинки с небольшим количеством памяти и CPU — я бы с великой радостью все сделал виртуализированно НО все так же использовал бы PXE,

А я бы клонировал эталонную машину :)
По поводу кучи серверов и нахлабучивания из разносолов — виртуализация нас спасёт, много физических серверов это гемморой. 10 физически немощных сервачков лучше разместить ввиде виртуалок на 1м нормальном, и утилизация железа хорошая, и в случае смерти железки всегда можно бекапы виртуалок(а если образа дисков хранились на отдельной дисковой полочке, то считай, почти без потерь) тут же оживить в другом месте. При определенных условиях уже можно кластер поднять из нескольких нод, для пущей надежности.

PS
На деле, парк из сотен физических серверов разносольным никто не делает, конечно если они не для аренды.
А чем iDrac родной от DELLа не устроил? В нем есть же возможность через виртуальный привод монтировать образа с локальной машины.
или просто сделать проброс на шлюзе RANDOMPORT->server:443
отключайте вебморду, и используйте телнет, и вообще voip не надо делать светящим в инет, а в локалке отделить их отдельным вланом.
вебморда отключается через телнет, на телнет по гостю не зайти -> profit
highscreen boost
4160mAh батарейка, не менее 2,5 дней активного насилия вайфаем\скайпом\яндекскартами\серфом\музыкой на 1 заряде.
+ факс??

Приходишь домой, а там тебе анонимные школьники скульптур на присылали.

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity