Báwo ni a ṣe lè mú wíwọlé VPN tí ń dúró de kóòdù tọ́kẹ̀nì ṣiṣẹ́ fúnra rẹ̀
Ẹ̀rọ VPN orí ìlà àṣẹ tí ń béèrè nínú tẹ́mínà máa ń dá àkọsílẹ̀ tí kìkì ọ̀rọ̀ ìpamọ́ ni ó ń gbà kọjá dúró. Ṣe àwọn ìṣàyẹ̀wò márùn-ún yìí kí o tó lo expect.
Àkọsílẹ̀ tí ó bẹ̀rẹ̀ ẹ̀rọ VPN olùpèsè yóò dúró gbọgbọ titi àkókò yóò fi tán, ìwé ìkọ̀wé sì fi hàn pé ẹ̀rọ náà ń béèrè kóòdù ìjẹ́rìí tí ẹnikẹ́ni kò tẹ̀. Wọ́n ti fi ọ̀rọ̀ ìpamọ́ ránṣẹ́, nítorí náà ìparí tí ó hàn gbangba ni pé ọ̀rọ̀ ìpamọ́ kò tọ́. Bẹ́ẹ̀ kọ́. Ìbéèrè kóòdù jẹ́ ìjíròrò ọ̀tọ̀ọ̀tọ̀ lórí ọ̀nà ọ̀tọ̀ọ̀tọ̀, àkọsílẹ̀ rẹ kò sì ṣí i rí.
Ṣe àwọn ìṣàyẹ̀wò márùn-ún tí ó wà nísàlẹ̀ lẹ́sẹẹsẹ. Dúró ní èyí àkọ́kọ́ tí ó kùnà, nítorí gbogbo ìgbésẹ̀ tó kàn gbà pé àwọn tí ó ṣáájú wà ní ipò.
Ìṣàyẹ̀wò 1: ṣé ẹ̀rọ náà ń ka ìwọlé àkọ́kọ́ rárá?
Dán wò kí o tó kọ èyíkéyìí ìṣiṣẹ́ fúnra rẹ̀: fi àṣírí irọ́ ránṣẹ́ sí ẹ̀rọ náà nípasẹ̀ páìpù kí o sì wo ohun tí yóò ṣẹlẹ̀. Bí ó bá tẹ ìbéèrè rẹ̀ jáde tí ó sì dúró, kò ka páìpù náà.
Ọ̀pọ̀ ẹ̀rọ ló ń ṣí ẹ̀rọ tẹ́mínà lọ́nà tààrà, tàbí wọ́n kọ̀ láti gba àṣírí láti inú ṣíṣàn tí kì í ṣe tẹ́mínà, kí páìpù tí ó sọnù má baà lè fa ọ̀rọ̀ ìpamọ́ jáde. OpenVPN ni ìyàtọ̀ tí a kọ sílẹ̀, nítorí --auth-user-pass ń gba ipa ọ̀nà fáìlì. Àwọn ẹ̀rọ olùpèsè tí ń béèrè kóòdù ẹ̀ẹ̀kan ló máa ń ní àṣàyàn tí ó dọ́gba kò sì ní, ìbéèrè wọn sì ń dúró de tẹ́mínà tí àkọsílẹ̀ rẹ kò pèsè rí.
Ìṣàyẹ̀wò 2: ṣé ìlànà ọmọ náà ní tẹ́mínà?
pty ń pín tẹ́mínà fún ọmọ náà, èyí tí ó sọ àwọn ìbéèrè di àbájáde tí a lè kà tí o sì lè dáhùn lẹ́sẹẹsẹ.
import pexpect
child = pexpect.spawn("openconnect vpn.example.net", encoding="utf-8", timeout=30)
child.expect("GROUP:")
child.sendline("staff")
child.expect("USERNAME:")
child.sendline("alice")
child.expect("PASSWORD:")
child.sendline(PASSWORD)
child.expect("Connected as", timeout=60)Àwọn okùn ìbéèrè tí ó wà lókè jẹ́ àpẹẹrẹ; dà á kópù gbólóhùn gangan tí ẹ̀rọ rẹ ń tẹ̀ jáde, pẹ̀lú ìwọ̀n lẹ́tà àti àmì ìdáná. Gbogbo ìfojúsọ́nà ní àkókò ààlà, ọmọ tí ó ti sé sì ń fi ìyàtọ̀ àbùdá jáde dípò dídá ipò padà, nítorí náà yí ìtẹ̀lé náà ká kí o sì ka òpin fáìlì sí ìkùnà. Ṣàkíyèsí ohun tí àkójọ yìí kò ṣe: ọmọ náà kú pẹ̀lú àkọsílẹ̀, nítorí pty kì í ṣe ọ̀nà ìyàsọ́tọ̀, disown sì jẹ́ àṣẹ inú shell tí kò lè dé ìlànà tí àkọsílẹ̀ rẹ dá.
Ìṣàyẹ̀wò 3: ṣé ìwọlé àìṣeré tí a ṣe àtìlẹ́yìn fún wà?
Fífi ojú iboju fọ́ máa ń já nígbà ìgbéga ẹ̀rọ, nítorí náà kọ́kọ́ wá àṣàyàn tí a kọ sílẹ̀.
Wò àbájáde ìrànwọ́ fún àṣàyàn tọ́kẹ̀nì tàbí kóòdù ẹ̀ẹ̀kan, kí o sì wò bóyá iṣẹ́ náà ń gba kóòdù tí a fi kún pápá ọ̀rọ̀ ìpamọ́. Níbi tí ẹ̀rọ ń ka fáìlì ẹ̀rí, fún un ní fáìlì náà dípò ìbéèrè:
openvpn --config office.ovpn --auth-user-pass <(printf "%s\n%s\n" "$USER_NAME" "$PASSWORD")Ìyípadà ìlànà ń fún ẹ̀rọ ní ipa ọ̀nà tí a lè kà lórí àwọn ẹ̀rọ tí ń pèsè /dev/fd. Àṣírí náà ṣì jẹ́ àṣírí ní ojú ẹ̀rọ náà, nítorí náà pa á mọ́ kúrò nínú àwọn ìwé ìkọ̀wé, ìtàn shell àti àkọsílẹ̀ àwọn ìlànà. Bí ẹ̀rọ náà bá kọ̀ /dev/fd tàbí ó ṣí ipa ọ̀nà ẹ̀rí ju ẹ̀ẹ̀kan lọ, kọ fáìlì gidi pẹ̀lú àwọn àṣẹ tí ó le, kí o sì pa á rẹ́ nínú àkọsílẹ̀ kan náà.
Ìṣàyẹ̀wò 4: ṣé ojú ọ̀nà yóò wà pẹ́ ju àkọsílẹ̀ lọ?
Ní àkọ́kọ́ ojú ọ̀nà máa ń kú pẹ̀lú òbí rẹ̀, èyí tí ó yàtọ̀ pátápátá sí ohun tí àkọsílẹ̀ ìbẹ̀rẹ̀ nílò.
disown -h ń ràn wá nígbà tí o bá bẹ̀rẹ̀ ẹ̀rọ náà gẹ́gẹ́ bí iṣẹ́ shell nìkan, nítorí ó ń ṣàtúnṣe tábìlì iṣẹ́ shell yẹn kò sì lè dé ìlànà tí àkọsílẹ̀ rẹ gbé kalẹ̀ nípasẹ̀ pty. Olùṣàkóso iṣẹ́ ni ibi tí ó dára jù fún ohunkóhun tí ó gbọdọ̀ tún so pọ̀ láìsí àbójútó, nítorí ó ń tún ẹ̀rọ náà bẹ̀rẹ̀ ó sì ń kọ ìdí tí ó fi kú. Ní gbogbo ọ̀nà, retí kóòdù tuntun lẹ́yìn gbogbo àtúnsopọ̀: tọ́kẹ̀nì ẹ̀ẹ̀kan ni ìjẹ́rìí àkọ́kọ́ tí ó ṣàṣeyọrí ń lo.
Ṣàkíyèsí ohun tí sudo ń ṣe sí ìtẹ̀lé náà. Ìbéèrè ọ̀rọ̀ ìpamọ́ sudo kì í ṣe ìbéèrè VPN, dídáhùn sí i pẹ̀lú ọ̀rọ̀ ìpamọ́ VPN sì ni ọ̀nà tí ó wọ́pọ̀ jù tí ìtẹ̀lé ìfojúsọ́nà tí ó tọ́ yóò fi kùnà.
Ìṣàyẹ̀wò 5: ṣé kóòdù ènìyàn gbọdọ̀ wà nínú àkọsílẹ̀?
Èyí ni ìṣàyẹ̀wò tí àwọn ènìyàn ń fò ó kọjá. Tọ́kẹ̀nì jẹ́ ti ènìyàn, nígbà tí ojú ọ̀nà tí ó gbọdọ̀ dìde ní àkókò jẹ́ ti ẹ̀rọ.
Bí iṣẹ́ kan bá gbọdọ̀ tún so pọ̀ láìsí àbójútó, béèrè bóyá ẹ̀rí ẹ̀rọ tàbí àkọsílẹ̀ iṣẹ́ lè rọ́pò ìwọlé àjọṣepọ̀. Ṣíṣe kóòdù ẹ̀ẹ̀kan ẹnìkan fúnra rẹ̀ máa ń sọ kókó kejì di àṣírí tí a fi pamọ́, èyí tí í ṣe ìyípadà ìlànà kì í ṣe ìrọ̀rùn àkọsílẹ̀. Níbi tí iṣẹ́ náà ti ń ṣe àtìlẹ́yìn fún méjèèjì, yan ẹ̀rí tí ó bá bí iṣẹ́ náà ṣe ń ṣiṣẹ́ gangan mu. Kọ ìdáhùn náà sílẹ̀, nítorí ẹni tí ó kàn yóò béèrè ìdí tí àkọsílẹ̀ fi di tọ́kẹ̀nì mú.
Báwo ni àkọsílẹ̀ tí ń ṣiṣẹ́ ṣe rí
Àkọsílẹ̀ ń tẹ ìgbésẹ̀ tí ó dé jáde, kì í tẹ àṣírí jáde rí, ó sì ń jáde pẹ̀lú kóòdù tí kì í ṣe òdo ní gbogbo ìfojúsọ́nà tí ó kùnà.
Dán wò nípa fífọ́ ọ mọ̀ọ́mọ̀: ọ̀rọ̀ ìpamọ́ tí kò tọ́, ẹgbẹ́ tí kò tọ́, tọ́kẹ̀nì tí ó ti parí. Gbogbo ìkùnà gbọdọ̀ dúró ní ìgbésẹ̀ tí a dárúkọ dípò dídúró lọ́nà àìlópin. Lẹ́yìn náà ṣe é lẹ́ẹ̀kan lò lòdì sí iṣẹ́ gidi kí o sì yẹ ojú ọ̀nà wò láti ìta àkọsílẹ̀, kì í ṣe láti inú.