Սկրիպտը ավարտվում է զրոյով, թունելը հայտնվում է, և հաջորդ գործարկումը մերժվում է նախքան գաղտնաբառ պահանջելը։ Կամ նույն հրամանը աշխատում է տերմինալում և ձախողվում է պլանավորված առաջադրանքից «իրադարձությունը չի գտնվել» սխալով, որը ոչինչ օգտակար չի անվանում։ Երկուսն էլ AnyConnect-ի հաճախորդի ստանդարտ մուտքի զրույցն է, որ սխալ է ընթանում, ոչ թե ցանցի խափանում։ Վերաբերվեք մուտքին որպես գրավոր հարց ու պատասխան, և ձախողումները դառնում են կանխատեսելի ու փոքր։

Ինչու նույն հրամանը ձախողվում է սկրիպտի ներսում

Հաճախորդը իր պատասխանները կարդում է ստանդարտ մուտքից՝ մեկ տող մեկ հուշման համար, այն հերթականությամբ, ինչ դարպասը դրանք պահանջում է։ Ամեն ինչ, որ փոխում է հուշումների քանակը, օրինակ նոր բաններ, խմբի ընտրիչ կամ երկրորդ գործոնի մարտահրավեր, յուրաքանչյուր հաջորդ պատասխան տեղափոխում է մեկ տողով։ Այնուհետև հաճախորդը կարդում է օգտանուն այնտեղ, որտեղ գաղտնաբառ էր սպասում, և հաղորդում է ձախողման մասին, որը ոչ մեկին չի մատնանշում։

Բացականչական նշան պարունակող գաղտնաբառը ավելացնում է ավելի հանգիստ երկրորդ ձախողում։ Կրկնակի չակերտների մեջ shell-ը այն ընդլայնում է շատ ավելի վաղ, քան հաճախորդը որևէ բան կտեսնի։

Տեղադրեք բեռը միակ չակերտների մեջ, և նշանը անցնում է անվնաս։ Սա է ամբողջ ուղղումը, և այն բացատրում է հաշվետվությունների մի ամբողջ դաս, որտեղ նույն հավատարմագրերը աշխատում են մուտքագրելիս և ձախողվում պահելիս։ Ստուգեք, թե ինչ արեց shell-ը նախքան դարպասը ստուգելը՝ տպեք բեռը փաթաթանի միջով, որը ցույց է տալիս ճշգրիտ բայթերը, և հաշվեք տողերը։ Այս հետաքննությունների մեծ մասը ավարտվում է հենց այնտեղ։

Գրեք պատասխանները այն հերթականությամբ, ինչ հաճախորդը պահանջում է

Մեկ անգամ ինտերակտիվ գործարկեք հաճախորդին և գրի առեք յուրաքանչյուր հուշում հերթականությամբ։ Խմբի ընտրիչը հայտնվում է միայն այն ժամանակ, երբ դարպասը հրապարակում է մի քանի պրոֆիլ, իսկ բանների հուշումը՝ միայն այն ժամանակ, երբ մեկը կազմաձևված է։ Պատասխանների ֆայլը պետք է համապատասխանի այն դարպասին, որին իրականում ուղղված եք, ոչ թե փաստաթղթերում եղածին։

Այնուհետև կառուցեք ֆայլը հենց այդ հաջորդականությամբ՝ մեկ պատասխան մեկ տողում։ Խմբի ինդեքսը այն թիվն է, որը հաճախորդը թվարկում է, ոչ թե պրոֆիլի դիրքը փաստաթղթում։ Ընդունեք բանները միայն այն դեպքում, եթե ձեր դարպասը մեկն ուղարկում է, և ավելացրեք տող յուրաքանչյուր լրացուցիչ հարցի համար, որը հայտնի է, որ այդ դարպասը տալիս է։ Գործարկեք հաճախորդը ոչ ինտերակտիվ դրոշակով, որպեսզի այն սպառի ֆայլը՝ տերմինալի սպասելու փոխարեն։

connect vpn.lab.example
0
username
password
y
exit
/opt/cisco/anyconnect/bin/vpn -s < anyconnect.txt

Նույն հաջորդականությունը կարող է գալ խողովակով, երբ նախընտրում եք սկավառակի վրա ֆայլ չպահել։ Չակերտների կանոնները դեռ որոշում են՝ այն կմնա՞ արդյոք։

Պահեք հավատարմագրերը գործընթացների ցանկից դուրս

Հրամանի տողի արգումենտը ընթեռնելի է յուրաքանչյուր տեղական օգտատիրոջ համար գործընթացի ողջ կյանքի ընթացքում, ուստի գաղտնաբառը պատկանում է ֆայլին կամ խողովակին և երբեք արգումենտների ցանկին։ Դարձրեք այդ ֆայլը ընթեռնելի միայն այն հաշվի համար, որը գործարկում է սկրիպտը, և ջնջեք այն, երբ աշխատանքը ավարտվի։ macOS-ում բինարը սովորաբար նույն ուղու վրա է, ինչ Linux-ում, բայց հաստատեք տեղադրված տեղը՝ ենթադրելու փոխարեն։ Փաթաթանը, որը ստուգում է երկու ուղիները, ավելի կարճ է, քան միջադեպի հաշվետվությունը։

