Com programar un inici de sessió d’AnyConnect a Linux i macOS
El binari vpn llegeix les respostes de l’entrada estàndard en l’ordre dels avisos. Construïu la seqüència, citeu-la una vegada, manteniu-la fora de la llista de processos i proveu primer un recurs.
L’script surt amb zero, el túnel apareix i la següent execució es rebutja abans que arribi a demanar cap contrasenya. O la mateixa ordre funciona en un terminal i falla des d’una tasca programada amb un error «no s’ha trobat l’esdeveniment» que no anomena res d’útil. Totes dues coses són la conversa per l’entrada estàndard del client AnyConnect que va malament, no una fallada de xarxa. Tracteu l’inici de sessió com un pregunta-resposta escrit i les fallades es tornen predictibles i petites.
Per què la mateixa ordre falla dins d’un script
El client llegeix les seves respostes de l’entrada estàndard, una línia per avís, en l’ordre en què les demana la passarel·la. Qualsevol cosa que canviï el nombre d’avisos, com ara un bàner nou, un selector de grup o un repte de segon factor, desplaça cada resposta posterior una línia. Aleshores el client llegeix un nom d’usuari on esperava una contrasenya i informa d’una fallada que no assenyala cap de les dues.
Una contrasenya que conté un signe d’exclamació afegeix una segona fallada més silenciosa. Dins de cometes dobles, l’intèrpret l’expandeix molt abans que el client vegi res.
Poseu la càrrega entre cometes simples i el caràcter viatja intacte. Aquesta és tota la correcció, i explica tota una classe d’informes on la mateixa credencial funciona quan s’escriu i falla quan es desa. Comproveu què ha fet l’intèrpret abans de comprovar la passarel·la: imprimiu la càrrega amb un embolcall que mostri els bytes exactes i compteu les línies. La majoria d’aquestes investigacions s’acaben just aquí.
Escriviu les respostes en l’ordre en què el client les demana
Executeu el client interactivament una vegada i anoteu cada avís per ordre. El selector de grup només apareix quan la passarel·la publica diversos perfils, i l’avís del bàner només apareix quan n’hi ha un de configurat. El fitxer de respostes ha de coincidir amb la passarel·la a la qual esteu realment adreçats, no amb la de la documentació.
Després construïu el fitxer amb aquesta seqüència exacta, una resposta per línia. L’índex de grup és el número que el client llista, no la posició d’un perfil en un document. Accepteu el bàner només si la vostra passarel·la n’envia un, i afegiu una línia per a cada pregunta extra que se sàpiga que fa aquesta passarel·la. Inicieu el client amb el flag no interactiu perquè consumeixi el fitxer en lloc d’esperar un terminal.
connect vpn.lab.example
0
username
password
y
exit/opt/cisco/anyconnect/bin/vpn -s < anyconnect.txtLa mateixa seqüència pot arribar per una canonada quan preferiu no tenir cap fitxer al disc. Les regles de citació encara decideixen si sobreviu.
Manteniu la credencial fora de la llista de processos
Un argument a la línia d’ordres és llegible per qualsevol usuari local durant tota la vida del procés, així que la contrasenya pertany a un fitxer o una canonada i mai a la llista d’arguments. Feu que aquest fitxer només sigui llegible pel compte que executa l’script, i esborreu-lo quan la feina acabi. A macOS el binari sol estar al mateix camí que a Linux, però confirmeu la ubicació instal·lada en lloc de suposar-la. Un embolcall que prova tots dos camins és més curt que l’informe de l’incident.
printf 'username\npassword\ny\n' | /opt/cisco/anyconnect/bin/vpn -s connect vpn.lab.exampleTampoc no deixeu que l’script reintenti per sempre. Un bàner canviat o una contrasenya que ha caducat durant la nit converteixen un fitxer de respostes fix en un bucle de reintents, i aquest bucle és el que bloqueja el compte.
Fallau una vegada, imprimiu el text d’error propi del client i sortiu. Una tasca programada necessita la mateixa revisió d’identitat i disponibilitat de credencials que qualsevol altra tasca sense supervisió, perquè una credencial que caduca en silenci no es pot distingir d’una caiguda a les tres de la matinada.
Confirmeu la sessió abans de confiar en el codi de sortida
Un estat connectat demostra que el túnel existeix i res més. Proveu un recurs que ha de ser abastable a través d’ell abans que l’script comenci la feina real, i tracteu una fallada allà com una fallada diferent d’un inici de sessió fallit. Altrament reintentareu una connexió perfectament bona que simplement no pot arribar a la seva destinació.
Demaneu al client el seu estat abans i després de la desconnexió, perquè una sessió obsoleta pot rebutjar la connexió següent mentre el vostre script informa d’èxit.
/opt/cisco/anyconnect/bin/vpn state
/opt/cisco/anyconnect/bin/vpn disconnectRegistreu la sortida d’estat al costat del codi de sortida, ja que un codi sol no pot separar un inici de sessió rebutjat d’una sessió que mai no es va tancar. Quan la passarel·la exigeixi un segon factor o una aprovació interactiva, deixeu de programar aquell pas i utilitzeu el mecanisme que el client admet. Un fitxer de respostes fix és una comoditat per a una credencial que controleu, no una manera de saltar-se un pas d’autenticació que no controleu. Manteniu l’abast així d’estret i això continua sent un script curt.
Quan un fitxer de respostes fix és l’eina equivocada
Un segon factor o un avís d’aprovació anul·len del tot aquest patró, i això és una frontera de disseny, no un trencaclosques de programació. Utilitzeu el mecanisme que el client admeti per a aquell pas en lloc d’endevinar la resposta per endavant. Un fitxer fix només funciona per a credencials que es mantenen iguals entre execucions.
Dos estils de credencial més antics també es confonen amb AnyConnect. Un perfil vpnc parla un protocol diferent i vol el nom del grup com a identificador IPSec, després un secret de grup compartit i després les dades del vostre propi compte.
Com que els protocols difereixen, vpnc no pot arribar a una passarel·la que només publiqui perfils AnyConnect, i l’alternativa oberta habitual per a aquest servei és openconnect amb el seu protocol anyconnect seleccionat. Un fitxer pcf pertany al client Cisco antic i, tot i que el seu amfitrió, nom del grup i contrasenya de grup es poden tornar a introduir en un client que encara parla Cisco IPsec, el fitxer no passa d’un client a un altre. Un port inusual o un mode de tunelització no estàndard generalment es perd en aquest trasllat. Decidiu quin protocol ofereix la passarel·la abans de triar una eina.