Kaip parašyti AnyConnect prisijungimo scenarijų Linux ir macOS sistemose
vpn dvejetainis failas atsakymus skaito iš standartinės įvesties užklausų tvarka. Sudarykite seką, vieną kartą ją pacituokite, laikykite ją už procesų sąrašo ribų ir pirmiausia išbandykite vieną išteklių.
Scenarijus baigiasi nuliu, tunelis atsiranda, o kitas paleidimas atmetamas dar net nepaprašius slaptažodžio. Arba ta pati komanda veikia terminale ir nepavyksta iš suplanuotos užduoties su klaida „įvykis nerastas“, kuri nieko naudingo neįvardija. Abu atvejai yra sutrikusi AnyConnect kliento standartinės įvesties kalba, o ne tinklo gedimas. Traktuokite prisijungimą kaip užrašytą klausimą ir atsakymą, ir nesėkmės taps nuspėjamos bei mažos.
Kodėl ta pati komanda nepavyksta scenarijuje
Klientas savo atsakymus skaito iš standartinės įvesties, po vieną eilutę kiekvienai užklausai, tokia tvarka, kokios vartai jų prašo. Viskas, kas keičia užklausų skaičių, pavyzdžiui, nauja juosta, grupės parinkiklis ar antrojo veiksnio iššūkis, kiekvieną vėlesnį atsakymą pastumia viena eilute. Tada klientas perskaito vartotojo vardą ten, kur tikėjosi slaptažodžio, ir praneša apie nesėkmę, kuri nenurodo nė į vieną iš jų.
Slaptažodis su šauktuku prideda tylesnę antrąją nesėkmę. Dvigubose kabutėse apvalkalas jį išskleidžia kur kas anksčiau, nei klientas ką nors pamato.
Įdėkite naudingąją apkrovą į viengubas kabutes, ir simbolis keliauja nepažeistas. Tai ir yra visas pataisymas, ir jis paaiškina visą klasę pranešimų, kuriuose tas pats prisijungimo duomuo veikia įvedant ir nepavyksta išsaugant. Patikrinkite, ką padarė apvalkalas, prieš tikrindami vartus: atspausdinkite apkrovą per apvalkalą, rodantį tikslius baitus, ir suskaičiuokite eilutes. Dauguma tokių tyrimų baigiasi būtent ten.
Rašykite atsakymus tokia tvarka, kokios klientas prašo
Vieną kartą paleiskite klientą interaktyviai ir iš eilės užsirašykite kiekvieną užklausą. Grupės parinkiklis atsiranda tik tada, kai vartai paskelbia kelis profilius, o juostos užklausa – tik tada, kai viena sukonfigūruota. Atsakymų failas turi atitikti tuos vartus, į kuriuos iš tikrųjų nukreipti, o ne tuos, kurie yra dokumentacijoje.
Tada sudarykite failą tiksliai ta seka, po vieną atsakymą eilutėje. Grupės indeksas yra skaičius, kurį klientas išvardija, o ne profilio vieta dokumente. Priimkite juostą tik jei jūsų vartai ją siunčia, ir pridėkite eilutę kiekvienam papildomam klausimui, kurį tie vartai, kaip žinoma, užduoda. Paleiskite klientą su neinteraktyviu požymiu, kad jis vartotų failą, o ne lauktų terminalo.
connect vpn.lab.example
0
username
password
y
exit/opt/cisco/anyconnect/bin/vpn -s < anyconnect.txtTa pati seka gali atkeliauti vamzdžiu, kai norite nelaikyti failo diske. Citavimo taisyklės vis dar nusprendžia, ar ji išliks.
Laikykite prisijungimo duomenis už procesų sąrašo ribų
Komandų eilutės argumentas yra skaitomas kiekvieno vietinio naudotojo visą proceso gyvavimo laiką, todėl slaptažodis priklauso failui ar vamzdžiui ir niekada argumentų sąrašui. Padarykite tą failą skaitomą tik tai paskyrai, kuri vykdo scenarijų, ir ištrinkite jį, kai darbas baigsis. macOS sistemoje dvejetainis failas paprastai yra tame pačiame kelyje kaip Linux, bet patvirtinkite įdiegtą vietą, o ne darykite prielaidą. Apvalkalas, tikrinantis abu kelius, yra trumpesnis už incidento ataskaitą.
printf 'username\npassword\ny\n' | /opt/cisco/anyconnect/bin/vpn -s connect vpn.lab.exampleNeleiskite scenarijui ir bandyti iš naujo amžinai. Pasikeitusi juosta ar per naktį pasibaigęs slaptažodis fiksuotą atsakymų failą paverčia kartojimo kilpa, ir būtent ta kilpa užrakina paskyrą.
Nepavykite vieną kartą, atspausdinkite paties kliento klaidos tekstą ir išeikite. Suplanuotai užduočiai reikia tokios pačios tapatybės ir prisijungimo duomenų prieinamumo peržiūros kaip ir bet kuriai kitai nepriežiūrimai užduočiai, nes tyliai pasibaigiantys duomenys neatskiriami nuo trijų valandų nakties gedimo.
Patvirtinkite sesiją prieš pasitikėdami išėjimo kodu
Prisijungta būsena įrodo, kad tunelis egzistuoja, ir nieko daugiau. Išbandykite vieną išteklių, kuris turi būti pasiekiamas per jį, prieš scenarijui pradedant tikrą darbą, o nesėkmę ten traktuokite kaip kitą gedimą nei nepavykęs prisijungimas. Priešingu atveju kartosite visiškai gerą ryšį, kuris tiesiog negali pasiekti savo tikslo.
Paklauskite kliento apie jo būseną prieš atjungimą ir po jo, nes pasenusi sesija gali atmesti kitą prisijungimą, kol jūsų scenarijus praneša apie sėkmę.
/opt/cisco/anyconnect/bin/vpn state
/opt/cisco/anyconnect/bin/vpn disconnectUžrašykite būsenos išvestį šalia išėjimo kodo, nes vien kodas negali atskirti atmesto prisijungimo nuo sesijos, kuri niekada nebuvo uždaryta. Kai vartai reikalauja antrojo veiksnio ar interaktyvaus patvirtinimo, nustokite scenarizuoti tą žingsnį ir vietoj to naudokite mechanizmą, kurį palaiko klientas. Fiksuotas atsakymų failas yra patogumas duomenims, kuriuos kontroliuojate, o ne būdas apeiti autentifikavimo žingsnį, kurio nekontroliuojate. Laikykite apimtį tokią siaurą, ir tai liks trumpas scenarijus.
Kada fiksuotas atsakymų failas yra netinkamas įrankis
Antrasis veiksnys ar patvirtinimo užklausa visiškai nugali šį šabloną, ir tai yra dizaino riba, o ne scenarijaus galvosūkis. Naudokite bet kurį mechanizmą, kurį klientas palaiko tam žingsniui užuot iš anksto spėlioję atsakymą. Fiksuotas failas veikia tik tiems duomenims, kurie tarp paleidimų išlieka tokie patys.
Du senesni prisijungimo duomenų stiliai taip pat painiojami su AnyConnect. vpnc profilis kalba kitu protokolu, ir jam reikia grupės pavadinimo kaip IPSec identifikatoriaus, paskui bendros grupės paslapties, paskui jūsų pačių paskyros duomenų.
Kadangi protokolai skiriasi, vpnc negali pasiekti vartų, kurie skelbia tik AnyConnect profilius, o įprasta atvira alternatyva šiai paslaugai yra openconnect su pasirinktu anyconnect protokolu. pcf failas priklauso senajam Cisco klientui, ir nors jo hostas, grupės pavadinimas bei grupės slaptažodis gali būti iš naujo įvesti kliente, kuris dar kalba Cisco IPsec, failas nepersikelia tarp klientų. Neįprastas prievadas ar nestandartinis tuneliavimo režimas paprastai prarandami tame perkėlime. Nuspręskite, kokį protokolą siūlo vartai, prieš rinkdamiesi įrankį.