След доста дълго писане и тестване най посля мога да споделя че 0.6-та версия на NUKI е факт. В нея подобренията са токова много и всичко е толквоа променено, че направо все едно е написана наново 🙂 Стига глупости ми да давам направо.

  1. Изцяло пренаписанан и променена логика за проверка на процесите по приемниците
  2. Разделение на приемниците на приемщи свободен и криптиран канала
  3. Универсализация на декриптиращия процес 🙂 😉
  4. Връзка са база данни защото предавам аргументи за по горните точки към скрипта на NUKI
  5. Оптимизация на сктиптовата скорост 🙂
  6. Скритовете на приемника са 2 един основен и един допълнителен за проверка на процесорното време на процесите – просто се опитвам да постигна функционалноста на дефиниране на функции които ги няма в ash

Малко по грамотно описание в changelog-а 🙂

Ами маи са момента това стига 😉 Не са малко промените. Производителноста на скрипта стана неколкократно по голяма – от пускането му до момента не ми се е налагало да рестартирам на рака приемник 🙂 Сега забелзам че съм ибрал интересна дата за анонсиране ден преди рождения ми ден хихихихихихи Поздравче с следната песничка, както и за мен след толко тежък труд 😆

А и забравих да кажа защо съм избрал кодово име за тази версия 😉 Защото е вероятно някои от последните версии преди да достигна 100%-ва функционалност която искам 😈

http://www.youtube.com/watch?v=hUokMbJC3P8

Най- после ми остана да оправя и последните щрихи около моето скромно проектче NUKI 🙂  Като цяло има адски много промени каде явни каде не, но определено си беше доста ползотворно упгреидване по всички скриптове и дори се наложи да добавя 2 нови че  мигрирам от плоски фаилове към бази данни 😉 Също така си направих и едно changelog фаилче, че нали съм старост нерадост забравям кога какво 😉 Фаилочето е с кодиравка UTF-8, да знаете в случаи че го отворите през браузара 😉 Стига празни приказки нека да представя промените 😆

Подобрена функционалснота за дневниците:
1. Заради неточност в времето на повечето приемници се взима времто на сървъра
2. Повече информация – причина за рестарт на приемника
Клиентската част получава параметри за това дали канала е криптиран, ако е криптиран и няма необходимия сервиз се рестартира приемника. Ако не е не е задължителен рестарта.(бъдещо фиксване)
Сървърната част предава аргументи

Като цяло нещата по логването бяха много бъгави всели приемник с негова си дата и час и определено ми беше проблем, затова реших че е по разумно да идва дата от сървъра които съм го закачил към NTP съръвър 😉 Лог системата е направена да ми различава рестартите и прочие че нали съм лювопитно хлапе хубаво е да знам 😉 Сървърната част е леко променен че да подава съответните аргументи към приемника които преди това съсм съставил от базата данни 😉 Ами в общи и не чак толкова общи линии е това

Днес тъкмо се чудех какво да пиша и попаднах на нещо доста интересно NUKI вече е известна и на поне 1 румънец хихихихи Имам си посещение свързано с NUKI от румънския google 🙂  Много забавно

Nuki – Sistemul de monitorizare a Dreambox

А скоро ще изкарам новата версия на NUKI с доста промени уж дребни а доста сериозни сега е в тестинг и ако след няколко дни поакже добри резултати, изчиствам бъговете и я пускам 🙂

ps Май беше малко безмислен пост ама нека ви потровя нервите 😈

