Näin skriptaat AnyConnect-kirjautumisen Linuxissa ja macOS:ssä
vpn-binääri lukee vastaukset vakiosyötteestä kehotteiden järjestyksessä. Rakenna jakso, lainaa se kerran, pidä se poissa prosessilistalta ja testaa ensin yhtä resurssia.
Skripti päättyy nollaan, tunneli ilmestyy ja seuraava ajo hylätään ennen kuin se edes pyytää salasanaa. Tai sama komento toimii päätteessä ja epäonnistuu ajastetusta työstä virheellä «tapahtumaa ei löytynyt», joka ei nimeä mitään hyödyllistä. Molemmat ovat AnyConnect-asiakkaan vakiosyötekeskustelu, joka menee pieleen, eikä verkkohäiriö. Käsittele kirjautuminen kirjoitettuna kysymyksenä ja vastauksena, niin epäonnistumisista tulee ennustettavia ja pieniä.
Miksi sama komento epäonnistuu skriptin sisällä
Asiakas lukee vastauksensa vakiosyötteestä, yhden rivin kehotetta kohden, siinä järjestyksessä kuin yhdyskäytävä niitä pyytää. Kaikki, mikä muuttaa kehotteiden määrää, kuten uusi banneri, ryhmän valitsin tai toisen tekijän haaste, siirtää jokaista myöhempää vastausta rivin verran. Sitten asiakas lukee käyttäjänimen siinä, missä odotti salasanaa, ja ilmoittaa epäonnistumisen, joka ei osoita kumpaankaan.
Huutomerkin sisältävä salasana lisää hiljaisemman toisen epäonnistumisen. Kaksoislainausmerkkien sisällä kuori laajentaa sen kauan ennen kuin asiakas näkee mitään.
Laita hyötykuorma yksinkertaisiin lainausmerkkeihin, niin merkki kulkee ehjänä. Se on koko korjaus, ja se selittää kokonaisen luokan raportteja, joissa sama tunnistetieto toimii kirjoitettaessa ja epäonnistuu tallennettaessa. Tarkista, mitä kuori teki, ennen kuin tarkistat yhdyskäytävän: tulosta hyötykuorma kääreen läpi, joka näyttää tarkat tavut, ja laske rivit. Useimmat näistä tutkimuksista päättyvät juuri siihen.
Kirjoita vastaukset siinä järjestyksessä kuin asiakas pyytää
Aja asiakas kerran vuorovaikutteisesti ja kirjoita jokainen kehote järjestyksessä muistiin. Ryhmän valitsin ilmestyy vain, kun yhdyskäytävä julkaisee useita profiileja, ja bannerikehote vain, kun sellainen on määritetty. Vastausiedoston on vastattava yhdyskäytävää, johon todella osoitat, ei dokumentaation omaa.
Rakenna sitten tiedosto täsmälleen sillä jaksolla, yksi vastaus riviä kohden. Ryhmän indeksi on numero, jonka asiakas luettelee, ei profiilin sijainti asiakirjassa. Hyväksy banneri vain, jos yhdyskäytäväsi lähettää sellaisen, ja lisää rivi jokaiselle lisäkysymykselle, jonka kyseisen yhdyskäytävän tiedetään esittävän. Käynnistä asiakas ei-vuorovaikutteisella valitsimella, jotta se kuluttaa tiedoston päätteen odottamisen sijaan.
connect vpn.lab.example
0
username
password
y
exit/opt/cisco/anyconnect/bin/vpn -s < anyconnect.txtSama jakso voi tulla putken kautta, kun mieluummin et pidä tiedostoa levyllä. Lainaussäännöt ratkaisevat yhä, selviääkö se.
Pidä tunnistetieto poissa prosessilistalta
Komentorivin argumentti on jokaisen paikallisen käyttäjän luettavissa koko prosessin eliniän, joten salasana kuuluu tiedostoon tai putkeen eikä koskaan argumenttiluetteloon. Tee tiedostosta luettava vain sille tilille, joka ajaa skriptin, ja poista se, kun työ päättyy. macOS:ssä binääri on yleensä samalla polulla kuin Linuxissa, mutta vahvista asennettu sijainti sen sijaan että olettaisit sen. Kääre, joka testaa molemmat polut, on lyhyempi kuin tapausraportti.
printf 'username\npassword\ny\n' | /opt/cisco/anyconnect/bin/vpn -s connect vpn.lab.exampleÄlä anna skriptin myöskään yrittää uudelleen ikuisesti. Muuttunut banneri tai yön aikana vanhentunut salasana muuttaa kiinteän vastausiedoston uudelleenyrityssilmukaksi, ja juuri se silmukka lukitsee tilin.
Epäonnistu kerran, tulosta asiakkaan oma virheteksti ja poistu. Ajastettu työ tarvitsee saman identiteetin ja tunnistetietojen saatavuuden tarkastuksen kuin mikä tahansa muu valvomaton tehtävä, koska hiljaa vanhenevaa tunnistetietoa ei voi erottaa aamuyön kolmen häiriöstä.
Vahvista istunto ennen kuin luot poistumiskoodiin
Yhdistetty tila todistaa, että tunneli on olemassa, eikä mitään muuta. Testaa yksi resurssi, jonka on oltava tavoitettavissa sen kautta, ennen kuin skripti aloittaa varsinaisen työn, ja kohtele siellä tapahtuvaa epäonnistumista eri vikana kuin epäonnistunutta kirjautumista. Muuten yrität uudelleen täysin hyvää yhteyttä, joka ei yksinkertaisesti pääse määränpäähänsä.
Kysy asiakkaalta sen tila ennen irrotusta ja sen jälkeen, koska vanhentunut istunto voi hylätä seuraavan yhteyden samalla kun skriptisi ilmoittaa onnistumisesta.
/opt/cisco/anyconnect/bin/vpn state
/opt/cisco/anyconnect/bin/vpn disconnectKirjaa tilan tuloste poistumiskoodin viereen, koska pelkkä koodi ei voi erottaa hylättyä kirjautumista istunnosta, joka ei koskaan sulkeutunut. Kun yhdyskäytävä vaatii toisen tekijän tai vuorovaikutteisen hyväksynnän, lopeta sen vaiheen skriptaaminen ja käytä sen sijaan mekanismia, jota asiakas tukee. Kiinteä vastausiedosto on mukavuus tunnistetiedolle, jota hallitset, ei keino kiertää todennusvaihetta, jota et hallitse. Pidä laajuus näin kapeana, niin tämä pysyy lyhyenä skriptinä.
Milloin kiinteä vastausiedosto on väärä työkalu
Toinen tekijä tai hyväksyntäkehote kukistaa mallin kokonaan, ja se on suunnitteluraja eikä skriptiarvoitus. Käytä mitä tahansa mekanismia, jota asiakas tukee siinä vaiheessa sen sijaan että arvaisit vastauksen etukäteen. Kiinteä tiedosto toimii vain tunnistetiedoille, jotka pysyvät samoina ajojen välillä.
Kaksi vanhempaa tunnistetietotyyliä sekoitetaan myös AnyConnectiin. vpnc-profiili puhuu eri protokollaa, ja se haluaa ryhmän nimen IPSec-tunnisteena, sitten jaetun ryhmäsalaisuuden, sitten omat tilisi tietosi.
Koska protokollat eroavat, vpnc ei pääse yhdyskäytävään, joka julkaisee vain AnyConnect-profiileja, ja tavallinen avoin vaihtoehto sille palvelulle on openconnect, jossa sen anyconnect-protokolla on valittu. pcf-tiedosto kuuluu vanhalle Cisco-asiakkaalle, ja vaikka sen isäntä, ryhmän nimi ja ryhmäsalasana voidaan syöttää uudelleen asiakkaaseen, joka puhuu yhä Cisco IPseciä, tiedosto ei siirry asiakkaiden välillä. Epätavallinen portti tai epästandardi tunnelointitila yleensä häviää siinä siirrossa. Ratkaise, mitä protokollaa yhdyskäytävä tarjoaa, ennen kuin valitset työkalun.