Հավատարմագրային ծառայությունների վերաբերյալ օրենսդրության փոփոխությունների հետ կապված («Էլեկտրոնային վստահության ծառայությունների մասին» Ուկրաինա) ձեռնարկությունը կարիք ունի մի քանի ստորաբաժանումների, որոնք կաշխատեն նշանների վրա տեղակայված բանալիների հետ (այս պահին ապարատային բանալիների քանակի հարցը դեռ բաց է. )
Որպես ամենացածր գնով գործիք (անվճար), ընտրությունը անմիջապես ընկավ
Հարցն այն էր, թե ինչպես կարող եմ դա անել նվազագույն պարով, որպեսզի ամեն ինչ աշխատի բոլորի մոտ...
Մասն անշնորհք է
Տարբերակ XNUMX. Մի քանի դյուրանցումներ դեպի bat ֆայլեր, մասնավորապես
ա) Մուտքի ստեղնի միացում.
բ) միտումնավոր անջատում.
Պարբերություն «б» վիճահարույց է, ուստի որոշվեց 3 րոպեում ժամանակ տրամադրել բանալիով աշխատելու համար:
Usbip հաճախորդի առանձնահատկությունն այն է, որ գործարկվելուց հետո այն մնում է կախովի վահանակում, առանց կոնսոլի նիստն ընդհատելու կարող եք կապը «մոտավորապես» փակել հաճախորդի կողմից և նաև սերվերի կողմից:
Ահա թե ինչն է լավ աշխատել մեզ մոտ.
առաջին՝ կապ on.bat
usbip -a 172.16.12.26 4-1
msg * "Подпись/токен недоступны или заняты "
երկրորդ՝ անջատում off.bat
ping 127.0.0.1 -n 180
taskkill /IM usbip.exe /F
Առանց օգտագործողի գիտակցության վրա հենվելու՝ սցենարները համակցվել են նշան.չղջիկ
on.bat | off.bat
Ինչ է տեղի ունենում. բոլոր ֆայլերը գտնվում են նույն թղթապանակում, որը գործարկվում է token.bat ֆայլի կողմից, եթե կապը փակվում է, օգտվողն անմիջապես հաղորդագրություն է ստանում բանալին անհասանելի լինելու մասին, մեկ այլ դեպքում՝ միայն 180 պինգից հետո: Կոդի վերը նշված տողերը կարող են հագեցած լինել «@ECHO OFF» և վահանակի ուղղությունը դեպի «> nul», որպեսզի օգտագործողին շատ չշոկի, սակայն անհրաժեշտ չէ թեստավորում կատարել: Նախնական «գործարկումը» USB կրիչով ցույց տվեց, որ ամեն ինչ կանխատեսելի էր, հուսալի և պարզ: Ավելին, սերվերի կողմից մանիպուլյացիաներ չեն պահանջվում։
Բնականաբար, թոքենի հետ անմիջականորեն աշխատելիս ամեն ինչ այնպես չի ստացվել, ինչպես սպասվում էր. սարքի կառավարիչում ֆիզիկական միացման դեպքում նշանը գրանցվում է որպես 2 սարք (WUDF և սմարթ քարտ), իսկ ցանցային միացումով միայն որպես WUDF (չնայած. սա բավական է PIN կոդ պահանջելու համար):
Պարզվում է նաև, որ դաժան «taskkill»-ն այնքան էլ դաժան չէ, և հաճախորդի վրա կապը փակելը խնդրահարույց է, և եթե նույնիսկ հաջող էր, դա չի երաշխավորում նրա համար սերվերի վրա փակելը։
Հաճախորդի վրա զոհաբերելով բոլոր կոնսուլները, երկրորդ սցենարը ստացավ հետևյալ ձևը.
ping 127.0.0.1 -n 180 > nul
taskkill /IM usbip.exe /F /T > nul
ping 127.0.0.1 -n 10 > nul
taskkill /IM conhost.exe /F /T > nul
չնայած դրա արդյունավետությունը 50%-ից պակաս է, քանի որ սերվերը համառորեն շարունակում էր կապը բաց համարել:
Կապի հետ կապված խնդիրները հանգեցրին սերվերի կողմի թարմացման մասին մտքերին:
Սերվերի մաս
Ինչ է ձեզ անհրաժեշտ.
- Անջատեք ոչ ակտիվ օգտվողներին ծառայությունից:
- Տեսեք, թե ով է ներկայումս օգտագործում (կամ դեռ փոխառում) նշանը:
- Տեսեք, արդյոք նշանը միացված է համակարգչին:
Այս խնդիրները լուծվել են՝ օգտագործելով crontab և apache ծառայությունները։ Մեզ հետաքրքրող 2-րդ և 3-րդ կետերի մոնիտորինգի արդյունքների վիճակի վերագրանցման դիսկրետ բնույթը ցույց է տալիս, որ ֆայլային համակարգը կարող է տեղակայվել ramdrive-ում: Ավելացվեց տող /etc/fstab-ում
tmpfs /ram_drive tmpfs defaults,nodev,size=64K 0 0
Արմատում ստեղծվել է սկրիպտների թղթապանակ՝ unmounting-mounting the token usb_restart.sh
usbip unbind -b 1-2
sleep 2
usbip bind -b 1-2
sleep 2
usbip attach --remote=localhost --busid=1-2
sleep 2
usbip detach --port=00
ստանալով ակտիվ սարքերի ցուցակ usblist_id.sh
usbip list -r 127.0.0.1 | grep ':' |awk -F ":" '{print $1}'| sed s/' '//g | grep -v "^$" > /ram_drive/usb_id.txt
ակտիվ IP-ների ցանկի ձեռքբերում (օգտագործողի ID-ների ցուցադրման հետագա փոփոխությամբ) usbip_client_ip.sh
netstat -an | grep :3240 | grep ESTABLISHED|awk '{print $5}'|cut -f1 -d":" > /ram_drive/usb_ip_cli.txt
Crontab-ն ինքնին այսպիսի տեսք ունի.
*/5 * * * * /!script/usb_restart.sh > /dev/null 2>&1
* * * * * ( sleep 30 ; /!script/usblist_id.sh > /dev/null)
* * * * * (sleep 10 ; /!script/usbip_client_ip.sh > /dev/hull)
Այսպիսով, մենք ունենք. յուրաքանչյուր 5 րոպեն մեկ նոր օգտվող կարող է միանալ, անկախ նրանից, թե ով է աշխատել նշանի հետ: /ramdrive թղթապանակը միացված է http սերվերին՝ օգտագործելով symlink, որում պահվում են 2 տեքստային ֆայլեր՝ ցույց տալով usbip սերվերի կարգավիճակը։
Հաջորդ մասը՝ «Տգեղը փաթաթում»
Տարբերակ II. Օգտագործողին մի փոքր գոհացնելու համար գոնե մի քիչ վախեցնող ինտերֆեյսով: Շփոթված է այն փաստով, որ օգտվողներն ունեն Windows-ի տարբեր տարբերակներ՝ տարբեր շրջանակներով, տարբեր իրավունքներով, ավելի քիչ խնդրահարույց մոտեցումներով, քան
Ինտերֆեյսի և ծրագրաշարի միջոցով լուծվել են հետևյալ խնդիրները.
- Ցույց է տալիս, թե արդյոք նշանը ներկայումս զբաղված է:
- Առաջին գործարկման ժամանակ նախնական կարգավորումը ներառում է «ճիշտ» bat ֆայլերի ստեղծում, որոնք իրականացնում են սեսիայի մեկնարկը և ընդհատումը նշանային սերվերի հետ: Հետագա մեկնարկներում «ծառայության» ռեժիմի իրականացում գաղտնաբառի միջոցով:
- Սերվերի հետ կապի առկայության ստուգում, որի արդյունքում նա հարցում է անում՝ արդյոք այն զբաղված է, թե ցուցադրում է հաղորդագրություններ խնդիրների մասին։ Երբ հաղորդակցությունը վերսկսվում է, ծրագիրը ավտոմատ կերպով սկսում է աշխատել նորմալ ռեժիմով:
WEB սերվերի հետ աշխատելն իրականացվում է լրացուցիչ fphttpclient snap-in-ի միջոցով:
կան նաև հետագա նկատառումներ հոդվածի թեմայի վերաբերյալ, ինչպես նաև մասնակի նախնական ոգևորություն VirtualHere արտադրանքի նկատմամբ՝ իր առանձնահատկություններով...
Source: www.habr.com