Մոտ կես տարի հետո իմ վերջին վերանայման վերաբերյալ Dreambox monitoring ситестемата ես կարող եմ анонсирам նոր, եւ, թերեւս, վերջին տարբերակների Нуки. Տարբերակը պատրաստ է եղել դեռ 2 ամիս, բայց երբ ծուլություն, որտեղ կարգաբերում բաներ позабавиха հայտարարության հետ. Մի քանի օր է աշխատանքի 32 dreambox 500-s եւ, ընդհանուր առմամբ, արդյունքները շատ լավ. Փոփոխություններ են շատ – հեռացվել էր идиотската звисимост է Линукс server փոխանցման համար տեղեկամատյանները – պետք է ունենալ apache + php, քանի որ նոր համակարգը արձանագրել ամսագրեր, ինչպես ներկայացվում է պարամետրերի php script սերվերի վրա. Բացի այդ, ես փոխել սցենարը պետք է աշխատել առանց սերվերային մասի – եթե դուք ունեք արբանյակային ընդունիչներ իմաստ ունի՞, որ դուք մշտապես սերվեր որոնցից կգերազանցվի инфото ուստի կարող է հասցնել хардкоднато է script-ի հետ 2 տեղեկություններ փոփոխականների CAM-իսկ. Բացի այդ, ես հայտարարել եմ լրացուցիչ փոփոխական կարգաբերում – եթե դուք չեք ցանկանում, որ ձեզ ոչ flicking ամսագրեր – կրկին հիմար վրիպում համեմատ ավելի վաղ 🙂 Թեթեւ поправики կոդը էին напревени, որ կարծես թե գրվել է полуграмотен олигофрен (ոչ թե այն, որ ես, անկասկած, դե). Սուր մենք մեզ էին 2 քննադատական սխալի կոդը, առաջատար դադարեցնել աշխատանքները սցենարի ինչ-որ պատահական, կրկին oligofrenski բացթողումները իմ կողմից. Ընդհանուր առմամբ նամակ էր շատ պարզ էր համարում, կատարել է, թե ինչպես են մարդիկ, որ busybox եւ ash առավել պարզ բաներ առաջարկ միայն. Այս անգամ ես կարող եմ փրկել ձեզ մեծ тираду կոդով, և հենց բացատրել, թե ինչ փոփոխականների համար, թե ինչպիսի մանիպուլյացիա կարելի է անել դրա հետ (նոր) 🙂

SERVER="192.168.100.1"
 STANDALONE="FALSE" #using like stand alone app no server side depends ; )
 HCAM1="" ## if starting like stand alone app give me CAM namezzz if HCAM1 is empty its means chanel is free
 HCAM2="" ## CAM2 name
 PORT="666" # port rockzzz : D : )))))))))))))))))
 IP=$(ifconfig eth0 | grep inet | awk '{print $2}' | sed -e '[email protected]:@@')
 FILE='/tmp/debug'
 INFO='/tmp/info_file'
 NC=$(which nc)
 WGET=$(which wget)
 MAX_DAYS="10"
 TIMEOUT="600"
 MAX=70 #max cpu usage per process
DEBUGING="TRUE" #if u wanna script send debug information set DEBUGING to TRUE if SEVERLESS is set to true this var will be skiped
 NEWDBGSTYLE="TRUE" #debuging new style sending info to apache derectly, old style using nc

Այնպես որ, ակնհայտ է, անունները променливити խոսում են իրենց համար բավարար է, բայց միեւնույն է, եւ ես կարող եմ ասել մեկ բան է, իսկ մյուսը խելոք խոսքը.

ՈԼՈՐՏ մեկն է առավել կարեւոր փոփոխականների, եթե сетната, ՃԻՇՏ է, պետք է անել выбираясь սերվերի վրա և չի պահանջում կախված է սերվերի, եթե դուք օգտագործում եք այն, դուք պետք է տեղադրել արժեքները և հետևյալ HCAM1 (ես չգիտեմ, թե ինչու ես այդպես անվանել է այնպես, որ չեմ հիշում արդեն, բայց անկախ նրանից). Եթե ոչ stoinost դրան, իսկ скритпа առանձին սցենար է ենթադրվում կաշխատի незашифрованный ալիքը, եւ չի անում ստուգում декриптиращ մոդուլ, եթե այնտեղ պետք է ստուգել տվյալ stoinost. HCAM2 , որը պարտադիր ենթակա է, եթե ձեր մոդուլ օգտագործում է միայն 1 գործընթացը, ասենք, օրինակ CCcam.

