Ìbéèrè mẹ́ta ló pinnu èyí, mẹ́ta péré. Ṣé ẹrọ ìbánisọ̀rọ̀ ń dá àkọsílẹ̀ ìsopọ̀ tí yóò wà lẹ́yìn àtúnbẹ̀rẹ̀ nínú ẹ̀rọ ìṣiṣẹ́? Ṣé ó ń pèsè ìlà àṣẹ tí ó lè gba àṣírí láti ibòmíì yàtọ̀ sí àkọsílẹ̀ àwọn àríyànjiyàn tirẹ̀? Ṣé ìbéèrè ìdánimọ̀ rẹ̀ ń fipá mú ènìyàn láti dáhùn ìbéèrè aṣàwákiri? Dáhùn ní ìtòlẹ́sẹẹsẹ yẹn, ìyàn yóò sì jáwọ́ jẹ́ ọ̀rọ̀ ìfẹ́, nítorí iṣẹ́ tí a ṣètò lè jẹ́ aláìní orí níwọ̀n bí ìdáhùn tí ó rọ̀ jù nínú àwọn mẹ́ta gbà.

So ẹrọ ìbánisọ̀rọ̀ pọ̀ mọ́ àwọn ìpele mẹ́ta tí a lè kọ script

Profáìlì ìbílẹ̀ OS, CLI olùpèsè, ẹrọ tí GUI nìkan ní àti ẹrọ tí SSO aṣàwákiri ní nílò ọ̀nà mẹ́rin ọ̀tọ̀ọ̀tọ̀. Àwọn méjì àkọ́kọ́ ń dúró sí àtúnbẹ̀rẹ̀ aláìsí àbójútó, àtúnbẹ̀rẹ̀ aláìsí àbójútó sì ni kókó gbogbo rẹ̀. Àwọn méjì tó kù nílò ìpinnu àpẹẹrẹ kí wọ́n tó nílò script.

What the client exposesWhat to scriptWhat still bites
OS-native connection entryrasdial, scutil --nc, nmcliTunnel is up before DNS and routes settle
Vendor CLI reading stdinCLI wrapped by the scheduler, secret from the credential storePrompt text changes between releases
GUI onlyPinned version plus a state assertionLocale and DPI break the click targets

Ọ̀nà kìíní: ẹ̀rọ ìṣiṣẹ́ ti ní profáìlì náà

Èyí ni ọ̀nà tí ó pọ̀ jùlọ ní owó kékeré àti èyí tí ọ̀pọ̀ ènìyàn ń gbà kọjá. Nínú Windows, rasdial "Office" ń sopọ̀, rasdial "Office" /disconnect sì ń ti i; rasphone -d "Office" ń darí àkọsílẹ̀ kan náà nípasẹ̀ ojú-ọ̀nà pípe. macOS ń ṣe àkọsílẹ̀ àwọn iṣẹ́ tí a fipamọ́ pẹ̀lú scutil --nc list, ó sì bẹ̀rẹ̀ ọ̀kan pẹ̀lú scutil --nc start. Linux ń fi iṣẹ́ náà fún NetworkManager.

rasdial "Office" user *
scutil --nc start "Office"
nmcli connection up id Office
nmcli -t -f GENERAL.STATE connection show Office

Àwọn ojú-ọ̀nà wọ́n mọ̀ profáìlì tí OS ní nìkan, nítorí náà wọn kò lè darí ẹrọ ẹlẹ́ẹ̀kẹta àìdánilójú. Nígbà tí profáìlì kò sí, dá a lẹ́ẹ̀kan, kí script máa yẹ̀wò rẹ̀ dípò dídá a lẹ́ẹ̀kan sí i ní gbogbo ìgbà ìṣiṣẹ́. Ṣe script náà ní idempotent: ka ipò lọ́wọ́lọ́wọ́, sopọ̀ nìkan nígbà tí ó já, lẹ́yìn náà dán orúkọ àdáni tí iṣẹ́ náà nílò gẹ́gẹ́ wò.

Ọ̀nà kejì: olùpèsè ń pèsè ìlà àṣẹ

Àwọn ẹrọ kan ń fi ìlà àṣẹ tó pọ̀ tó láti fi ká wọ́n: Cisco AnyConnect ti ní olùrànlọ́wọ́ ìsopọ̀ nìkan fún ọ̀pọ̀ ọdún, OpenConnect sì ń sọ àwọn ìlànà AnyConnect, GlobalProtect àti Pulse láti inú binary kan. Ìbéèrè pàtàkì kì í ṣe àkọsílẹ̀ àwọn àsíá ṣùgbọ́n ibi tí àṣírí ti ń bọ̀, nítorí ọ̀rọ̀ ìpamọ́ tó wà nínú àkọsílẹ̀ àríyànjiyàn ni ẹnikẹ́ni tí ó lè ṣe àkọsílẹ̀ àwọn ìlànà lè kà.

