Kako skriptom izvesti AnyConnect prijavu na Linuxu i macOS-u
vpn binarna datoteka čita odgovore sa standardnog ulaza redom kojim stižu upiti. Sastavite slijed, jednom ga citirajte, držite ga izvan liste procesa i prvo testirajte jedan resurs.
Skripta izlazi s nulom, tunel se pojavi, a sljedeće pokretanje biva odbijeno prije nego što uopšte zatraži lozinku. Ili ista naredba radi u terminalu, a pada iz zakazanog posla s greškom «događaj nije pronađen» koja ne imenuje ništa korisno. Oboje je pokvaren razgovor preko standardnog ulaza AnyConnect klijenta, a ne mrežni kvar. Tretirajte prijavu kao zapisano pitanje i odgovor i otkazi postaju predvidivi i mali.
Zašto ista naredba pada unutar skripte
Klijent čita svoje odgovore sa standardnog ulaza, jedan red po upitu, onim redom kojim ih pristupnik traži. Sve što mijenja broj upita, poput novog bannera, birača grupe ili izazova drugog faktora, pomjera svaki kasniji odgovor za jedan red. Klijent tada pročita korisničko ime tamo gdje je očekivao lozinku i prijavi kvar koji ne pokazuje ni na jedno od toga.
Lozinka koja sadrži uzvičnik dodaje tiši drugi kvar. Unutar dvostrukih navodnika ljuska ga proširi mnogo prije nego što klijent išta vidi.
Stavite sadržaj pod jednostruke navodnike i znak prolazi neoštećen. To je cijeli popravak i objašnjava cijelu klasu izvještaja u kojima isti akreditiv radi kad se upiše, a pada kad se pohrani. Provjerite šta je ljuska uradila prije nego što provjerite pristupnik: ispišite sadržaj kroz omotač koji pokazuje tačne bajtove i prebrojte redove. Većina takvih istraga završi upravo tu.
Zapišite odgovore onim redom kojim ih klijent traži
Pokrenite klijent jednom interaktivno i zapišite svaki upit po redu. Birač grupe pojavljuje se samo kad pristupnik objavi nekoliko profila, a upit za banner samo kad je jedan konfigurisan. Datoteka s odgovorima mora odgovarati pristupniku na koji ste zaista usmjereni, a ne onome iz dokumentacije.
Zatim sastavite datoteku s tim tačnim slijedom, jedan odgovor po redu. Indeks grupe je broj koji klijent navede, a ne položaj profila u dokumentu. Prihvatite banner samo ako ga vaš pristupnik šalje, i dodajte red za svako dodatno pitanje za koje se zna da ga taj pristupnik postavlja. Pokrenite klijent s neinteraktivnom zastavicom da konzumira datoteku umjesto da čeka terminal.
connect vpn.lab.example
0
username
password
y
exit/opt/cisco/anyconnect/bin/vpn -s < anyconnect.txtIsti slijed može doći kroz cijev kada radije ne držite datoteku na disku. Pravila citiranja i dalje odlučuju hoće li preživjeti.
Držite akreditiv izvan liste procesa
Argument na naredbenom retku čitljiv je svakom lokalnom korisniku cijeli životni vijek procesa, pa lozinka pripada u datoteku ili cijev i nikada u popis argumenata. Učinite tu datoteku čitljivom samo računu koji pokreće skriptu i izbrišite je kad posao završi. Na macOS-u binarna datoteka obično stoji na istoj stazi kao na Linuxu, ali potvrdite instaliranu lokaciju umjesto da je pretpostavite. Omotač koji provjeri obje staze kraći je od zapisnika o incidentu.
printf 'username\npassword\ny\n' | /opt/cisco/anyconnect/bin/vpn -s connect vpn.lab.exampleNe dopuštajte skripti ni da pokušava zauvijek. Promijenjen banner ili lozinka kojoj je rok istekao preko noći pretvaraju fiksnu datoteku odgovora u petlju ponovnih pokušaja, a upravo ta petlja zaključava račun.
Podnesite jedan neuspjeh, ispišite klijentov vlastiti tekst greške i izađite. Zakazani posao treba isti pregled identiteta i dostupnosti akreditiva kao svaki drugi nenadzirani zadatak, jer akreditiv koji tiho istekne ne razlikuje se od ispada u tri sata ujutro.
Potvrdite sesiju prije nego što povjerujete izlaznom kodu
Povezano stanje dokazuje da tunel postoji i ništa više. Testirajte jedan resurs koji mora biti dostupan kroz njega prije nego skripta započne pravi posao, a neuspjeh tamo tretirajte kao drugi kvar od neuspjele prijave. Inače ćete ponavljati posve dobru vezu koja jednostavno ne može doći do odredišta.
Pitajte klijent za stanje prije i poslije prekida, jer zastarjela sesija može odbiti sljedeće povezivanje dok vaša skripta izvještava o uspjehu.
/opt/cisco/anyconnect/bin/vpn state
/opt/cisco/anyconnect/bin/vpn disconnectZabilježite izlaz stanja uz izlazni kod, jer sam kod ne može razdvojiti odbijenu prijavu od sesije koja se nikad nije zatvorila. Kad pristupnik traži drugi faktor ili interaktivno odobrenje, prestanite skriptirati taj korak i umjesto toga upotrijebite mehanizam koji klijent podržava. Fiksna datoteka odgovora je pogodnost za akreditiv koji kontrolišete, a ne način da zaobiđete korak provjere identiteta koji ne kontrolišete. Držite obim tako uskim i ovo ostaje kratka skripta.
Kada je fiksna datoteka odgovora pogrešan alat
Drugi faktor ili upit za odobrenje potpuno pobjeđuju ovaj obrazac, a to je granica dizajna, a ne skriptna zagonetka. Upotrijebite koji god mehanizam klijent podržava za taj korak umjesto da odgovor pogađate unaprijed. Fiksna datoteka radi samo za akreditive koji ostaju isti između pokretanja.
Dva starija stila akreditiva također se zamjenjuju s AnyConnect. vpnc profil govori drugi protokol i traži ime grupe kao IPSec identifikator, zatim zajedničku grupnu tajnu, zatim vaše vlastite podatke računa.
Budući da se protokoli razlikuju, vpnc ne može doći do pristupnika koji objavljuje samo AnyConnect profile, a uobičajena otvorena alternativa za tu uslugu je openconnect s odabranim protokolom anyconnect. pcf datoteka pripada starom Cisco klijentu i, iako se njezin host, ime grupe i grupna lozinka mogu ponovno unijeti u klijent koji još govori Cisco IPsec, datoteka se ne prenosi između klijenata. Neobičan port ili nestandardni način tuneliranja u pravilu se izgubi pri tom premještanju. Odredite koji protokol pristupnik nudi prije nego što odaberete alat.