Slik skripte AnyConnect-pålogging på Linux og macOS
vpn-binæren leser svar fra standard inn i rekkefølgen av ledetekstene. Bygg sekvensen, siter den én gang, hold den utenfor prosesslisten og test én ressurs først.
Skriptet avslutter med null, tunnelen dukker opp, og neste kjøring avvises før den i det hele tatt spør om et passord. Eller den samme kommandoen virker i en terminal og feiler fra en planlagt jobb med en «hendelse ikke funnet»-feil som ikke navngir noe nyttig. Begge er AnyConnect-klientens samtale over standard inn som går galt, ikke en nettverksfeil. Behandle påloggingen som et skrevet spørsmål og svar, og feilene blir forutsigbare og små.
Hvorfor den samme kommandoen feiler inne i et skript
Klienten leser svarene sine fra standard inn, én linje per ledetekst, i den rekkefølgen gatewayen ber om dem. Alt som endrer antallet ledetekster, som et nytt banner, en gruppevelger eller en andrefaktor-utfordring, forskyver hvert senere svar med én linje. Klienten leser da et brukernavn der den forventet et passord og rapporterer en feil som ikke peker på noen av dem.
Et passord med et utropstegn legger til en stillere andre feil. Inne i doble anførselstegn utvider skallet det lenge før klienten ser noe.
Sett nyttelasten i enkle anførselstegn, og tegnet reiser intakt. Det er hele rettelsen, og den forklarer en hel klasse rapporter der de samme påloggingsdetaljene virker når de skrives inn og feiler når de lagres. Sjekk hva skallet gjorde før du sjekker gatewayen: skriv ut nyttelasten gjennom en innpakning som viser de nøyaktige bytene og tell linjene. De fleste av disse undersøkelsene ender nettopp der.
Skriv svarene i den rekkefølgen klienten spør
Kjør klienten interaktivt én gang og skriv ned hver ledetekst i rekkefølge. En gruppevelger vises bare når gatewayen publiserer flere profiler, og en banner-ledetekst vises bare når en er konfigurert. Svarfilen må samsvare med gatewayen du faktisk peker på, ikke den i dokumentasjonen.
Bygg deretter filen med nøyaktig den sekvensen, ett svar per linje. Gruppeindeksen er nummeret klienten lister opp, ikke en profilposisjon i et dokument. Godta banneret bare hvis gatewayen din sender ett, og legg til en linje for hvert ekstra spørsmål den gatewayen er kjent for å stille. Start klienten med det ikke-interaktive flagget slik at den bruker filen i stedet for å vente på en terminal.
connect vpn.lab.example
0
username
password
y
exit/opt/cisco/anyconnect/bin/vpn -s < anyconnect.txtDen samme sekvensen kan komme gjennom et rør når du helst ikke vil ha en fil på disken. Sitatreglene avgjør fortsatt om den overlever.
Hold påloggingsdetaljene utenfor prosesslisten
Et argument på kommandolinjen er lesbart for enhver lokal bruker i prosessens levetid, så passordet hører hjemme i en fil eller et rør og aldri i argumentlisten. Gjør den filen lesbar bare for kontoen som kjører skriptet, og slett den når jobben er ferdig. På macOS ligger binæren vanligvis på samme sti som på Linux, men bekreft den installerte plasseringen i stedet for å anta den. En innpakning som prøver begge stiene er kortere enn hendelsesrapporten.
printf 'username\npassword\ny\n' | /opt/cisco/anyconnect/bin/vpn -s connect vpn.lab.exampleIkke la skriptet prøve på nytt i det uendelige heller. Et endret banner eller et passord som utløp over natten gjør en fast svarfil om til en gjentakelsessløyfe, og det er den sløyfen som låser kontoen.
Feil én gang, skriv ut klientens egen feiltekst og avslutt. En planlagt jobb trenger samme gjennomgang av identitet og tilgjengelighet for påloggingsdetaljer som enhver annen uovervåket oppgave, fordi påloggingsdetaljer som stille utløper ikke kan skilles fra et avbrudd klokken tre om natten.
Bekreft økten før du stoler på sluttkoden
En tilkoblet tilstand beviser at tunnelen finnes og ikke noe mer. Test én ressurs som må være tilgjengelig gjennom den før skriptet begynner på ekte arbeid, og behandle en feil der som en annen feil enn en mislykket pålogging. Ellers vil du prøve på nytt en helt god forbindelse som rett og slett ikke når frem til målet.
Spør klienten om tilstanden før og etter frakoblingen, fordi en utdatert økt kan avvise neste tilkobling mens skriptet ditt rapporterer suksess.
/opt/cisco/anyconnect/bin/vpn state
/opt/cisco/anyconnect/bin/vpn disconnectNoter tilstandsutdataen ved siden av sluttkoden, fordi en kode alene ikke kan skille en avvist pålogging fra en økt som aldri ble lukket. Når gatewayen krever en andre faktor eller en interaktiv godkjenning, slutt å skripte det trinnet og bruk i stedet mekanismen klienten støtter. En fast svarfil er en bekvemmelighet for påloggingsdetaljer du kontrollerer, ikke en måte å omgå et autentiseringstrinn du ikke kontrollerer. Hold omfanget så smalt, og dette forblir et kort skript.
Når en fast svarfil er feil verktøy
En andre faktor eller en godkjenningsforespørsel beseirer mønsteret helt, og det er en designgrense, ikke en skriptgåte. Bruk den mekanismen klienten støtter for det trinnet i stedet for å gjette svaret på forhånd. En fast fil virker bare for påloggingsdetaljer som er de samme mellom kjøringer.
To eldre stiler for påloggingsdetaljer blir også forvekslet med AnyConnect. En vpnc-profil snakker en annen protokoll, og den vil ha gruppenavnet som IPSec-identifikator, deretter en delt gruppehemmelighet, deretter dine egne kontodetaljer.
Fordi protokollene er forskjellige, kan vpnc ikke nå en gateway som bare publiserer AnyConnect-profiler, og det vanlige åpne alternativet for den tjenesten er openconnect med sin anyconnect-protokoll valgt. En pcf-fil tilhører den gamle Cisco-klienten, og selv om verten, gruppenavnet og gruppepassordet kan legges inn på nytt i en klient som fortsatt snakker Cisco IPsec, flyttes ikke filen mellom klienter. En uvanlig port eller en ikke-standard tunnelmodus går vanligvis tapt i den flyttingen. Avgjør hvilken protokoll gatewayen tilbyr før du velger et verktøy.