printf '%s\n' "$VPN_PASS" | openconnect --protocol=anyconnect \
  --user "$VPN_USER" --passwd-on-stdin vpn.example.com

FortiClient àti àwọn ìkọ́ GlobalProtect kan kò ní CLI tí a ṣe àtìlẹ́yìn rárá, ẹrọ àwùjọ tàbí àropo tí olùpèsè fọwọ́ sí jẹ́ ìpinnu ìràwọ̀, kì í ṣe ọ̀nà àbáyọ. Nínú CI, fún àkọsílẹ̀ iṣẹ́ ní ẹ̀tọ́ lórí binary yẹn gan-an, kì í ṣe shell, kí àríyànjiyàn tí a fi wọlé má baà di àṣẹ root.

Ọ̀nà kẹta: adaṣe GUI, àti ìdí tí ó fi wà ní ìkẹyìn

Nígbà tí ẹrọ ìbánisọ̀rọ̀ ìjọba kò ní ojú-ọ̀nà, àwọn script ń tẹ àwọn bọ́tìnì nípasẹ̀ àwọn ìfiránṣẹ́ fèrèsé tàbí SendKeys. Èyí jẹ́ aláìlágbára sí ẹ̀yà àti èdè, ó lè fi ìpàdé tí ó ṣẹ̀ wọ́lẹ̀ sílẹ̀, ó sì ń kùnà ní ìdákẹ́jẹ́ nígbà tí àpótí ìjíròrò bá farahàn ní èdè tí kò tọ́. Tí o bá gbé ọ̀nà yìí, pinnu ẹ̀yà ẹrọ náà, lẹ́yìn náà ṣàyẹ̀wò ipò ìsopọ̀ tí ó jáde, kí o sì tọ́jú ètò àfọwọ́bọ̀ tí a kọ sílẹ̀ lẹ́gbẹ̀ẹ́ script.

Ìṣọra kan náà kan pípa ìsopọ̀ ẹrọ ní fipá nípasẹ̀ pípa ìlànà rẹ̀. Ọ̀nà abẹ́lẹ̀ lè wà lẹ́yìn ìlànà náà, tàbí olùṣàkóso lè tún un bẹ̀rẹ̀, nítorí náà pa-pẹ̀-tún-bẹ̀rẹ̀ kì í ṣe àtúnṣe tí a lè gbẹ́kẹ̀lé.

Ohun tí ó ń já nígbà tí ọ̀nà abẹ́lẹ̀ bá dìde

Pípe tí ó ṣẹ́gun ń fi ẹ̀rí ìdánimọ̀ hàn nìkan, kì í ṣe ohunkóhun mìíràn. Dán ohun àmúlò tí iṣẹ́ náà wà fún wò pẹ̀lú ìlànà tirẹ̀ àti àkókò ìdúró kúkúrú, kí o sì dárúkọ ìpele nínú ìfiránṣẹ́ ìkùnà. Àwọn profáìlì, ẹ̀rí àti àwọn ẹ̀rí ìdánimọ̀ tí a fipamọ́ tí ó hàn lórí tabili rẹ lè má hàn sí ìpàdé iṣẹ́, nítorí náà ṣe iṣẹ́ náà lẹ́ẹ̀kan lábẹ́ àkọsílẹ̀ olùṣètò fúnra rẹ̀ kí o tó gbẹ́kẹ̀lé e.

Dín àwọn ìgbìyànjú àtúnṣe kù. Lúùpù tí ń tún àwọn ẹ̀rí ìdánimọ̀ tí a kọ̀ ṣe yóò tì àwọn àkọsílẹ̀, ìbéèrè MFA kò sì lè jẹ́ dídáhùn nípasẹ̀ iṣẹ́ aláìní orí láìsí àpẹẹrẹ ìforúkọsílẹ̀; àwọn ìgbìyànjú script lòdì sí ìṣàn SSO aṣàwákiri ń jó àwọn ìgbìyànjú nìkan. Yàn ẹrù VPN tí MDM ń fi ránṣẹ́ tàbí profáìlì ìṣètò fún ẹgbẹ́ kan, níbi tí pẹpẹ ti ní ìgbà ìgbésí ayé àwọn ẹ̀rí ìdánimọ̀, kí o sì pa àwọn script mọ́ fún àwọn ẹrọ tí a kò lè ṣàkóso bẹ́ẹ̀.

Ṣe àkọsílẹ̀ kóòdù ìjáde àti ohun àmúlò àkọ́kọ́ tí ó kùnà, kì í ṣe òtítọ́ pé script náà ṣiṣẹ́. Ìlà kan náà ni ó ń yí ìkìlọ̀ olùṣètò padà di ìwádìí ìṣẹ́jú márùn-ún.

Àwọn àpilẹ̀kọ tó jọra