Vendor VPN mijozini ishga tushiruvchi skript vaqt tugaguncha osilib qoladi, jurnal esa mijoz hech kim kiritmagan tasdiqlash kodini so'rayotganini ko'rsatadi. Parol berilgan edi, shuning uchun ko'rinib turgan xulosa — parol noto'g'ri. Unday emas. Kod so'rovi boshqa kanaldagi alohida suhbat, va skriptingiz uni hech qachon ochmagan.

Quyidagi besh tekshiruvni tartib bilan bajaring. Birinchi muvaffaqiyatsiz tekshiruvda to'xtang, chunki har bir keyingi qadam oldingilari to'g'ri deb hisoblaydi.

Tekshiruv 1: mijoz standart kiritishni umuman o'qiydimi?

Har qanday avtomatlashtirish yozishdan oldin sinab ko'ring: quvur orqali mijozga soxta sir yuboring va nima bo'lishini kuzating. Agar u so'rovini chop etib, keyin kutib tursa, quvurni o'qimayapti.

Ko'p mijozlar terminal qurilmasini to'g'ridan-to'g'ri ochadi yoki terminal bo'lmagan oqimdan sir olishdan bosh tortadi, shunda adashgan quvur parolni oqizib yubormaydi. OpenVPN — hujjatlashtirilgan istisno, chunki --auth-user-pass fayl yo'lini oladi. Bir martalik kod so'raydigan vendor mijozlarida odatda teng keladigan bayroq yo'q, va ularning so'rovi skriptingiz hech qachon taqdim etmagan terminalni kutmoqda.

Tekshiruv 2: bola jarayonning terminali bormi?

pty bolaga terminal ajratadi, bu so'rovlarni tartib bilan javob bera oladigan o'qiladigan chiqishga aylantiradi.

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)

Yuqoridagi so'rov satrlari — misol; mijozingiz chop etadigan aniq matnni harf registri va tinish belgilari bilan nusxalang. Har bir kutishning vaqt chegarasi bor, va yopilgan bola holat qaytarish o'rniga istisno tashlaydi, shuning uchun ketma-ketlikni o'rab oling va fayl oxirini muvaffaqiyatsizlik deb biling. Bu blok nima qilmasligiga e'tibor bering: bola skript bilan birga o'ladi, chunki pty — ajratish mexanizmi emas, disown esa qobiqning ichki buyrug'i bo'lib, skriptingiz yaratgan jarayonga yetib bormaydi.

Tekshiruv 3: qo'llab-quvvatlanadigan interaktiv bo'lmagan kiritish bormi?

Ekranni qirish mijoz yangilanganda buziladi, shuning uchun avval hujjatlashtirilgan bayroqni qidiring.

Yordam chiqishidan token yoki bir martalik kod variantini tekshiring va xizmat parol maydoniga qo'shilgan kodni qabul qiladimi-yo'qmi, buni ham tekshiring. Mijoz hisob ma'lumotlari faylini o'qiydigan joyda unga so'rov o'rniga faylni bering:

openvpn --config office.ovpn --auth-user-pass <(printf "%s\n%s\n" "$USER_NAME" "$PASSWORD")

Jarayonni almashtirish /dev/fd taqdim etadigan tizimlarda mijozga o'qiladigan yo'l beradi. Sir mijoz nuqtai nazaridan baribir sir, shuning uchun uni jurnallar, qobiq tarixi va jarayonlar ro'yxatidan uzoq tuting. Agar mijoz /dev/fd ni rad etsa yoki hisob ma'lumotlari yo'lini bir necha marta ochsa, qat'iy ruxsatlar bilan haqiqiy fayl yozing va uni o'sha skriptda o'chiring.

Tekshiruv 4: tunnel skriptdan uzoqroq yashaydimi?

Odatiy holatda tunnel ota-onasi bilan birga o'ladi, bu esa yuklash skriptiga kerak bo'lgan narsaning aksi.

disown -h faqat mijozni qobiq ishi sifatida ishga tushirganingizda yordam beradi, chunki u o'sha qobiqning ishlar jadvalini tahrirlaydi va skriptingiz pty orqali yaratgan jarayonga yetib bormaydi. Qo'riqsiz qayta ulanadigan hamma narsa uchun xizmat menejeri yaxshiroq joy, chunki u mijozni qayta ishga tushiradi va nima uchun o'lganini yozib qo'yadi. Har holda, har bir qayta ulanishdan keyin yangi kod kuting: bir martalik token birinchi muvaffaqiyatli autentifikatsiyada sarflanadi.

sudo ketma-ketlik bilan nima qilishini kuzating. sudo parol so'rovi VPN so'rovi emas, va unga VPN paroli bilan javob berish — boshqa jihatdan to'g'ri kutish tartibining baribir buzilishining eng keng tarqalgan yo'li.

Tekshiruv 5: birovning kodi skriptda bo'lishi kerakmi?

Bu — odamlar o'tkazib yuboradigan tekshiruv. Token insonga tegishli, jadval bo'yicha ko'tarilishi kerak bo'lgan tunnel esa mashinaga tegishli.

Agar ish qo'riqsiz qayta ulanishi kerak bo'lsa, mashina sertifikati yoki xizmat hisobi interaktiv kirishni almashtira oladimi, deb so'rang. Birovning bir martalik kodini avtomatlashtirish ikkinchi omilni saqlangan sirga aylantiradi, bu skript qulayligi emas, siyosat o'zgarishi. Xizmat ikkalasini ham qo'llab-quvvatlaydigan joyda ishning haqiqiy borishiga mos keladigan hisob ma'lumotini tanlang. Javobni yozib qo'ying, chunki keyingi odam skript nega token saqlayotganini so'raydi.

Ishlaydigan skript qanday ko'rinadi

Skript yetgan qadamni chop etadi, sirni hech qachon emas, va har qanday muvaffaqiyatsiz kutishda noldan farqli kod bilan chiqadi.

Uni ataylab buzib sinab ko'ring: noto'g'ri parol, noto'g'ri guruh, muddati o'tgan token. Har bir muvaffaqiyatsizlik osilib qolish o'rniga nomlangan qadamda to'xtashi kerak. So'ng uni haqiqiy xizmatga qarshi bir marta ishga tushiring va tunnelni skript tashqarisidan tekshiring, ichidan emas.

O'xshash maqolalar