Днес поработих малко над новата NUKI верси. Най накрая докарах ред и до нея, а ми се ще да я пооправя малко преди  да пусна последната стабилна, вероятно и финална версия. Та имах идеята да проверявам колко дни е uptime на приемник,  че повечето ми правят проблеми след като са били повечко време, затова реших да правя през 10 дни един прфилактичен рестарт. Набързо драснах конвеирче дето да ми изчиства дните от останалите променливи защото резултата откомандата uptime е доста неприятен за работа

# uptime
12:13:57 up 30 days, 20:07,  1 user,  load average: 0.00, 0.00, 0.00

Та въпросни ред се филтрира само от суперския конвеир 😛

uptime | awk -F'up' '{ print $2 }' | awk -F'days' '{ print $1 }'

Като ако работното време е дни резултат е цяло число с дните, а ако е часове резулататът е подобен на

neo2shyalien@neo2shyalien-box:~$ uptime | awk -F'up' '{ print $2 }' | awk -F'days' '{ print $1 }'
1:34,  5 users,  load average: 0.46, 0.39, 0.41
neo2shyalien@neo2shyalien-box:~$

Заради Което минава през проверка за вида на стойноста

if echo $days | grep "^[0-9]*$" > /tmp/null
then
   echo "Uptime in days is $days"
else
  echo "Uptime isnt in days"
fi

Просто лесно и ясно в if-а конструкцията проверява дали стоиснота съдържа само цифри с регулярни израз grep „^[0-9]*$“.

Преид около седмица имах да драсна един проект на php. Общо взето немога да споделям детайли ама беше сравнително проста хава. След като го приключих останах ужасен от резултата – ужасно напсиан код, дърварщина, никакъв финес, единствено позитивно нещо беше, че е надежден. Ама аз необичам така, обичам като пиша да е по хубавия начин, а не с секирата насякан и набит. Добре, че не е публично достъпен, че иначе щях да си умра от срам. Такава разка загубана на умения я отдавам единствено и само на писането на bash-ове през последната половин година и тотална липса на по обектни похвати в програмирането. От вчера започнах фундаментално опресняване на познанията, че скоро ще ме очакват нови задачки закачки а няма се излгам като кифладжия с грозен код. След няколкочасове четене си припомних обекния модел в php, бях збаравил че колкото и да е смотан като езит php (което мнение аз не споделям) има изключително приличен обектен модел.

Еее доживяхме го има NUKI 1.0 🙂 Защо от версия 0.6 скочих на 1.0 ще ме попитате ами много просто – вече имаме едно 100% универсално NUKI покриващо всички изисквания, с малки изключения кото ще фиксна за в бъдеще и по важното настоящата версия е реализирана по коренно различен начин. Върнах се към старата ми идея да е демон и с малко проби и грешки този път нещата сработиха отлично. Сървърното приложение е изкормено изцяло като изключим едно кратки php скриптче от което черпи информация NUKI-то 🙂

Е вече постигнах почти всичко с NUKI накъде повече? Ами ко трябва да съм честен винаги може и повече, например обмислям да направя инсталатор на самия скрипт да речем да направя нещата някак си по лесни и разбираеми дори и за не линукс потребител всичко да се случва с възможно най- малко проблеми за потребителя. Но за всичко си има време. Към момента в NUKI освен всичко друго съм добаваил модул които следи за връзка към сървъра, ако изчезне самия приемник се рестартира. За момента все още несъм установил дали работи хихихиихх 😆 Абе като цяло вианги ще има какво да се желае още или някоя свежа идея от някои все пак една глава неможе да мисли като 2-3-4 или повече, дори и моята 😈

ps Отново пускам с кодово име. Смятам че вече имам една изключително твърда основа за всичко което реша за в бъдеще да правя със скрипта ми

След доста дълго писане и тестване най посля мога да споделя че 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 съръвър 😉 Лог системата е направена да ми различава рестартите и прочие че нали съм лювопитно хлапе хубаво е да знам 😉 Сървърната част е леко променен че да подава съответните аргументи към приемника които преди това съсм съставил от базата данни 😉 Ами в общи и не чак толкова общи линии е това