Skriptet endar med null, tunnelen dukkar opp, og neste køyring blir avvist før ho i det heile spør om eit passord. Eller den same kommandoen verkar i ein terminal og feilar frå ein planlagd jobb med ein «hending ikkje funnen»-feil som ikkje namngir noko nyttig. Begge er samtalen til AnyConnect-klienten over standard inn som går gale, ikkje ein nettverksfeil. Handsame innlogginga som eit skrive spørsmål og svar, og feila blir føreseielege og små.

Kvifor den same kommandoen feilar inne i eit skript

Klienten les svara sine frå standard inn, éi line per ledetekst, i den rekkjefylgja gatewayen ber om dei. Alt som endrar talet på ledetekstar, som eit nytt banner, ein gruppeveljar eller ei andrefaktor-utfordring, forskyv kvart seinare svar med éi line. Klienten les då eit brukarnamn der han venta eit passord og rapporterer ein feil som ikkje peikar på nokon av dei.

Eit passord med eit utropsteikn legg til ein stillare andre feil. Inne i doble hermeteikn utvidar skalet det lenge før klienten ser noko.

Set nyttelasta i enkle hermeteikn, og teiknet reiser intakt. Det er heile rettinga, og ho forklarer ein heil klasse rapportar der dei same innloggingsdetaljane verkar når dei blir skrivne inn og feilar når dei blir lagra. Sjekk kva skalet gjorde før du sjekkar gatewayen: skriv ut nyttelasta gjennom ei innpakning som viser dei nøyaktige byta og tel linene. Dei fleste av desse undersøkingane endar nettopp der.

Skriv svara i den rekkjefylgja klienten spør

Køyr klienten interaktivt éin gong og skriv ned kvar ledetekst i rekkjefylgje. Ein gruppeveljar blir berre vist når gatewayen publiserer fleire profilar, og ein banner-ledetekst blir berre vist når ein er konfigurert. Svarfila må svare til gatewayen du faktisk peikar på, ikkje den i dokumentasjonen.

Bygg så fila med nøyaktig den sekvensen, eitt svar per line. Gruppeindeksen er nummeret klienten listar opp, ikkje ein profilposisjon i eit dokument. Godta banneret berre om gatewayen din sender eit, og legg til ei line for kvart ekstra spørsmål den gatewayen er kjend for å stille. Start klienten med det ikkje-interaktive flagget slik at han nyttar fila i staden for å vente på ein terminal.

connect vpn.lab.example
0
username
password
y
exit
/opt/cisco/anyconnect/bin/vpn -s < anyconnect.txt

Den same sekvensen kan kome gjennom eit røyr når du helst ikkje vil ha ei fil på disken. Siteringsreglane avgjer framleis om han overlever.

Hald innloggingsdetaljane utanfor prosesslista

Eit argument på kommandolinja er lesbart for kvar lokal brukar i levetida til prosessen, så passordet høyrer heime i ei fil eller eit røyr og aldri i argumentlista. Gjer den fila lesbar berre for kontoen som køyrer skriptet, og slett ho når jobben er ferdig. På macOS ligg binæra vanlegvis på same sti som på Linux, men stadfest den installerte plasseringa i staden for å ta ho for gitt. Ei innpakning som prøver båe stiane er kortare enn hendingsrapporten.

printf 'username\npassword\ny\n' | /opt/cisco/anyconnect/bin/vpn -s connect vpn.lab.example

Ikkje la skriptet prøve på nytt i det uendelege heller. Eit endra banner eller eit passord som gjekk ut over natta gjer ei fast svarfil om til ei gjentakingsløkkje, og det er den løkkja som låser kontoen.

Feil éin gong, skriv ut feilteksten til klienten sjølv og avslutt. Ein planlagd jobb treng same gjennomgangen av identitet og tilgjenge på innloggingsdetaljar som kvar annan uovervaka oppgåve, fordi innloggingsdetaljar som stille går ut ikkje kan skiljast frå eit avbrot klokka tre om natta.

Stadfest økta før du stolar på sluttkoden

Ein tilkopla tilstand beviser at tunnelen finst og ikkje noko meir. Test éin ressurs som må vere tilgjengeleg gjennom han før skriptet byrjar på ekte arbeid, og handsame ein feil der som ein annan feil enn ei mislukka innlogging. Elles vil du prøve på nytt ei heilt god tilkopling som rett og slett ikkje når fram til målet.

Spør klienten om tilstanden før og etter fråkoblinga, fordi ei utdatert økt kan avvise neste tilkopling medan skriptet ditt rapporterer suksess.

/opt/cisco/anyconnect/bin/vpn state
/opt/cisco/anyconnect/bin/vpn disconnect

Noter tilstandsutdataen ved sida av sluttkoden, fordi ein kode åleine ikkje kan skilje ei avvist innlogging frå ei økt som aldri vart lukka. Når gatewayen krev ein andre faktor eller ei interaktiv godkjenning, slutt å skripte det trinnet og bruk i staden mekanismen klienten støttar. Ei fast svarfil er ei hugnad for innloggingsdetaljar du kontrollerer, ikkje ein måte å omgå eit autentiseringstrinn du ikkje kontrollerer. Hald omfanget så smalt, og dette blir verande eit kort skript.

Når ei fast svarfil er feil reiskap

Ein andre faktor eller ein godkjenningsførespurnad slår mønsteret heilt, og det er ei designgrense, ikkje ei skriptgåte. Bruk den mekanismen klienten støttar for det trinnet i staden for å gjette svaret på førehand. Ei fast fil verkar berre for innloggingsdetaljar som er dei same mellom køyringar.

To eldre stilar for innloggingsdetaljar blir òg forveksla med AnyConnect. Ein vpnc-profil snakkar ein annan protokoll, og han vil ha gruppenamnet som IPSec-identifikator, deretter ein delt gruppehemmelegheit, deretter dine eigne kontodetaljar.

Fordi protokollane er ulike, kan vpnc ikkje nå ein gateway som berre publiserer AnyConnect-profilar, og det vanlege opne alternativet for den tenesta er openconnect med sin anyconnect-protokoll vald. Ei pcf-fil høyrer til den gamle Cisco-klienten, og sjølv om verten, gruppenamnet og gruppepassordet kan leggjast inn på nytt i ein klient som framleis snakkar Cisco IPsec, flyttar ikkje fila mellom klientar. Ein uvanleg port eller ein ikkje-standard tunnelmodus går vanlegvis tapt i den flyttinga. Avgjer kva protokoll gatewayen tilbyr før du vel eit reiskap.

Relaterte artiklar