DEBUGING երկրորդ հետաքրքիր է փոփոխական կլինի ձեզ прлюе տեղեկատվությունը կամ լռել: կախված է, թե ինչ նշանակություն դուք խրված. Авотматично ընթանում է հանգիստ, կարգաբերում, եթե ՈԼՈՐՏ դա TRUE

NEWDBGSTYLE վատնում կարեւոր փոփոխական. Այն սահմանում է, թե ինչպես է փոխանցվել սերվերի ամսագրերի. Եթե TRUE, նոր, առանց անկախ netcat. Եթե բոլորը նույն հին մեթոդ է մտնում ԿԵՂԾ. Հիմնականում դա բաներ, որոնց վրա պետք է կենտրոնանալ, բայց ես կարծում եմ,, որ, չնայած արմատական փոփոխություններ կմնան գաղափարը թափանցիկ նախնականը 🙂

Հաստատ, ես շատ գոհ է, թե ինչպես են ստացել բաներ – սցենարը բավականին ճկուն отпднаха идиотките կախված լրացուցիչ ֆայլերը գործառույթների ինչպես արդեն отпдна եւ կախված nc ես կարծում եմ, կամ էլ անհրաժեշտություն է սերվերի վրա, եւ այդ պատճառով ամեն ոք ունի 30+ box-ա որ կա, եւ սերվերի, կամ դա կարող է լինել միայն ինչ-որ домаше երթուղղիչին. Դեռ կան, որ բարելավել է, սակայն այժմ ես կարող եմ հրաժարվել բաներ takvia, քանի որ կարեւոր է, 🙂

Ֆայլերը, որպես կանոն, գտնվում են կատալոգ իսկ դամբարանը ներդրումը ամսագրեր դուք կարող եք բեռնել հետ այստեղ

Եւ եթե լավ սցենար արագացված բոլոր արագացուցիչների 😀

Ընդլայնված by Zemanta

Գրեթե մեկ տարի ես աշխատել եմ, իմ democheto НУКИ. Այսօր ես ժամանակ, որպեսզի ամեն ինչ, քանի որ կային բազմաթիվ բաներ, որոնք շատ լավ. Ես ավելացրել է մի քիչ նոր ֆունկցիոնալ. Пренаредих կոդ, ավելի շատ գործառույթներ, այնպես, որ այն նվազել է եւ վերանայման դարձել է ավելի հարմար օգտվողի համար.

Հիմնական նոր ֆունկցիոնալությունը, որը ես signal trap-իսկ. Ինչ-որ պահի, երբ դուք միացնել ընդունիչ dreambox սատանա որոշել է սպանել նրան, եւ դրանով դադարեցումը գործընթացի մոնիտորինգի ինձ, որ ինքնին բավական տհաճ պահին. Թե ինչպես է պարզել, թե ինչ է տեղի ունենում, քանի որ տեղ ամսագրերում-դա безбожно քիչ է, եւ դուք պետք է կատարել բարդ սխեմայի հետ, ցանցային ռեսուրսները, որոնց հետ իմ գործը չէ. "Մեծ է գծի signal ծուղակ-a ունի հաճելի գույքը բաշ սցենարներ կալանման համար ազդանշանին արդյունքները, կամ այնպիսիք, ներկայացված նրանց kernel-a միջոցով kill ասենք 😉 եւ, այսպիսով, մենք կարող ենք կանխել որոշ անմիջապես հաջորդող իրադարձությունները. Միայն ավելացնեմ որ SIGKIL կամ սպանությունը -9 չի կարող կանգնեցնել ու կանխել, այնպես որ, դիզայն core. Նա դադարեցնում է իր PID անմիջականորեն ներկայացված. Այժմ համապատասխան կոդը

#trapping signals I know -9 dosent work but we try it just in case ; )
trap on_exit 0 14 1 2 9 13 15 6 8 4 3 11 5
on_exit () {
make_debug 10 #unexpected error
#reboot now if we hawe trapped signal
reboot -d 0
exit 0
}

