టెర్మినల్ మూసినప్పుడు AnyConnect కట్ అవుతుంది: సెషన్ తనిఖీలు
Linux AnyConnect క్లయింట్ కనెక్ట్ అయ్యే సమయంలో తెరిచిన లాగిన్ సెషన్లను గుర్తుంచుకుని, వాటిలో ఒకటి మూసివేయబడినప్పుడు టన్నెల్ను కత్తిరిస్తుంది. utmp తిరిగి రాసే ముందు క్రమాన్ని తనిఖీ చేయండి.
టన్నెల్ నడుస్తోంది, మీరు ఒక అదనపు టెర్మినల్ మూస్తారు, క్లయింట్లో ఒక్క కీ కూడా నొక్కకుండానే VPN కిందకు దిగుతుంది. Linux AnyConnect క్లయింట్లో నివేదించబడిన కారణం రూటింగ్ కాదు, సెషన్ అకౌంటింగ్: టన్నెల్ పైకి వచ్చినప్పుడు ఏ లాగిన్ సెషన్లు ఉన్నాయో క్లయింట్ నమోదు చేసి, వాటిలో ఏదైనా ముగియడాన్ని టన్నెల్ను కూల్చే కారణంగా భావిస్తుంది. కింది తనిఖీలు వరుసగా జరుగుతాయి, మొదటిది విఫలమైతే మీరు ఈ ప్రవర్తనను చూస్తున్నారా అని తెలియజేస్తుంది. క్లయింట్ సాధారణ అవుట్పుట్లో టెర్మినల్ గురించి ఏమీ ఉండదు, అందుకే మొదట కన్సంట్రేటర్ను నిందించడం సాధారణంగా వృథా శ్రమ.
సిస్టమ్ ఫైళ్లను సవరించడంతో ప్రారంభించకండి. ప్రతి దశ కత్తిరింపును వివరిస్తుంది లేదా ఒక అవకాశాన్ని తొలగిస్తుంది, చవకైన దశలు ముందుగా వస్తాయి.
సెషన్ కత్తిరింపును అండర్లే కత్తిరింపు నుండి వేరు చేయండి
డిస్కనెక్ట్ అయిన వెంటనే తిరిగి కనెక్ట్ అవ్వండి. అదే నెట్వర్క్లో, కొత్త ఆధారాలు లేకుండా, కొన్ని సెకన్లలో తిరిగి వచ్చే టన్నెల్ చనిపోయిన అప్లింక్, Wi-Fi రోమింగ్ లేదా కన్సంట్రేటర్పై నిష్క్రియ టైమ్అవుట్ కాదు, మూసిన సెషన్ వంటి స్థానిక ప్రేరణను సూచిస్తుంది. Connecting పై వేలాడే లేదా నెట్వర్క్ మార్చేవరకు విఫలమయ్యే టన్నెల్ మరో వ్యాసం.
టన్నెల్ పైకి వచ్చినప్పుడు ఏమి తెరిచి ఉందో రాసుకోండి: క్లయింట్ నడిపిన టెర్మినల్, ఏదైనా రెండవ షెల్, గ్రాఫికల్ లాగిన్, మరో మెషీన్ నుండి ఏదైనా SSH సెషన్. ఆ జాబితా కొద్దిసేపట్లో అవసరం అవుతుంది, తదుపరి కత్తిరింపు తర్వాత జ్ఞాపకం నుండి దాన్ని పునర్నిర్మించడం నమ్మదగినది కాదు.
కనెక్ట్ అయిన సమయంలో క్లయింట్ ఏమి నమోదు చేసిందో తనిఖీ చేయండి
క్లయింట్ ప్రాసెస్ తల్లిదండ్రులను లేదా టెర్మినల్ యాజమాన్యాన్ని పరిశీలించదు. కనెక్ట్ అయిన సమయంలో ఉన్న లాగిన్ సెషన్ల సమితిని స్నాప్షాట్ తీసి తర్వాత ఆ సమితితో పోలుస్తుంది; సభ్యుడు మాయమైతే పోలిక విఫలమై టన్నెల్ కూడా పోతుంది. అందుకే మీరు కనెక్ట్ అయిన విండోను మూయడం హానికరం కాకపోవచ్చు, కానీ సంబంధం లేని అదనపు టెర్మినల్ మూయడం కనెక్షన్ను చంపుతుంది: ఆ సెషన్ అసలు సమితిలో ఉందా అన్నదే ముఖ్యం. ఇది లెక్క కాదు, సమితి పోలిక, అందుకే సెషన్ను భర్తీ చేయడం ఒకటి కోల్పోవడంతో సమానంగా ప్రాణాంతకం కావచ్చు.
ఏదైనా మార్చే ముందు క్లయింట్ ఏమి చూడగలిగిందో జాబితా చేయండి:
who
w
last -n 10
sudo ls -l /run/utmpwho నుండి వచ్చే ప్రతి పంక్తి utmp లో ఒక వినియోగదారు ప్రాసెస్ నమోదు. మీ సెషన్ రెండుసార్లు కనిపిస్తే, ఒకసారి గ్రాఫికల్ లాగిన్కు మరియు ఒకసారి టెర్మినల్కు, రెండు నమోదులు కనెక్ట్ అయిన సమయంలో ఉన్నాయి, రెండూ అభ్యర్థులు.
utmp నుండి మీ స్వంత నమోదును మాత్రమే తొలగించండి
ప్రచురించిన పరిష్కారం మీరు ఉపయోగించబోయే సెషన్ను క్లయింట్ ప్రారంభం కాకముందే utmp లో కనిపించకుండా చేస్తుంది. ఒక చిన్న C ప్రోగ్రామ్ getutent() గుండా వెళ్లి, ut_line ప్రామాణిక ఇన్పుట్ TTY కి సమానమైన రికార్డును కనుగొని, ఆ రికార్డును తిరిగి రాస్తుంది. క్రమం ఉద్దేశపూర్వకం: setutent(), నమోదు చదవండి, దాని ut_id కాపీ చేయండి, ut_type ను DEAD_PROCESS గా సెట్ చేయండి, వినియోగదారు మరియు పంక్తి ఫీల్డ్లను ఖాళీ చేయండి, pututline() తో తిరిగి రాయండి, తర్వాత endutent().
దాన్ని కంపైల్ చేయండి, తర్వాత క్లయింట్ ప్రారంభించే షెల్ నుండి root గా అమలు చేయండి:
sudo ./utmpremove && /opt/cisco/anyconnect/bin/vpn -s connect vpn.example.eduసాధనం ఏమీ చేయదు అనే చాలా నివేదికలకు రెండు వైఫల్య పద్ధతులు కారణం. ఇది ప్రామాణిక ఇన్పుట్కు జోడించిన TTY పై పనిచేస్తుంది, కాబట్టి టెర్మినల్ లేని స్క్రిప్ట్ లేదా cron పని నుండి అమలు చేస్తే సరిపోల్చడానికి ఏమీ మిగలదు. మరియు /run/utmp సాధారణ వినియోగదారులకు రాయదగినది కాదు, కాబట్టి root లేకుండా అమలు చేస్తే నిష్క్రమణ స్థితిని తనిఖీ చేయకపోతే నిశ్శబ్దంగా విఫలమవుతుంది.
టన్నెల్ మూతను తట్టుకుంటుందో లేదో తనిఖీ చేయండి
యంత్రాంగాన్ని ఊహించకుండా పరీక్షించండి. మీరు ఉంచుకోవాలనుకునే సెషన్ నుండి కనెక్ట్ అవ్వండి, రెండవ టెర్మినల్ తెరవండి, రెండవదాన్ని మూయండి, తర్వాత vpn state మరియు ఇంటర్ఫేస్ జాబితా చూసి టన్నెల్ ఇంకా పైనే ఉందని నిర్ధారించండి. టన్నెల్ జీవించి ఉంటే, ప్రేరణ ప్రతి సెషన్ కాదు నిర్దిష్ట సెషన్ రకం, తెరిచి ఉంచాల్సిన సెషన్ మీకు దొరికింది.
ఇంకా కత్తిరించబడుతుంటే, గమనించిన సెషన్ వేరే చోట ఉంది, తరచుగా మీ టెర్మినల్ను పుట్టించిన గ్రాఫికల్ లాగిన్, ఒక TTY నమోదును తీసేయడం సహాయపడదు. ఇంకా శస్త్రచికిత్స చేయడం కంటే మొదటి దశ పూర్తి జాబితాతో పరిశీలనను పునరావృతం చేయండి.
utmp తిరిగి రాయడం తప్పు సమాధానం ఎప్పుడు
utmp పంచుకున్న అకౌంటింగ్, వ్యక్తిగత పట్టిక కాదు. ఇంకా సజీవంగా ఉన్న సెషన్ నమోదును తిరిగి రాయడం who, w మరియు కొన్ని ఆడిట్ సాధనాలు దాన్ని తక్కువగా నివేదించేలా చేస్తుంది, తర్వాత అదే నమోదును మూసే ప్రోగ్రామ్ పూర్తిగా విఫలమవచ్చు. సాధనాన్ని మీ స్వంత సెషన్కు మాత్రమే పరిమితం చేయండి, అసలు ఫైల్ కాపీని ఉంచండి, ప్రతి రికార్డును తొలగించే బూట్ సేవగా మార్చకండి.
మీ సంస్థ అనుపాలన కోసం సెషన్ అకౌంటింగ్ సేకరిస్తే, ఈ పరిష్కారం ఆ అవసరానికి విరుద్ధం, మద్దతు ఉన్న సమాధానం క్లయింట్ వెర్షన్ లేదా మరో యాక్సెస్ పద్ధతి, ప్యాచ్ చేసిన utmp కాదు. చాలామందికి తక్కువ జోక్యం ఉన్న పరిష్కారం రోజంతా తెరిచి ఉండే సెషన్ నుండి క్లయింట్ను ప్రారంభించి ఆ విండోను వదిలేయడం.
టికెట్ మూసే ముందు, టన్నెల్ పైకి వచ్చినప్పుడు క్లయింట్ ఏ సెషన్ను గమనిస్తోందో నమోదు చేయండి. ఆ ఒక్క పంక్తి రహస్య డిస్కనెక్ట్ను మెషీన్పై తదుపరి వ్యక్తికి పునరుత్పత్తి చేయగల స్థితిగా మారుస్తుంది.