printf 'username\npassword\ny\n' | /opt/cisco/anyconnect/bin/vpn -s connect vpn.lab.example

Թույլ մի տվեք նաև, որ սկրիպտը անվերջ նորից փորձի։ Փոխված բանները կամ գիշերվա ընթացքում ժամկետանց գաղտնաբառը հաստատուն պատասխանների ֆայլը վերածում են կրկնափորձի օղակի, և հենց այդ օղակն է կողպում հաշիվը։

Ձախողվեք մեկ անգամ, տպեք հաճախորդի սեփական սխալի տեքստը և դուրս եկեք։ Պլանավորված առաջադրանքին անհրաժեշտ է նույն ինքնության և հավատարմագրերի հասանելիության վերանայումը, ինչ ցանկացած այլ չհսկվող առաջադրանքի, քանի որ լուռ ժամկետանց հավատարմագրերը չեն տարբերվում գիշերվա երեքին տեղի ունեցած ընդհատումից։

Հաստատեք նստաշրջանը նախքան ելքի կոդին վստահելը

Միացված վիճակը ապացուցում է, որ թունելը գոյություն ունի, և ոչ ավելին։ Փորձարկեք մեկ ռեսուրս, որը պետք է հասանելի լինի դրա միջով, նախքան սկրիպտը կսկսի իրական աշխատանքը, և այնտեղի ձախողումը համարեք տարբեր խափանում, քան անհաջող մուտքը։ Հակառակ դեպքում դուք կրկնափորձեք լիովին լավ կապ, որը պարզապես չի կարող հասնել իր նպատակակետին։

Հարցրեք հաճախորդին իր վիճակի մասին անջատումից առաջ և հետո, որովհետև հնացած նստաշրջանը կարող է մերժել հաջորդ կապը, մինչ ձեր սկրիպտը հաջողություն է հաղորդում։

/opt/cisco/anyconnect/bin/vpn state
/opt/cisco/anyconnect/bin/vpn disconnect

Գրանցեք վիճակի ելքը ելքի կոդի կողքին, քանի որ միայն կոդը չի կարող առանձնացնել մերժված մուտքը երբեք չփակված նստաշրջանից։ Երբ դարպասը պահանջում է երկրորդ գործոն կամ ինտերակտիվ հաստատում, դադարեք սկրիպտավորել այդ քայլը և փոխարենը օգտագործեք այն մեխանիզմը, որն աջակցում է հաճախորդը։ Հաստատուն պատասխանների ֆայլը հարմարավետություն է ձեր վերահսկած հավատարմագրերի համար, ոչ թե ձեր չվերահսկած նույնականացման քայլը շրջանցելու միջոց։ Պահեք շրջանակը այդքան նեղ, և սա կմնա կարճ սկրիպտ։

Երբ հաստատուն պատասխանների ֆայլը սխալ գործիք է

Երկրորդ գործոնը կամ հաստատման հուշումը լիովին հաղթահարում են այս ձևանմուշը, և դա նախագծային սահման է, ոչ թե սկրիպտային հանելուկ։ Օգտագործեք այն մեխանիզմը, որն աջակցում է հաճախորդը այդ քայլի համար փոխարենը նախապես գուշակելու պատասխանը։ Հաստատուն ֆայլը աշխատում է միայն այն հավատարմագրերի համար, որոնք նույնն են մնում գործարկումների միջև։

Հավատարմագրերի երկու ավելի հին ոճեր նույնպես շփոթում են AnyConnect-ի հետ։ vpnc պրոֆիլը խոսում է այլ արձանագրությամբ, և այն ուզում է խմբի անունը որպես IPSec նույնացուցիչ, ապա ընդհանուր խմբային գաղտնիք, ապա ձեր սեփական հաշվի տվյալները։

Քանի որ արձանագրությունները տարբեր են, vpnc-ն չի կարող հասնել դարպասին, որը հրապարակում է միայն AnyConnect պրոֆիլներ, և այդ ծառայության սովորական բաց այլընտրանքը openconnect-ն է՝ ընտրված anyconnect արձանագրությամբ։ pcf ֆայլը պատկանում է հին Cisco հաճախորդին, և թեև դրա հոսթը, խմբի անունը և խմբի գաղտնաբառը կարելի է նորից մուտքագրել դեռ Cisco IPsec խոսող հաճախորդում, ֆայլը չի տեղափոխվում հաճախորդների միջև։ Անսովոր պորտը կամ ոչ ստանդարտ թունելավորման ռեժիմը սովորաբար կորչում է այդ տեղափոխման ժամանակ։ Որոշեք, թե որ արձանագրությունն է առաջարկում դարպասը, նախքան գործիք ընտրելը։

Առնչվող հոդվածներ