ವೆಂಡರ್ನ 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: ವ್ಯಕ್ತಿಯ ಕೋಡ್ ಸ್ಕ್ರಿಪ್ಟ್ನಲ್ಲಿರಬೇಕೇ?

ಇದು ಜನರು ಬಿಟ್ಟುಬಿಡುವ ಪರಿಶೀಲನೆ. ಟೋಕನ್ ವ್ಯಕ್ತಿಗೆ ಸೇರಿದ್ದು, ಆದರೆ ವೇಳಾಪಟ್ಟಿಯಂತೆ ಏಳಬೇಕಾದ ಸುರಂಗ ಯಂತ್ರಕ್ಕೆ ಸೇರಿದ್ದು.

ಕೆಲಸವು ಮೇಲ್ವಿಚಾರಣೆ ಇಲ್ಲದೆ ಮರುಸಂಪರ್ಕ ಆಗಬೇಕಾದರೆ, ಯಂತ್ರ ಪ್ರಮಾಣಪತ್ರ ಅಥವಾ ಸೇವಾ ಖಾತೆ ಇಂಟರ್ಯಾಕ್ಟಿವ್ ಲಾಗಿನ್ ಅನ್ನು ಬದಲಿಸಬಹುದೇ ಎಂದು ಕೇಳಿ. ಯಾರೊಬ್ಬರ ಒಂದು ಬಾರಿಯ ಕೋಡ್ ಅನ್ನು ಸ್ವಯಂಚಾಲಿತಗೊಳಿಸುವುದು ಎರಡನೇ ಅಂಶವನ್ನು ಸಂಗ್ರಹಿತ ರಹಸ್ಯವಾಗಿ ಪರಿವರ್ತಿಸುತ್ತದೆ, ಅದು ಸ್ಕ್ರಿಪ್ಟಿಂಗ್ ಅನುಕೂಲವಲ್ಲ ಬದಲಿಗೆ ನೀತಿ ಬದಲಾವಣೆ. ಸೇವೆ ಎರಡನ್ನೂ ಬೆಂಬಲಿಸುವ ಸ್ಥಳದಲ್ಲಿ, ಕೆಲಸವು ನಿಜವಾಗಿ ಹೇಗೆ ನಡೆಯುತ್ತದೆ ಎಂಬುದಕ್ಕೆ ಹೊಂದುವ ರುಜುವಾತನ್ನು ಆರಿಸಿ. ಉತ್ತರವನ್ನು ಬರೆಯಿರಿ, ಏಕೆಂದರೆ ಮುಂದಿನ ವ್ಯಕ್ತಿ ಸ್ಕ್ರಿಪ್ಟ್ ಏಕೆ ಟೋಕನ್ ಇಟ್ಟುಕೊಂಡಿದೆ ಎಂದು ಕೇಳುತ್ತಾರೆ.

ಕೆಲಸ ಮಾಡುವ ಸ್ಕ್ರಿಪ್ಟ್ ಹೇಗಿರುತ್ತದೆ

ಸ್ಕ್ರಿಪ್ಟ್ ತಲುಪಿದ ಹಂತವನ್ನು ಮುದ್ರಿಸುತ್ತದೆ, ರಹಸ್ಯವನ್ನು ಎಂದಿಗೂ ಅಲ್ಲ, ಮತ್ತು ಯಾವುದೇ ವಿಫಲ ನಿರೀಕ್ಷೆಯಲ್ಲಿ ಶೂನ್ಯವಲ್ಲದ ಕೋಡ್ನೊಂದಿಗೆ ನಿರ್ಗಮಿಸುತ್ತದೆ.

ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ ಮುರಿದು ಪರೀಕ್ಷಿಸಿ: ತಪ್ಪು ಪಾಸ್ವರ್ಡ್, ತಪ್ಪು ಗುಂಪು, ಅವಧಿ ಮೀರಿದ ಟೋಕನ್. ಪ್ರತಿ ವೈಫಲ್ಯವೂ ನೇತಾಡುವ ಬದಲು ಹೆಸರಿಸಿದ ಹಂತದಲ್ಲಿ ನಿಲ್ಲಬೇಕು. ನಂತರ ನಿಜವಾದ ಸೇವೆಯ ವಿರುದ್ಧ ಅದನ್ನು ಒಮ್ಮೆ ಓಡಿಸಿ ಮತ್ತು ಸುರಂಗವನ್ನು ಸ್ಕ್ರಿಪ್ಟ್ನ ಹೊರಗಿನಿಂದ ಪರಿಶೀಲಿಸಿ, ಒಳಗಿನಿಂದ ಅಲ್ಲ.

ಸಂಬಂಧಿತ ಲೇಖನಗಳು