Y gred yw bod here-document â phedair llinell ynddo yn fewngofnodi anryngweithiol cyflawn, ac mae’n dal yn gyfan nes bod y porth yn cynnig dau grŵp, yn argraffu baner, neu’n gofyn am docyn ar ôl y cyfrinair. Yna mae’r un sgript yn teipio’r cyfrinair i mewn i fwydlen a oedd yn disgwyl rhif. Mae cleient llinell orchymyn ar Linux yn sgriptadwy, ond dim ond os rhowch iddo’r hyn y mae’n ei ddisgwyl mewn gwirionedd, nid yr hyn yr oedd y tiwtorial wedi tybio.

Myth yw’r here-document sefydlog

Mae cleient Linux Cisco yn gosod rhaglen fach yn /opt/cisco/anyconnect/bin/vpn, ac mae Secure Client 5 yn dal i’w ddosbarthu. Gyda gwasanaeth vpnagentd yn rhedeg, mae’r baner -s yn darllen atebion o’r mewnbwn safonol yn y drefn y mae’r cleient yn gofyn amdanynt. Nid yw’r drefn honno’n sefydlog rhwng gweinyddwyr.

Mae bwydlen grŵp yn ychwanegu un llinell. Mae baner mewngofnodi yn ychwanegu un arall. Mae anogiad tocyn ar ôl y cyfrinair yn torri sgript pedair llinell yn llwyr, oherwydd nid oedd y bumed linell byth yn mynd i fod y tocyn. Mae’r methiant yn dawel: mae’r cleient yn cael y llinyn anghywir, mae’r ymgais i gysylltu’n dod i ben, ac nid yw’r sgript yn adrodd unrhyw beth defnyddiol.

Rhedwch y cleient â llaw unwaith yn erbyn yr un porth a’r un fersiwn, ac ysgrifennwch yr anogiadau yn y drefn y maent yn ymddangos. Y trawsgrifiad hwnnw yw’r fanyleb y mae’n rhaid i’ch sgript ei bodloni.

Beth mae’r cleient yn ei ddisgwyl

Yn yr achos arferol ag un grŵp, y dilyniant yw enw defnyddiwr, cyfrinair, ac weithiau cadarnhad baner. Dim ond pan fydd y gweinydd yn cyflwyno bwydlen mewn gwirionedd y mae llinell gyntaf here-document yn dod yn fynegefn bwydlen, a dyna pam mae’r un sgript yn gweithio ar un safle ac yn methu ar y nesaf.

/opt/cisco/anyconnect/bin/vpn -s connect vpn.example.net <<EOF
0
alice
$VPN_PASSWORD
y
EOF

Darllenwch hynny fel pedwar ateb i bedwar cwestiwn posibl, nid fel protocol sefydlog. Dewis bwydlen yw’r sero, nid cyfrinair, ac mae’r y terfynol yn derbyn baner na fydd llawer o byrth byth yn ei hanfon.

Defnyddiwch expect pan nad yw’r drefn yn rhagweladwy

Pan fydd trefn yr anogiadau’n amrywio, stopiwch gyfrif llinellau a disgwyliwch yr anogiad yn lle hynny. Mae sgript expect yn cychwyn y gorchymyn connect, yn aros am anogiad enw defnyddiwr, yn anfon, yn aros am anogiad cyfrinair, yn anfon, ac yna’n aros am y cyflwr cysylltiedig. Mae gan bob aros ei derfyn amser ei hun.

Triniwch derfyn amser fel methiant a gadael. Bydd sgript sy’n parhau i anfon mewnbwn ar ôl anogiad annisgwyl yn ddigon bodlon teipio’r cyfrinair i mewn i gragen, bwydlen, neu unrhyw beth arall sy’n digwydd bod yn darllen. Dyna sut mae sgript mewngofnodi yn troi’n ddigwyddiad.

Mae expect hefyd yn rhoi trawsgrifiad y gallwch ei gofnodi gyda’r gyfrinach wedi’i thynnu, ac mae hynny’n fwy gwerthfawr na’r cod gadael pan fydd porth yn newid ei anogiadau ar ôl uwchraddiad.

Rhaid i’r gyfrinach fyw yn rhywle

Mae pob fersiwn o’r broblem hon yn rhannu un gwendid: rhaid i’r cyfrinair fodoli ar ffurf y gall y cleient ei darllen. Mae ei basio fel dadl yn ei amlygu yn nhabl y prosesau. Mae ei atseinio trwy bibell yn aml yn ei roi yn hanes y gragen. Mae’r ddau yn ddarllenadwy gan ddefnyddwyr lleol eraill ar westeiwr naid a rennir.

install -m 600 /dev/null ~/.vpn-secret
umask 077; VPN_PASSWORD=$(cat ~/.vpn-secret) /opt/cisco/anyconnect/bin/vpn -s connect vpn.example.net

Ffeil â modd 600 sy’n eiddo i’r cyfrif yw’r lleiafswm, ac mae’n dal yn gyfrinach destun plaen ar y disg. Mae secret-tool lookup yn darllen o gylchoedd allweddi Linux, ac ar macOS mae security find-generic-password -w yn gwneud yr un gwaith. Lle mae’r sefydliad yn cefnogi dilysu tystysgrif neu SAML, dewiswch hwnnw, oherwydd ni all cyfrinair wedi’i storio ynghyd â MFA gwblhau mewngofnodi heb berson.

Cadarnhewch y tiwnel, yna perchnogwch y datgysylltu

Peidiwch â dibynnu ar absenoldeb testun gwall. Gofynnwch i’r cleient am ei gyflwr a gwirio’r rhyngwyneb yn annibynnol:

/opt/cisco/anyconnect/bin/vpn state
ip -brief address

Dylai’r cyflwr ddarllen Connected, a dylai rhyngwyneb tiwnel fod â chyfeiriad. Yna gofynnwch am un adnodd y dylai’r tiwnel ei gyrraedd, oherwydd mae cyflwr cysylltiedig heb lwybr yn ganlyniad real ac yn hawdd i’w golli.

Datgysylltwch â vpn disconnect, a gadewch i’r sgript a gychwynnodd y tiwnel berchnogi’r datgysylltu. Mae swydd aflwyddiannus sy’n gadael sesiwn ar agor yn bwyta sedd trwydded ac yn edrych fel problem dilysu i’r person nesaf sy’n ceisio.

Trefn y gwaith: cadarnhau vpnagentd, cofnodi gwir drefn yr anogiadau, dewis here-document neu expect, cadw’r gyfrinach allan o argv a’r hanes, gwirio’r cyflwr ac un adnodd, yna datgysylltu yn yr un sgript.

Erthyglau cysylltiedig