టోకెన్ కోడ్ కోసం వేచి ఉండే 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: వ్యక్తి కోడ్ స్క్రిప్ట్లో ఉండాలా?
ఇదే ప్రజలు దాటవేసే తనిఖీ. టోకెన్ వ్యక్తికి చెందుతుంది, కానీ షెడ్యూల్ ప్రకారం పైకి రావాల్సిన సొరంగం యంత్రానికి చెందుతుంది.
ఏదైనా పని పర్యవేక్షణ లేకుండా తిరిగి కనెక్ట్ కావాలంటే, యంత్ర ధృవపత్రం లేదా సేవా ఖాతా ఇంటరాక్టివ్ లాగిన్ను భర్తీ చేయగలదా అని అడగండి. ఒకరి ఒకసారి కోడ్ను స్వయంచాలకం చేయడం రెండవ కారకాన్ని నిల్వ చేసిన రహస్యంగా మారుస్తుంది, అది స్క్రిప్ట్ సౌలభ్యం కాదు విధాన మార్పు. సేవ రెండింటినీ మద్దతిచ్చే చోట, పని నిజంగా ఎలా నడుస్తుందో దానికి సరిపోయే ఆధారాలను ఎంచుకోండి. సమాధానాన్ని రాసి పెట్టండి, ఎందుకంటే తదుపరి వ్యక్తి స్క్రిప్ట్ ఎందుకు టోకెన్ ఉంచుకుంది అని అడుగుతారు.
పని చేసే స్క్రిప్ట్ ఎలా ఉంటుంది
స్క్రిప్ట్ చేరుకున్న దశను ముద్రిస్తుంది, రహస్యాన్ని ఎప్పుడూ కాదు, మరియు ఏదైనా విఫలమైన ఆశపై సున్నా కాని కోడ్తో బయటకు వస్తుంది.
ఉద్దేశపూర్వకంగా విరగ్గొట్టి పరీక్షించండి: తప్పు పాస్వర్డ్, తప్పు సమూహం, గడువు ముగిసిన టోకెన్. ప్రతి వైఫల్యం వేలాడుతూ ఉండకుండా పేరు పెట్టిన దశలో ఆగాలి. తర్వాత నిజమైన సేవకు వ్యతిరేకంగా ఒకసారి అమలు చేసి సొరంగాన్ని స్క్రిప్ట్ వెలుపల నుండి తనిఖీ చేయండి, లోపల నుండి కాదు.