Kiel skripti AnyConnect-ensaluton en Linux kaj macOS
La binara dosiero vpn legas respondojn el la norma enigo laŭ la ordo de la instigoj. Konstruu la sinsekvon, citilu ĝin unufoje, tenu ĝin ekster la proceza listo kaj unue testu unu rimedon.
La skripto finiĝas per nulo, la tunelo aperas, kaj la sekva rulo rifuziĝas antaŭ ol ĝi eĉ petas pasvorton. Aŭ la sama komando funkcias en terminalo kaj malsukcesas el planita tasko kun eraro «okazaĵo ne trovita», kiu nomas nenion utilan. Ambaŭ estas la konversacio de la norma enigo de la AnyConnect-kliento, kiu fuŝiĝas, ne reta fuŝo. Traktu la ensaluton kiel skribitan demandon kaj respondon, kaj la malsukcesoj fariĝas antaŭvideblaj kaj malgrandaj.
Kial la sama komando malsukcesas ene de skripto
La kliento legas siajn respondojn el la norma enigo, unu linion por instigo, laŭ la ordo en kiu la pordego petas ilin. Ĉio, kio ŝanĝas la nombron de instigoj, ekzemple nova standardo, grup-elektilo aŭ defio de dua faktoro, movas ĉiun postan respondon je unu linio. Poste la kliento legas uzantnomon tie, kie ĝi atendis pasvorton, kaj raportas malsukceson, kiu montras al neniu el la du.
Pasvorto enhavanta krisignon aldonas pli silentan duan malsukceson. En duoblaj citiloj la ŝelo ekspansias ĝin longe antaŭ ol la kliento vidas ion ajn.
Metu la utilan ŝarĝon en simplaj citiloj kaj la signo vojaĝas sendifekte. Tio estas la tuta riparo, kaj ĝi klarigas tutan klason de raportoj, kie la samaj akreditaĵoj funkcias kiam tajpitaj kaj malsukcesas kiam konservitaj. Kontrolu, kion faris la ŝelo, antaŭ ol kontroli la pordegon: printu la ŝarĝon tra volvaĵo, kiu montras la precizajn bajtojn, kaj nombru la liniojn. Plej multaj el ĉi tiuj esploroj finiĝas ĝuste tie.
Skribu la respondojn laŭ la ordo, kiun la kliento petas
Rulu la klienton interage unufoje kaj notu ĉiun instigon laŭ ordo. Grup-elektilo aperas nur kiam la pordego publikigas plurajn profilojn, kaj standarda instigo aperas nur kiam unu estas agordita. La responda dosiero devas kongrui kun la pordego, al kiu vi efektive direktiĝas, ne kun tiu en la dokumentaro.
Poste konstruu la dosieron kun ĝuste tiu sinsekvo, unu respondon por linio. La grupa indekso estas la numero, kiun la kliento listigas, ne la pozicio de profilo en dokumento. Akceptu la standardon nur se via pordego sendas unu, kaj aldonu linion por ĉiu plia demando, kiun tiu pordego konataĵe faras. Startigu la klienton per la neinteraga flago, por ke ĝi konsumu la dosieron anstataŭ atendi terminalon.
connect vpn.lab.example
0
username
password
y
exit/opt/cisco/anyconnect/bin/vpn -s < anyconnect.txtLa sama sinsekvo povas veni tra tubo, kiam vi preferas ne teni dosieron sur la disko. La citilaj reguloj ankoraŭ decidas, ĉu ĝi postvivos.
Tenu la akreditaĵojn ekster la proceza listo
Argumento sur la komandlinio estas legebla de ĉiu loka uzanto dum la tuta vivo de la procezo, do la pasvorto apartenas al dosiero aŭ tubo kaj neniam al la argumenta listo. Faru tiun dosieron legebla nur por la konto, kiu rulas la skripton, kaj forigu ĝin kiam la tasko finiĝas. En macOS la binara dosiero kutime sidas sur la sama vojo kiel en Linux, sed konfirmu la instalitan lokon anstataŭ supozi ĝin. Volvaĵo, kiu testas ambaŭ vojojn, estas pli mallonga ol la incidenta raporto.
printf 'username\npassword\ny\n' | /opt/cisco/anyconnect/bin/vpn -s connect vpn.lab.exampleNe lasu la skripton ankaŭ reprovi eterne. Ŝanĝita standardo aŭ pasvorto, kiu eksvalidiĝis dum la nokto, transformas fiksan respondan dosieron en reprovan buklon, kaj tiu buklo estas tio, kio ŝlosas la konton.
Malsukcesu unufoje, printu la propran erartekston de la kliento kaj eliru. Planita tasko bezonas la saman revizion de identeco kaj havebleco de akreditaĵoj kiel ĉiu alia neprizorgata tasko, ĉar akreditaĵo, kiu silente eksvalidiĝas, ne distingeblas de paneo je la tria matene.
Konfirmu la sesion antaŭ ol fidi la elirkodon
Konektita stato pruvas, ke la tunelo ekzistas, kaj nenion pli. Testu unu rimedon, kiu devas esti atingebla tra ĝi, antaŭ ol la skripto komencu realan laboron, kaj traktu malsukceson tie kiel alian fuŝon ol malsukcesan ensaluton. Alie vi reprovos tute bonan konekton, kiu simple ne povas atingi sian celon.
Demandu la klienton pri ĝia stato antaŭ kaj post la malkonekto, ĉar kaduka sesio povas rifuzi la sekvan konekton dum via skripto raportas sukceson.
/opt/cisco/anyconnect/bin/vpn state
/opt/cisco/anyconnect/bin/vpn disconnectNotu la statan eligon apud la elirkodo, ĉar kodo sola ne povas apartigi rifuzitan ensaluton de sesio, kiu neniam fermiĝis. Kiam la pordego postulas duan faktoron aŭ interagan aprobon, ĉesu skripti tiun paŝon kaj anstataŭe uzu la mekanismon, kiun la kliento subtenas. Fiksa responda dosiero estas oportuneco por akreditaĵo, kiun vi kontrolas, ne maniero eviti aŭtentikigan paŝon, kiun vi ne kontrolas. Tenu la amplekson tiom mallarĝa kaj ĉi tio restas mallonga skripto.
Kiam fiksa responda dosiero estas la malĝusta ilo
Dua faktoro aŭ aproba instigo tute venkas la ŝablonon, kaj tio estas projektolimo, ne skripta enigmo. Uzu kian ajn mekanismon la kliento subtenas por tiu paŝo anstataŭ antaŭgardi la respondon. Fiksa dosiero funkcias nur por akreditaĵoj, kiuj restas la samaj inter ruloj.
Du pli malnovaj stiloj de akreditaĵoj ankaŭ estas konfuzataj kun AnyConnect. Profilo vpnc parolas alian protokolon, kaj ĝi volas la grupan nomon kiel IPSec-identigilo, poste komunan grupan sekreton, poste viajn proprajn kontajn detalojn.
Ĉar la protokoloj diferencas, vpnc ne povas atingi pordegon, kiu publikigas nur AnyConnect-profilojn, kaj la kutima malferma alternativo por tiu servo estas openconnect kun sia anyconnect-protokolo elektita. Dosiero pcf apartenas al la malnova Cisco-kliento, kaj kvankam ĝia gastiganto, grupa nomo kaj grupa pasvorto povas esti reenigitaj en kliento, kiu ankoraŭ parolas Cisco IPsec, la dosiero ne transiĝas inter klientoj. Nekutima pordo aŭ neindustria tunel-reĝimo kutime perdiĝas en tiu translokiĝo. Decidu, kiun protokolon la pordego ofertas, antaŭ ol elekti ilon.