Tiga soalan menentukan ini, dan hanya tiga. Adakah klien mencipta entri sambungan dalam sistem pengendalian yang kekal selepas but semula? Adakah ia menyediakan baris arahan yang boleh mengambil rahsia daripada sesuatu selain senarai argumennya? Adakah keperluan identitinya memaksa manusia menjawab gesaan pelayar? Jawab mengikut urutan itu dan pilihan berhenti menjadi soal citarasa, kerana kerja berjadual hanya boleh se-headless jawapan paling lemah antara ketiga-tiganya.

Padankan klien dengan tiga lapisan yang boleh diskrip

Profil asli OS, CLI vendor, klien hanya-GUI dan klien SSO pelayar memerlukan empat pendekatan berbeza. Dua yang pertama bertahan melalui but semula tanpa pengawasan, dan but semula tanpa pengawasan itulah intinya. Dua yang lain memerlukan keputusan reka bentuk sebelum memerlukan skrip.

What the client exposesWhat to scriptWhat still bites
OS-native connection entryrasdial, scutil --nc, nmcliTunnel is up before DNS and routes settle
Vendor CLI reading stdinCLI wrapped by the scheduler, secret from the credential storePrompt text changes between releases
GUI onlyPinned version plus a state assertionLocale and DPI break the click targets

Laluan satu: sistem pengendalian sudah memiliki profil

Ini laluan paling murah dan yang paling ramai terlepas pandang. Pada Windows, rasdial "Office" menyambung dan rasdial "Office" /disconnect menutupnya; rasphone -d "Office" memandu entri yang sama melalui antara muka dail. macOS menyenaraikan perkhidmatan tersimpan dengan scutil --nc list dan memulakan satu dengan scutil --nc start. Linux menyerahkan tugas itu kepada NetworkManager.

rasdial "Office" user *
scutil --nc start "Office"
nmcli connection up id Office
nmcli -t -f GENERAL.STATE connection show Office

Antara muka ini hanya mengenali profil milik OS, jadi ia tidak boleh memandu klien pihak ketiga sewenang-wenangnya. Apabila profil tiada, ciptanya sekali dan biarkan skrip memeriksanya daripada menciptanya semula pada setiap jalan. Jadikan skrip idempoten: baca keadaan semasa, sambung hanya apabila terputus, kemudian uji nama peribadi yang benar-benar diperlukan oleh kerja itu.

Laluan dua: vendor menyediakan baris arahan

Sesetengah klien mendedahkan cukup baris arahan untuk dibalut: Cisco AnyConnect mempunyai pembantu khusus sambungan selama bertahun-tahun, dan OpenConnect bertutur protokol AnyConnect, GlobalProtect dan Pulse daripada satu binari. Keperluan yang penting bukan senarai flag tetapi dari mana rahsia itu datang, kerana kata laluan dalam senarai argumen boleh dibaca oleh sesiapa yang boleh menyenaraikan proses.

printf '%s\n' "$VPN_PASS" | openconnect --protocol=anyconnect \
  --user "$VPN_USER" --passwd-on-stdin vpn.example.com

FortiClient dan sesetengah binaan GlobalProtect langsung tiada CLI yang disokong, dan klien komuniti atau pengganti berlesen vendor ialah keputusan perolehan, bukan jalan pintas. Dalam CI, berikan akaun perkhidmatan hak pada binari itu dengan tepat dan bukan pada shell, supaya argumen yang disuntik tidak boleh menjadi arahan root.

Laluan tiga: automasi GUI, dan mengapa ia terakhir

Apabila klien rasmi tiada antara muka, skrip mengklik butang melalui mesej tetingkap atau SendKeys. Itu rapuh terhadap versi dan bahasa, boleh meninggalkan sesi separuh bersambung, dan gagal secara senyap apabila dialog muncul dalam bahasa yang salah. Jika anda memilih laluan ini, pin versi klien, sahkan keadaan sambungan yang terhasil selepas itu, dan simpan pelan manual yang didokumenkan di sebelah skrip.

Amaran yang sama terpakai untuk memutuskan klien secara paksa dengan membunuh prosesnya. Terowong boleh hidup lebih lama daripada proses, atau penyelia boleh memulakannya semula, jadi bunuh-dan-mula-semula juga bukan set semula yang boleh dipercayai.

Apa yang rosak selepas terowong didirikan

Dail yang berjaya hanya membuktikan pengesahan dan tidak lebih. Uji sumber yang menjadi sebab kerja itu wujud, dengan protokolnya sendiri dan had masa yang singkat, dan namakan peringkat dalam mesej kegagalan. Profil, sijil dan kelayakan tersimpan yang kelihatan pada desktop anda mungkin tidak kelihatan kepada sesi perkhidmatan, jadi jalankan kerja itu sekali di bawah akaun penjadual itu sendiri sebelum mempercayainya.

Hadkan cubaan semula. Gelung yang mengulang kelayakan ditolak mengunci akaun, dan gesaan MFA tidak boleh dijawab oleh kerja headless tanpa reka bentuk pendaftaran; cubaan semula berskrip terhadap aliran SSO pelayar hanya membakar cubaan. Utamakan muatan VPN yang dihantar melalui MDM atau profil konfigurasi untuk armada, di mana platform memiliki kitaran hayat kelayakan, dan simpan skrip untuk klien yang tidak boleh diuruskan begitu.

Catat kod keluar dan sumber pertama yang gagal, bukan fakta bahawa skrip telah berjalan. Baris tunggal itulah yang menjadikan amaran penjadual sebagai diagnosis lima minit.

Artikel berkaitan