От доста време тия „спящи кутии“ ми торвят здравето 🙂 В конкретност работят работят и в някои момент забие приемника и изисква рестарт на CAM модула. В моя случаи ползвам newcs и mgcamd за декодиране на програмите и когато забиеше някоя програма mgcamd процеса се претоварваше развиваше стоиности от порядъка на 80-90% заемане на процесорна мощ 🙂 Ясно вече имаше болест имаше и симпом само лекарство ми трябваше 😉 хубаво ама мъничетат ми 500s не разполгат с голям капацитет от команди например ps няма u аргумента top няма -p и т.н много мразим busybox 😆 Стига дивотии нека да мина към същината 🙂 Всичката необходима информация се съдържа в папката /proc след достa четене напред назад и след помощ от добрия ми прител ShadowX без които нямаше да успея се стигна до следния прекрасен скрипт клик 🙂 Също така и моя прител Nathariel които ми търпеше жуженето през цялото време 😉  ХАХ типично за мен започвам да обяснвам нещо започвам второ трето и пето 🙂 хахахах Така стига дивотии ами да взема да се хваля колко готен програмист съм 😉

Най важната конструкция в скрипта е

# Get usage cpu time
cputime=`cat /proc/uptime | awk '{print $1}' | sed 's/\.//'`
# Get process usage cpu time
proctime=`cat /proc/${procpid}/stat | awk '{t = $14 + $15;print t}'`
# wait 5 seconds
sleep 5
# get usage cpu time, again
cputime2=`cat /proc/uptime | awk '{print $1}' | sed 's/\.//'`
# get process usage cpu time, again
proctime2=`cat /proc/$procpid/stat | awk '{t = $14 + $15;print t}'`
# calculate process usage cpu time over total usage cpu time as percentage
cpu=$((($proctime2-$proctime)*100/($cputime2-$cputime)))
# limit exceed check
echo CPU usage for PID $procpid is $cpu
if [ $cpu -gt $MAX ];
then
reboot
fi

като цяло добре съм си я описал с коментарчета като добре дете 😉 Общо взето това е сърцето на скрипта взима стоиност от /proc/ид-то-на процеса/stat и следтова изчита стоиноста 5 секунди по късно. Формулката за ичисляване е кристално ясна за разбиране и второкласник ще я реши лесно. Нещо много важно за наблягане е, че скрипта ползва ash които си е доста неприятно окълцан ако си свикнал с всички лигни на bash 😉 В страничката на скрипта съм описал по подробно технологията на работа и логиката на ползване. Ще се радвам на мнения препоръки и бъг репорт, защото една глава не стига 🙂

Както знаете от доста време едни dreambox-ове ми вгорчават живота 🙂 Понякога забива CAM модула без видима причина и се налага рестарта му или понякога дори на целия приемник. Общо взето приемниците имат добър уеб интерфеис за оправление и всичко се прави лесно през него, НО (голямо но) е възможно да го позлвам само когато съм в офиса защото съм ги скрил зад рутера там. Като цяло единствения вариант за контрол оставаше да се ssh-на към рутиращата машина и след това към приемниците с telnet. Обаче наскоро разбрах че приемниците могат да приемат команди от външни скриптове рефлектиращи върху cgi-bin директорията. Примерно/cgi-bin/admin?command=reboot ще рестартира приемника. Супер нали 😉 Като цяло надращих набързо едно php с което да изпълнявам команди по приемниците, НО имах още един приблем – автентификацията. През уеб иска потребителско име и парола – нормално нещо но щеше да отнеме доста писане ако не ми бяха дали идеята да пробвам по стария начин за оторизация с подаване на информация в url http://root:dreambox@dreambox/cgi-bin/admin?command=reboot и сработи 🙂 от тук нататък нещата са ясни 🙂

function exe_command($dreambox,$command){
 $result = @fsockopen("$dreambox", 80 , $errno, $errstr, 4); //check if dreambox is accessble ovear lan
 if($result) {
 echo "Command executed for $dreambox";
 @fopen("http://root:dreambox@$dreambox$command","r");
 do_form($dreambox);
 }else{
 echo "Bad no access to $dreambox";
 do_form($dreambox);
 }
 }

Това ми е основната фукнция в контрол панела другото са валидизациия на променливи и хтмл генератори.

ps Ето го и почти пълен списък с командите които подържа приемника 🙂 Също така може да се имитират и натискания на бутони пак с подобни команди 🙂 ако някои е заинтересован да свирка