Scriptet afslutter med nul, tunnelen dukker op, og næste kørsel afvises, før den overhovedet spørger om en adgangskode. Eller den samme kommando virker i en terminal og fejler fra et planlagt job med en «begivenhed ikke fundet»-fejl, der ikke navngiver noget brugbart. Begge er AnyConnect-klientens samtale over standardindgangen, der går galt, ikke en netværksfejl. Behandl login som et skrevet spørgsmål og svar, og fejlene bliver forudsigelige og små.

Hvorfor den samme kommando fejler inde i et script

Klienten læser sine svar fra standardindgangen, én linje pr. prompt, i den rækkefølge gatewayen beder om dem. Alt, der ændrer antallet af prompter, som en ny banner, en gruppevælger eller en andenfaktor-udfordring, flytter hvert senere svar en linje. Klienten læser derefter et brugernavn, hvor den forventede en adgangskode, og rapporterer en fejl, der ikke peger på nogen af dem.

En adgangskode med et udråbstegn tilføjer en mere stille anden fejl. Inde i dobbelte citationstegn udvider shellen det længe før, klienten ser noget.

Sæt nyttelasten i enkelte citationstegn, og tegnet rejser intakt. Det er hele rettelsen, og den forklarer en hel klasse af rapporter, hvor den samme adgangsoplysning virker, når den tastes, og fejler, når den gemmes. Kontrollér, hvad shellen gjorde, før du kontrollerer gatewayen: udskriv nyttelasten gennem en indpakning, der viser de præcise bytes, og tæl linjerne. De fleste af disse undersøgelser slutter netop der.

Skriv svarene i den rækkefølge, klienten spørger

Kør klienten interaktivt én gang, og skriv hver prompt ned i rækkefølge. En gruppevælger vises kun, når gatewayen offentliggør flere profiler, og en banner-prompt vises kun, når en er konfigureret. Svarfilen skal matche den gateway, du faktisk peger på, ikke den i dokumentationen.

Byg derefter filen med netop den sekvens, ét svar pr. linje. Gruppeindekset er det nummer, klienten viser, ikke en profils placering i et dokument. Accepter kun banneret, hvis din gateway sender et, og tilføj en linje for hvert ekstra spørgsmål, som den gateway vides at stille. Start klienten med det ikke-interaktive flag, så den bruger filen i stedet for at vente på en terminal.

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

Den samme sekvens kan komme gennem et rør, når du hellere vil undgå en fil på disken. Citatreglerne afgør stadig, om den overlever.

Hold adgangsoplysningen ude af proceslisten

Et argument på kommandolinjen kan læses af enhver lokal bruger i processens levetid, så adgangskoden hører til i en fil eller et rør og aldrig i argumentlisten. Gør filen læsbar for kun den konto, der kører scriptet, og slet den, når jobbet er færdigt. På macOS ligger binæren normalt på samme sti som på Linux, men bekræft den installerede placering i stedet for at antage den. En indpakning, der prøver begge stier, er kortere end hændelsesrapporten.

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

Lad heller ikke scriptet prøve igen for evigt. Et ændret banner eller en adgangskode, der udløb natten over, gør en fast svarfil til en genforsøgsløkke, og det er den løkke, der låser kontoen.

Fejl én gang, udskriv klientens egen fejltekst, og afslut. Et planlagt job har brug for samme gennemgang af identitet og tilgængelighed af adgangsoplysninger som enhver anden uovervåget opgave, fordi en adgangsoplysning, der stille udløber, ikke kan skelnes fra et udfald klokken tre om natten.

Bekræft sessionen, før du stoler på exitkoden

En forbundet tilstand beviser, at tunnelen findes, og intet derudover. Test én ressource, der skal kunne nås gennem den, før scriptet begynder rigtigt arbejde, og behandl en fejl der som en anden fejl end et mislykket login. Ellers vil du gentage en helt fin forbindelse, som blot ikke kan nå sin destination.

Spørg klienten om dens tilstand før og efter afbrydelsen, fordi en forældet session kan afvise den næste forbindelse, mens dit script rapporterer succes.

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

Notér tilstandens output ved siden af exitkoden, fordi en kode alene ikke kan skelne et afvist login fra en session, der aldrig blev lukket. Når gatewayen kræver en anden faktor eller en interaktiv godkendelse, så stop med at scripte det trin og brug i stedet den mekanisme, klienten understøtter. En fast svarfil er en bekvemmelighed for en adgangsoplysning, du kontrollerer, ikke en måde at omgå et godkendelsestrin, du ikke kontrollerer. Hold omfanget så snævert, og det bliver ved at være et kort script.

Hvornår en fast svarfil er det forkerte værktøj

En anden faktor eller en godkendelsesprompt besejrer mønsteret helt, og det er en designgrænse snarere end en scriptgåde. Brug den mekanisme, klienten understøtter til det trin i stedet for at gætte svaret på forhånd. En fast fil virker kun for adgangsoplysninger, der er de samme mellem kørsler.

To ældre stilarter for adgangsoplysninger forveksles også med AnyConnect. En vpnc-profil taler en anden protokol, og den vil have gruppenavnet som IPSec-identifikator, derefter en delt gruppehemmelighed, derefter dine egne kontodetaljer.

Fordi protokollerne er forskellige, kan vpnc ikke nå en gateway, der kun offentliggør AnyConnect-profiler, og det sædvanlige åbne alternativ til den tjeneste er openconnect med dens anyconnect-protokol valgt. En pcf-fil hører til den gamle Cisco-klient, og selv om dens vært, gruppenavn og gruppeadgangskode kan indtastes igen i en klient, der stadig taler Cisco IPsec, flytter filen ikke mellem klienter. En usædvanlig port eller en ikke-standard tunneleringstilstand går normalt tabt i den flytning. Afgør, hvilken protokol gatewayen tilbyder, før du vælger et værktøj.

Relaterede artikler