ටෝකන් කේතයක් එනතුරු බලා සිටින VPN පිවිසුම ස්වයංක්රීය කරන්නේ කෙසේද
ටර්මිනලයේ අසන CLI VPN සේවාලාභියා මුරපදය පමණක් නළයකින් යවන ස්ක්රිප්ටය නතර කරයි. expect වෙත යාමට පෙර මෙම පරීක්ෂණ පහ සම්පූර්ණ කරන්න.
වෙළෙන්දාගේ VPN සේවාලාභියා ආරම්භ කරන ස්ක්රිප්ටය කාල සීමාව අවසන් වන තෙක් එල්ලී තිබේ, කිසිවෙකු ටයිප් නොකළ සත්යාපන කේතයක් සේවාලාභියා ඉල්ලන බව ලොගය පෙන්වයි. මුරපදය ලබා දී තිබුණි, එබැවින් මුරපදය වැරදියි යනු පැහැදිලි නිගමනයයි. එය එසේ නොවේ. කේත ඉල්ලීම වෙනත් නාලිකාවක වෙනත් සංවාදයක් වන අතර, ඔබේ ස්ක්රිප්ටය එය කිසිදා විවෘත කළේ නැත.
පහත පරීක්ෂණ පහ පිළිවෙලට කරන්න. පළමුව අසමත් වන පරීක්ෂණයේදී නවතින්න, මන්ද සෑම ඊළඟ පියවරක්ම පෙර ඒවා වලංගු යැයි උපකල්පනය කරයි.
පරීක්ෂණය 1: සේවාලාභියා සම්මත ආදානය කියවන්නේද?
කිසියම් ස්වයංක්රීයකරණයක් ලිවීමට පෙර පරීක්ෂා කරන්න: නළයකින් සේවාලාභියාට ව්යාජ රහසක් යවා කුමක් සිදුවේදැයි බලන්න. එය තම ඉල්ලීම මුද්රණය කර පසුව බලා සිටී නම්, එය නළය කියවන්නේ නැත.
බොහෝ සේවාලාභීහු ටර්මිනල උපාංගය සෘජුවම විවෘත කරති, නැතහොත් ටර්මිනලයක් නොවන ධාරාවකින් රහසක් ගැනීම ප්රතික්ෂේප කරති, එවිට අතරමං වූ නළයකට මුරපදයක් කාන්දු කළ නොහැක. OpenVPN යනු ලේඛනගත ව්යතිරේකයයි, මන්ද --auth-user-pass ගොනු මාර්ගයක් ගනී. එක් වරක් පමණක් කේතයක් ඉල්ලන වෙළෙන්දන්ගේ සේවාලාභීන්ට සාමාන්යයෙන් සමාන විකල්පයක් නොමැති අතර, ඔවුන්ගේ ඉල්ලීම ඔබේ ස්ක්රිප්ටය කිසිදා නොදුන් ටර්මිනලයක් එනතුරු බලා සිටී.
පරීක්ෂණය 2: දරු ක්රියාවලියට ටර්මිනලයක් තිබේද?
pty දරුවාට ටර්මිනලයක් වෙන් කරයි, එය ඉල්ලීම් පිළිවෙලට පිළිතුරු දිය හැකි කියවිය හැකි ප්රතිදානයක් බවට පත් කරයි.
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)ඉහත ඉල්ලීම් තන්තු උදාහරණ පමණි; ඔබේ සේවාලාභියා මුද්රණය කරන නිශ්චිත පෙළ අකුරු ප්රමාණය සහ විරාම ලකුණු සමඟ පිටපත් කරන්න. සෑම අපේක්ෂාවකටම කාල සීමාවක් ඇත, සහ වැසුණු දරුවෙක් තත්ත්වයක් ආපසු දෙනවාට වඩා ව්යතිරේකයක් විසි කරයි, එබැවින් අනුපිළිවෙල වට කර ගොනුවේ අවසානය අසාර්ථකත්වයක් ලෙස සලකන්න. මෙම කොටස කරන්නේ කුමක්ද නොවේදැයි සැලකිල්ලට ගන්න: දරුවා ස්ක්රිප්ටය සමඟ මිය යයි, මන්ද pty යනු වෙන් කිරීමේ යාන්ත්රණයක් නොවන අතර disown යනු ෂෙල්හි අන්තර්ගත විධානයක් වන අතර එය ඔබේ ස්ක්රිප්ටය නිර්මාණය කළ ක්රියාවලියට ළඟා විය නොහැක.
පරීක්ෂණය 3: සහාය දක්වන අන්තර්ක්රියා රහිත ආදානයක් තිබේද?
තිරය සීරීම සේවාලාභී උත්ශ්රේණි කිරීම්වලදී කැඩී යයි, එබැවින් පළමුව ලේඛනගත විකල්පයක් සොයන්න.
උපකාර ප්රතිදානයේ ටෝකන් හෝ එක් වරක් කේත විකල්පයක් තිබේදැයි පරීක්ෂා කරන්න, සහ මුරපද ක්ෂේත්රයට එකතු කළ කේතය සේවාව පිළිගන්නවාදැයි ද පරීක්ෂා කරන්න. සේවාලාභියා අක්තපත්ර ගොනුවක් කියවන තැන, ඉල්ලීමක් වෙනුවට ගොනුව දෙන්න:
openvpn --config office.ovpn --auth-user-pass <(printf "%s\n%s\n" "$USER_NAME" "$PASSWORD")ක්රියාවලි ආදේශනය /dev/fd සපයන පද්ධතිවල සේවාලාභියාට කියවිය හැකි මාර්ගයක් දෙයි. සේවාලාභියාගේ දෘෂ්ටිකෝණයෙන් රහස තවමත් රහසකි, එබැවින් එය ලොග, ෂෙල් ඉතිහාසය සහ ක්රියාවලි ලැයිස්තුවලින් ඈත් කර තබන්න. සේවාලාභියා /dev/fd ප්රතික්ෂේප කරන්නේ නම් හෝ අක්තපත්ර මාර්ගය එක් වරකට වඩා විවෘත කරන්නේ නම්, දැඩි අවසර සහිත සැබෑ ගොනුවක් ලියා එම ස්ක්රිප්ටයේම එය මකන්න.
පරීක්ෂණය 4: උමග ස්ක්රිප්ටයට වඩා ජීවත් වේද?
පෙරනිමියෙන් උමග එහි මවුපියා සමඟ මිය යයි, එය ආරම්භක ස්ක්රිප්ටයකට අවශ්ය දෙයට හාත්පසින්ම වෙනස් ය.
disown -h උපකාරී වන්නේ ඔබ සේවාලාභියා ෂෙල් කාර්යයක් ලෙස ආරම්භ කළ විට පමණි, මන්ද එය එම ෂෙල්හි කාර්ය වගුව සංස්කරණය කරන අතර ඔබේ ස්ක්රිප්ටය pty හරහා නිර්මාණය කළ ක්රියාවලියට ළඟා විය නොහැක. අධීක්ෂණයකින් තොරව නැවත සම්බන්ධ විය යුතු සියල්ලට සේවා කළමනාකරු වඩා හොඳ ස්ථානයකි, මන්ද එය සේවාලාභියා නැවත ආරම්භ කර ඇයි මිය ගියේදැයි වාර්තා කරයි. කෙසේ වුවද, සෑම නැවත සම්බන්ධතාවයකට පසුව නව කේතයක් අපේක්ෂා කරන්න: එක් වරක් ටෝකනය පළමු සාර්ථක සත්යාපනයෙන් වැය වේ.
sudo අනුපිළිවෙලට කුමක් කරයිදැයි සැලකිල්ලට ගන්න. sudo හි මුරපද ඉල්ලීම VPN හි ඉල්ලීම නොවේ, සහ එයට VPN මුරපදයෙන් පිළිතුරු දීම එසේ නොමැති නම් නිවැරදි අපේක්ෂා අනුපිළිවෙල අසමත් වන වඩාත් පොදු ක්රමයයි.
පරීක්ෂණය 5: පුද්ගලයෙකුගේ කේතය ස්ක්රිප්ටයක තිබිය යුතුද?
මෙය මිනිසුන් මඟ හරින පරීක්ෂණයයි. ටෝකනය පුද්ගලයෙකුට අයත් වන අතර, කාලසටහනකට අනුව ඉහළ යා යුතු උමග යන්ත්රයට අයත් වේ.
කාර්යයක් අධීක්ෂණයකින් තොරව නැවත සම්බන්ධ විය යුතු නම්, යන්ත්ර සහතිකයක් හෝ සේවා ගිණුමක් අන්තර්ක්රියාකාරී පිවිසුම වෙනුවට ආදේශ කළ හැකිදැයි අසන්න. කෙනෙකුගේ එක් වරක් කේතය ස්වයංක්රීය කිරීම දෙවන සාධකය ගබඩා කළ රහසක් බවට පත් කරයි, එය ස්ක්රිප්ට පහසුවක් නොව ප්රතිපත්ති වෙනසකි. සේවාව දෙකම සහාය දක්වන තැන, කාර්යය සැබවින්ම ක්රියාත්මක වන ආකාරයට ගැලපෙන අක්තපත්ර තෝරන්න. පිළිතුර ලියා තබන්න, මන්ද ඊළඟ පුද්ගලයා ස්ක්රිප්ටය ටෝකනයක් තබා ගන්නේ ඇයිදැයි අසනු ඇත.
වැඩ කරන ස්ක්රිප්ටයක් පෙනෙන්නේ කෙසේද
ස්ක්රිප්ටය ළඟා වූ පියවර මුද්රණය කරයි, රහස කිසිදා නොවේ, සහ ඕනෑම අසාර්ථක අපේක්ෂාවකදී ශුන්ය නොවන කේතයකින් ඉවත් වේ.
හිතාමතා කඩා එය පරීක්ෂා කරන්න: වැරදි මුරපදය, වැරදි කණ්ඩායම, කල් ඉකුත් වූ ටෝකනය. සෑම අසාර්ථකත්වයක්ම එල්ලී තිබෙනවාට වඩා නම් කළ පියවරක නැවතිය යුතුය. පසුව සැබෑ සේවාවට එරෙහිව එක් වරක් ධාවනය කර උමග ස්ක්රිප්ටයෙන් පිටතින් පරීක්ෂා කරන්න, ඇතුළතින් නොව.