Saistībā ar izmaiņām likumdošanā par uzticamības pakalpojumiem (“Par elektroniskajiem uzticamības pakalpojumiem” Ukraina), uzņēmumam ir nepieciešams vairāku departamentu darbs ar atslēgām, kas atrodas uz marķieriem (šobrīd jautājums par aparatūras atslēgu skaitu joprojām ir atklāts ).
Kā rīks ar viszemākajām izmaksām (bez maksas) izvēle uzreiz krita . Pateicoties publikācijai, Ubintu 18.04 serveris sāka darboties un veiksmīgi testēts uz vairākiem zibatmiņas diskiem (jo tobrīd trūka marķiera). Tajā brīdī netika konstatētas nekādas īpašas problēmas, izņemot monopola īpašumtiesības (rezervācija lietotājam). Skaidrs, ka, lai organizētu piekļuvi vairākiem lietotājiem (sākumā vismaz diviem), ir jāsadala viņu piekļuve laikā un jāpiespiež strādāt pēc kārtas.
Jautājums bija: kā es to varu izdarīt ar vismazāko dejošanu, lai viss derētu visiem...
Daļa ir neveikla

XNUMX. iespēja. Vairāki īsceļi uz sikspārņu failiem, proti
a) Piekļuves atslēgas pievienošana.
b) Apzināta atvienošana.
Paragrāfs "б» strīdīgs, tāpēc tika nolemts laiku darbam ar atslēgu piešķirt 3 minūtes.
Usbip klienta īpatnība ir tāda, ka pēc palaišanas tas paliek karājoties konsolē, nepārtraucot konsoles sesiju, savienojumu var “aptuveni” aizvērt no klienta puses un arī no servera puses.
Lūk, kas mums darbojās labi:
pirmais: savienojums on.bat
usbip -a 172.16.12.26 4-1
msg * "Подпись/токен недоступны или заняты "otrais: izslēgšana off.bat
ping 127.0.0.1 -n 180
taskkill /IM usbip.exe /FNepaļaujoties uz lietotāja apziņu, skripti tika apvienoti žetons.sikspārnis
on.bat | off.batKas notiek: visi faili atrodas vienā mapē, kuru palaiž fails token.bat, ja savienojums tiek aizvērts, lietotājs uzreiz saņem ziņojumu par atslēgas nepieejamību, citā gadījumā tikai pēc 180 ping. Dotās koda rindas var aprīkot ar “@ECHO OFF” un konsoles virzienu uz “> nul”, lai pārāk nešokētu lietotāju, taču nav nepieciešams sākt testēšanu. Sākotnējā "darba" veikšana USB diskā parādīja, ka viss bija paredzams, uzticams un skaidrs. Turklāt no servera puses nav nepieciešamas nekādas manipulācijas.

Protams, strādājot tieši ar marķieri, viss nenotika, kā paredzēts: ar fizisku savienojumu ierīču pārvaldniekā marķieris tiek reģistrēts kā 2 ierīces (WUDF un viedkarte), bet ar tīkla savienojumu tikai kā WUDF (lai gan ar to pietiek, lai pieprasītu PIN kodu).

Izrādās arī, ka brutālais "taskkill" nav tik smags, un savienojuma slēgšana klientam ir problemātiska un pat ja tas bija veiksmīgs, tas negarantē tā aizvēršanu serverī.
Upurējot visas klienta konsoles, otrais skripts ieguva šādu formu:
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 > nullai gan tā efektivitāte ir mazāka par 50%, jo serveris spītīgi turpināja uzskatīt, ka savienojums ir atvērts.
Savienojuma problēmas radīja domas par servera puses jaunināšanu.
Servera daļa
Kas jums nepieciešams:
- Atvienojiet neaktīvos lietotājus no pakalpojuma.
- Skatiet, kas pašlaik izmanto (vai joprojām aizņemas) marķieri.
- Pārbaudiet, vai marķieris ir savienots ar pašu datoru.
Šīs problēmas tika atrisinātas, izmantojot crontab un apache pakalpojumus. Mūs interesējošā 2. un 3. punkta uzraudzības rezultātu stāvokļa pārrakstīšanas diskrētais raksturs norāda, ka failu sistēma var atrasties ramdrive. Pievienota rindiņa /etc/fstab
tmpfs /ram_drive tmpfs defaults,nodev,size=64K 0 0
Saknē ir izveidota skriptu mape ar skriptiem: marķiera atvienošana-montāža 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=00aktīvo ierīču saraksta iegūšana usblist_id.sh
usbip list -r 127.0.0.1 | grep ':' |awk -F ":" '{print $1}'| sed s/' '//g | grep -v "^$" > /ram_drive/usb_id.txtaktīvo IP saraksta iegūšana (ar sekojošām modifikācijām, lai parādītu lietotāju ID) usbip_client_ip.sh
netstat -an | grep :3240 | grep ESTABLISHED|awk '{print $5}'|cut -f1 -d":" > /ram_drive/usb_ip_cli.txtpats crontab izskatās šādi:
*/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)Tātad mums ir: ik pēc 5 minūtēm jauns lietotājs var izveidot savienojumu neatkarīgi no tā, kurš strādāja ar marķieri. Mape /ramdrive ir savienota ar http serveri, izmantojot simsaiti, kurā tiek saglabāti 2 teksta faili, kas parāda usbip servera statusu.
Nākamā daļa: “Neglīts iesaiņojumā”
II variants. Lai iepriecinātu lietotāju ar vismaz kaut kādu mazāk biedējošu saskarni. Mulsina fakts, ka lietotājiem ir dažādas versijas. Windows ar atšķirīgiem regulējumiem, atšķirīgām tiesībām, mazāk problemātisku pieeju nekā Es to neatradu (es, protams, esmu par C#, bet ne šajā gadījumā). Jūs varat palaist sikspārņu failus no interfeisa fonā, minimizējot, bet bez atbilstošas testēšanas es personīgi uzskatu: jums tas ir jāvizualizē, lai savāktu lietotāju neapmierinātību.

Izmantojot saskarni un programmatūru, tika atrisināti šādi uzdevumi:
- Parāda, vai marķieris pašlaik ir aizņemts.
- Pirmajā palaišanas reizē sākotnējā iestatīšana ietver “pareizo” sikspārņu failu ģenerēšanu, kas nodrošina sesijas palaišanu un pārtraukšanu ar marķiera serveri. Turpmākajos startos “servisa” režīma ieviešana, izmantojot paroli.
- Pārbauda savienojuma esamību ar serveri, kā rezultātā tas aptaujā, vai tas ir aizņemts, vai parāda ziņojumus par problēmām. Kad sakari tiek atsākti, programma automātiski sāk darboties normālā režīmā.
Darbs ar WEB serveri tiek īstenots, izmantojot papildu fphttpclient pievienojumprogrammu.

ir arī turpmāki apsvērumi par raksta tēmu, kā arī daļējs sākotnējais entuziasms par VirtualHere produktu ar tā funkcijām...
Avots: www.habr.com
