Hoe om ’n AnyConnect-aanmelding op Linux en macOS te skrip
Die vpn-program lees antwoorde van standaardinvoer in die volgorde van die vrae. Bou die reeks, omring dit een keer met aanhalingstekens, hou dit uit die proseslys en toets eers een hulpbron.
Die skrip eindig met nul, die tonnel verskyn, en die volgende loop word geweier nog voordat dit ooit om ’n wagwoord vra. Of dieselfde opdrag werk in ’n terminaal en misluk uit ’n geskeduleerde taak met ’n fout «gebeurtenis nie gevind nie» wat niks nuttigs noem nie. Albei is die gesprek op standaardinvoer van die AnyConnect-kliënt wat verkeerd loop, nie ’n netwerkfout nie. Beskou die aanmelding as ’n geskrewe vraag-en-antwoord en die mislukkings word voorspelbaar en klein.
Waarom dieselfde opdrag in ’n skrip misluk
Die kliënt lees sy antwoorde van standaardinvoer, een reël per vraag, in die volgorde waarin die poort dit vra. Enigiets wat die aantal vrae verander, soos ’n nuwe banier, ’n groepkeuse of ’n tweefaktor-uitdaging, skuif elke latere antwoord met een reël. Die kliënt lees dan ’n gebruikersnaam waar dit ’n wagwoord verwag het en rapporteer ’n fout wat na nie een van die twee wys nie.
’n Wagwoord met ’n uitroepteken daarin voeg ’n stiller tweede fout by. Binne dubbele aanhalingstekens brei die dop dit uit lank voordat die kliënt enigiets sien.
Omring die vrag met enkele aanhalingstekens en die karakter reis ongeskonde. Dit is die hele oplossing, en dit verduidelik ’n hele klas verslae waar dieselfde geloofsbrief werk wanneer dit getik word en misluk wanneer dit gestoor word. Kyk wat die dop gedoen het voordat jy die poort ondersoek: druk die vrag deur ’n wikkel wat die presiese grepe wys en tel die reëls. Die meeste van hierdie ondersoeke eindig daar.
Skryf die antwoorde in die volgorde wat die kliënt vra
Voer die kliënt een keer interaktief uit en skryf elke vraag in volgorde neer. ’n Groepkeuse verskyn net wanneer die poort verskeie profiele publiseer, en ’n banier-vraag verskyn net wanneer een opgestel is. Die antwoordlêer moet ooreenstem met die poort waarop jy werklik gerig is, nie die een in die dokumentasie nie.
Bou dan die lêer met daardie presiese volgorde, een antwoord per reël. Die groepindeks is die nommer wat die kliënt lys, nie die posisie van ’n profiel in ’n dokument nie. Aanvaar die banier net as jou poort een stuur, en voeg ’n reël by vir elke ekstra vraag wat daardie poort bekend is om te vra. Begin die kliënt met die nie-interaktiewe vlag sodat dit die lêer verbruik eerder as om vir ’n terminaal te wag.
connect vpn.lab.example
0
username
password
y
exit/opt/cisco/anyconnect/bin/vpn -s < anyconnect.txtDieselfde volgorde kan deur ’n pyp kom wanneer jy liewer nie ’n lêer op skyf hou nie. Die aanhalingstekens-reëls bepaal steeds of dit oorleef.
Hou die geloofsbrief uit die proseslys
’n Argument op die opdragreël is leesbaar vir elke plaaslike gebruiker vir die duur van die proses, so die wagwoord hoort in ’n lêer of ’n pyp en nooit in die argumentlys nie. Maak daardie lêer net leesbaar vir die rekening wat die skrip uitvoer, en verwyder dit wanneer die taak klaar is. Op macOS sit die programlêer gewoonlik op dieselfde pad as op Linux, maar bevestig die geïnstalleerde ligging eerder as om dit te aanvaar. ’n Wikkel wat albei paaie toets, is korter as die voorvalverslag.
printf 'username\npassword\ny\n' | /opt/cisco/anyconnect/bin/vpn -s connect vpn.lab.exampleMoenie die skrip ook vir ewig laat herprobeer nie. ’n Veranderde banier of ’n wagwoord wat oornag verval het, omskep ’n vaste antwoordlêer in ’n herprobeer-lus, en dit is die lus wat die rekening sluit.
Misluk een keer, druk die kliënt se eie foutteks en stop. ’n Geskeduleerde taak het dieselfde identiteits- en geloofsbrief-oorsig nodig as enige ander onbewaakte taak, want ’n geloofsbrief wat stil verval is nie van ’n onderbreking om drie in die oggend te onderskei nie.
Bevestig die sessie voordat jy die uitgangkode vertrou
’n Gekoppelde toestand bewys die tonnel bestaan en niks meer nie. Toets een hulpbron wat deur die tonnel bereikbaar moet wees voordat die skrip regte werk begin, en behandel ’n mislukking daar as ’n ander fout as ’n mislukte aanmelding. Anders sal jy ’n heeltemal goeie verbinding herprobeer wat bloot nie sy bestemming kan bereik nie.
Vra die kliënt om sy toestand voor en ná die ontkoppeling, want ’n verouderde sessie kan die volgende koppeling weier terwyl jou skrip sukses rapporteer.
/opt/cisco/anyconnect/bin/vpn state
/opt/cisco/anyconnect/bin/vpn disconnectTeken die toestand-uitset langs die uitgangkode aan, want ’n kode alleen kan nie ’n geweierde aanmelding van ’n sessie wat nooit gesluit het nie, skei nie. Wanneer die poort ’n tweede faktor of ’n interaktiewe goedkeuring eis, stop om daardie stap te skrip en gebruik eerder die kliënt se ondersteunde meganisme. ’n Vaste antwoordlêer is ’n gerief vir ’n geloofsbrief wat jy beheer, nie ’n manier om ’n verifikasiestap wat jy nie beheer nie, te omseil nie. Hou die omvang so nou en dit bly ’n kort skrip.
Wanneer ’n vaste antwoordlêer die verkeerde hulpmiddel is
’n Tweede faktor of ’n goedkeuringsvraag verydel die patroon heeltemal, en dit is ’n ontwerpgrens eerder as ’n skripraaisel. Gebruik watter meganisme die kliënt ook vir daardie stap ondersteun eerder as om die antwoord vooraf te raai. ’n Vaste lêer werk net vir geloofsbriewe wat tussen lopies dieselfde bly.
Twee ouer geloofsbrief-style word ook vir AnyConnect aangesien. ’n vpnc-profiel praat ’n ander protokol, en dit wil die groepsnaam as ’n IPSec-identifiseerder hê, dan ’n gedeelde groepgeheim, dan jou eie rekeningbesonderhede.
Omdat die protokolle verskil, kan vpnc nie ’n poort bereik wat net AnyConnect-profiele publiseer nie, en die gewone oop alternatief vir daardie diens is openconnect met sy anyconnect-protokol gekies. ’n pcf-lêer behoort aan die ou Cisco-kliënt, en hoewel sy gasheer, groepsnaam en groeps wagwoord in ’n kliënt wat nog Cisco IPsec praat heringevoer kan word, dra die lêer nie oor tussen kliënte nie. ’n Ongewone poort of ’n nie-standaard tonnelmodus gaan gewoonlik in daardie skuif verlore. Beslis watter protokol die poort bied voordat jy ’n hulpmiddel kies.