E’tiqod shuki, to‘rt qatordan iborat here-hujjat to‘liq interaktiv bo‘lmagan kirishdir va u shlyuz ikki guruh taklif qilganda, banner chiqarganda yoki paroldan keyin token so‘raganda tugaydi. O‘shanda o‘sha skript parolni son kutayotgan menyuga yozadi. Linux’dagi buyruq qatori mijozi skriptlanadi, lekin unga qo‘llanma taxmin qilganini emas, u haqiqatan kutayotganini bersangizgina.

Qat’iy here-hujjat — afsona

Cisco’ning Linux mijozi /opt/cisco/anyconnect/bin/vpn manziliga kichik dastur o‘rnatadi va Secure Client 5 uni hanuz yetkazib beradi. vpnagentd xizmati ishlayotganda, -s bayrog‘i javoblarni mijoz so‘ragan tartibda standart kiritishdan o‘qiydi. Bu tartib serverlar orasida qat’iy emas.

Guruh menyusi bitta qator qo‘shadi. Kirish banneri yana bittasini qo‘shadi. Paroldan keyingi token so‘rovi to‘rt qatorli skriptni butunlay buzadi, chunki beshinchi qator hech qachon token bo‘lmasligi kerak edi. Nosozlik jim: mijoz noto‘g‘ri satr oladi, ulanish urinishi tugaydi va skript hech qanday foydali xabar bermaydi.

Mijozni o‘sha shlyuz va versiya qarshisida bir marta qo‘lda ishga tushiring va so‘rovlarni paydo bo‘lish tartibida yozib oling. O‘sha bayonnoma skriptingiz bajarishi kerak bo‘lgan spetsifikatsiyadir.

Mijoz nimani kutmoqda

Odatiy bitta guruh holatida tartib foydalanuvchi nomi, parol va ba’zan banner tasdig‘idir. here-hujjatning birinchi qatori faqat server haqiqatan menyu ko‘rsatganda menyu indeksiga aylanadi, shuning uchun bir skript bir joyda ishlaydi, keyingisida esa muvaffaqiyatsiz bo‘ladi.

/opt/cisco/anyconnect/bin/vpn -s connect vpn.example.net <<EOF
0
alice
$VPN_PASSWORD
y
EOF

Buni qat’iy protokol emas, to‘rtta mumkin bo‘lgan savolga to‘rtta javob deb o‘qing. Nol — menyu tanlovi, parol emas, oxirgi y esa ko‘p shlyuzlar hech qachon yubormaydigan bannerni qabul qiladi.

Tartibni oldindan aytib bo‘lmaydigan bo‘lsa, expect ishlating

So‘rovlar tartibi o‘zgarganda qatorlarni sanashni to‘xtating va o‘rniga so‘rovni kuting. Expect skripti connect buyrug‘ini ishga tushiradi, foydalanuvchi nomi so‘rovini kutadi, yuboradi, parol so‘rovini kutadi, yuboradi va so‘ng ulangan holatni kutadi. Har bir kutishning o‘z vaqt chegarasi bor.

Vaqt chegarasini nosozlik deb biling va chiqing. Kutilmagan so‘rovdan keyin ham kiritishni yuborishda davom etadigan skript parolni xohish bilan qobiq, menyu yoki o‘qiyotgan boshqa narsaga yozadi. Kirish skripti shunday voqeaga aylanadi.

Expect shuningdek sirni olib tashlagan holda yozib olish mumkin bo‘lgan bayonnoma beradi va shlyuz yangilanishdan keyin so‘rovlarini o‘zgartirganda bu chiqish kodidan qimmatliroq.

Sir qayerdadir yashashi kerak

Bu muammoning har bir versiyasida bitta zaiflik bor: parol mijoz o‘qiy oladigan shaklda mavjud bo‘lishi kerak. Uni argument sifatida uzatish jarayonlar jadvalida oshkor qiladi. Quvur orqali aks ettirish ko‘pincha uni qobiq tarixiga qo‘yadi. Ikkalasi ham umumiy sakrash xostidagi boshqa mahalliy foydalanuvchilar tomonidan o‘qiladi.

install -m 600 /dev/null ~/.vpn-secret
umask 077; VPN_PASSWORD=$(cat ~/.vpn-secret) /opt/cisco/anyconnect/bin/vpn -s connect vpn.example.net

Hisobga tegishli 600 rejimli fayl minimal hisoblanadi va u hali ham diskda oddiy matnli sirdir. secret-tool lookup Linux kalit halqasidan o‘qiydi, macOS’da esa xuddi shu ishni security find-generic-password -w bajaradi. Tashkilot sertifikat yoki SAML autentifikatsiyasini qo‘llab-quvvatlaydigan joyda unga ustunlik bering, chunki saqlangan parol va MFA ham odamsiz kirishni yakunlay olmaydi.

Tunnelni tasdiqlang, so‘ng uzilishni o‘zingizga oling

Xato matni yo‘qligiga ishonmang. Mijozdan holatini so‘rang va interfeysni mustaqil tekshiring:

/opt/cisco/anyconnect/bin/vpn state
ip -brief address

Holat Connected deb o‘qilishi kerak va tunnel interfeysida manzil bo‘lishi kerak. So‘ngra tunnel yetib borishi kerak bo‘lgan bitta resursni so‘rang, chunki marshrutsiz ulangan holat haqiqiy natijadir va uni o‘tkazib yuborish oson.

vpn disconnect bilan uzing va tunnelni boshlagan skript uzilishni o‘z zimmasiga olsin. Sessiyani ochiq qoldirgan muvaffaqiyatsiz ish litsenziya joyini sarflaydi va keyingi urinayotgan odamga autentifikatsiya muammosi bo‘lib ko‘rinadi.

Ish tartibi: vpnagentd ni tasdiqlang, haqiqiy so‘rov tartibini yozib oling, here-hujjat yoki expect ni tanlang, sirni argv va tarixdan tashqarida saqlang, holat va bitta resursni tekshiring, so‘ng o‘sha skriptda uzing.

O'xshash maqolalar