Մեր առաջին տողը հայտարարում է, թե ինչ գործողություններ է ձեռնարկել եւ ինչ ազդանշանները կարող են прихващаме ավելի ազդանշանների մարդ ազդանշանները 😉 Այս դեպքում, ինձ հետաքրքրում է. Ինչպես երեւում է, հանգեցնում է մի պարզ функциика որ ստիպում է կարգաբերում հաղորդագրություն եւ reboot ընդունիչ. Անկասկած ճաշ, ինչը կհանգեցնի արդյունքների, որոնք ես ակնկալում եմ, քանի որ ես կարծում եմ, որ կանխում է սպանության kill -9 բայց ոչինչ չի խանգարում է փորձել.

Այլ խոշոր փոփոխություններ գործառույթների, շատ բաներ, որոնք կրկնվում են կոդի նրանց наблъсках հատկապես, որ մի քիչ տհաճ դիտելու, ոչ թե, որ հիմա դե - 😉 Ես թեթև դրամ վերադառնալու բաշ-ա – ես դնում return նույն գործառույթները, եւ ակնկալում են, վարքագծի, ինչպես եւ բոլոր այլ հայտնի ինձ ծրագրավորման լեզուներ, սակայն պարզվել է, որ return վերադարձնում է միայն ամբողջ արժեքներ, եւ դա առավելագույնը 2 😀 իսկ ես ուզում եմ, որ ինձ վերադարձնել string. Գոյություն տգեղ svinshtina. Լուծումը շատ պարզ է

#---cuted---

if [ $T -eq $N ]
 then
 echo "Cam is down! Reboot..."
make_debug 4 # cam is down
 else
echo $rcam
 fi

# ---cuted----

#finding real cam1
 rcam1=$(find_cam $cam1)

Առաջին մասը սա վերջը իմ գործառույթները և выплюнуть էխո արդյունքները. Հաշվի առնելով այն խառնաշփոթ վերջին տողերը վերը նշված հատվածի.

Ես կարծում եմ um, որ դա հետաքրքիր մի կտոր կոդը.

Ուզում եմ շնորհակալություն հայտնել ոգեշնչման 😉

http://www.youtube.com/watch?v=SilMJ0O13UI&feature=related

Ավելի լավ է- ի վերջո ինձ հաջողվեց ավարտել է իր աշխատանքը սցենարի մասին ես գրում եմ այնքան ժամանակ 🙂 Արդեն НУКИ դա մեկ բավականին կայուն է javascript -. Ընդգծում եմ 1 քանի որ նրանք հանում են լրացուցիչ սցենար, թե ինչպես պետք է կառուցել այն հիմնական. Արդեն ձեռք է բերել մոնոլիտ կառուցվածքը, բայց անձամբ ես կարծում եմ, որ դա լավ է demo տարբերակը 🙂 Արդեն բարելավումներ շատ, վերջերս фиксове տարբեր մանր-մունր սխալները, եւ փորձում է բարելավել կոդ. Միակ շոշափելի, որ ես ավելացրել ստուգում է աշխատունակությունը և ընդունիչ. Нагласил ես նրա ամեն 10 օր, որ ստիպում է վերսկսել ինքը.

Ետ նայելով, իմ սկզբնական գաղափար է, սցենարի, որը պարզապես վերահսկել ընդունիչներ, որ случава նրանց հետ: ես կարծում եմ,, որ բավականին լավ է, ես իրականացրել է իր գաղափարը շատ անգամ. Միակ սխալը, որ ես հուսով եմ խուսափել 10 ամեն օր reboot – կան պահեր, երբ ստացողը սկսում է վերբեռնվում, բայց չի հաջողվում. Սպանությունների մեծ մասը խանութների, այդ թվում ' ցանցային, բայց պալատ պրադո գրեթե ավարտված է հասնել reboot. Ցավոք Պատճառով սահմանափակումների նշանակվող իմ բռնակներ неможях անել վերսկսել առանցքը, եւ այդպիսով շրջանցել եւ այս պահին. Կարող է, որոշ օրը ապագայում recompile իմ պատկերները իմ վանդակում, եւ, հետեւաբար, կարող եմ զբաղվել այդ խնդրով. Նա надявма իմ վերջին որոշումը, որ այն կոծկել 🙂 հակառակ Դեպքում ամեն ինչ շատ լավ է ստացվել, նույնիսկ շատ ավելի լավ, քան իմ առաջին փնտրտուքներից. Հատկապես պայմանով,, որ преимана նման փոխակերպումները. Առավել մեծ մասը մնացել է web ինտերֆեյս, ահա թե ինչու եմ ես շարունակում եմ, որպեսզի նրան 😆 այն բանից հետո, երբ մենք նստել ենք, որ վերաշարադրել այդ օրերին, եւ ստանալ այն անվճար սպառման. Եզրափակիչ խոսքերը – փոխարենը երկարաձգել պարզապես ուզում եմ շնորհակալություն հայտնել իմ բոլոր ընկերներին,, որ ապրել են իմ հիմար հարցեր, ապա դա – կան կարևոր ներդրում деизаина կոդ. Երախտագիտության արժանի է, որը կոչվում է նախագիծը, եւ ես ծառայել որպես ոգեշնչման շատ պահեր ապաշնորհ գրել 🙂 … Տիկնայք արժանի է իր!

Այսօր ես աշխատել եմ, մի քիչ ավելի նոր քառյակներ Nuki. Վերջապես բերել կարգը նրան, իսկ ես կցանկանայի նրան անել, մի քիչ առաջ ազատ է արձակվել վերջին կայուն, եւ, հավանաբար, վերջնական տարբերակը. Այնպես որ, ես ունեցել գաղափար է ստուգել, ​​թե քանի օր uptime է ստացողի, որ մեծ մասը իմ խնդիրների այն բանից հետո, երբ բավական ժամանակ, այնպես որ, ես որոշեցի անել 10 prfilaktichen օր Reboot. Ես scrawled ամբողջ konveirche որտեղ իմ clears օրերը այլ փոփոխականների, քանի որ արդյունքը otkomandata 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 }'

Օրինակ, եթե աշխատանքային ժամերը օրերը արդյունք է մի ամբողջ օր, իսկ եթե rezulatatat ժամ նման

[email protected]:~$ uptime | awk -F'up' '{ print $2 }' | awk -F'days' '{ print $1 }'
1:34,  5 users,  load average: 0.46, 0.39, 0.41
[email protected]:~$

Այն պատճառով, Որ անցնում է ստուգում տեսակի стоймость

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]*$”.

Eee ապրել է տեսնել նրան այնտեղ НУКИ 1.0 Ինչու է 🙂 տարբերակի 0.6 Ես դուրս թռավ 1.0 Դուք կարող եք ինձ հարցնում, բայց շատ պարզ է – Արդեն մենք ունենք մեկս 100% ունիվերսալ Nuki ընդգրկելով բոլոր պահանջները, մի քանի բացառություններով Cotto չի ամրագրել ապագայում, եւ ավելի կարեւոր է այդ տարբերակը, որը իրականացվում է արմատապես տարբեր կերպ. Ես գնացի ետ իմ հին գաղափարին մի սատանա, եւ մի քիչ փորձ ու փորձանքի այս անգամ ամեն ինչ teamed գերազանց. Server դիմումը ամբողջությամբ այրվեց, բացառությամբ մի կարճ php skriptche որը ոչ - ոքի տեղեկատվություն Nuki այն 🙂

E արդեն հասել է գրեթե ամեն ինչ, Nuki որտեղ ավելի? Դե co Ճիշտն ասած, ես միշտ գուցե ավելի, օրինակ, մտածում անել Տեղակայման գրվածքը ասում անել բաներ ինչ - որ կերպ հեշտ է եւ հասկանալի, նույնիսկ մի Linux օգտվողին ամեն ինչ տեղի է ունենում, քանի որ հնարավոր է- քանի խնդիրներ օգտվողների համար. Բայց ամեն ինչ ունի իր ժամանակը. Ներկայում Nuki քան որեւէ այլ բան, ես dobavail մոդուլ, որը վերահսկում է կապը սերվերի, անհետանալ, եթե ստացողը ինքնին վերսկսում. Այն պահին, այո, կան դեռեւս սահմանվում, եթե այն աշխատում hihihiihh 😆 Abe, ընդհանուր առմամբ, viangi ստիպված կլինի ինչ-որ բան պետք է ցանկալի, կամ թարմ գաղափար է ինչ-որ դեռ մեկ գլխին, դուք չեք կարող մտածել նման 2-3-4 կամ ավելի, նույնիսկ իմ 😈

ps Կրկին թող codenamed. Կարծում եմ, որ ես արդեն շատ ամուր հիմք ամեն ինչի համար մենք որոշելու է ապագայում անել իմ ձեռագրով