Anda menulis skrip yang menjalankan scutil --nc start dengan nama sambungan, ia berfungsi pada Mac anda dan gagal pada setiap mesin pejabat yang baru dipasang. Skrip itu tidak rosak. Skrip itu diminta melakukan sesuatu yang tidak pernah mampu dilakukannya: memulakan sambungan sedia ada bukan operasi yang sama dengan mencipta yang baharu.

Penyediaan dan kawalan sesi ialah dua kerja dengan dua pemilik, dan aliran kerja yang menganggap sebaliknya akan lulus setiap ujian pada mesin tempat ia ditulis.

Dengan apa perintah mula sebenarnya bercakap

Perintah kawalan sesi menujukan konfigurasi yang sudah wujud dan sudah diluluskan. Ia meminta sistem menaikkan sambungan bernama itu, menggunakan tetapan pelayan, rujukan identiti dan dasar yang disimpan sebelum ini. Jika semuanya tidak pernah dipasang, tiada apa untuk dimulakan.

Itulah sebabnya kegagalan muncul pada perkakasan baharu dan bukan pada komputer riba pentadbir. Komputer riba itu disediakan beberapa bulan lalu oleh seseorang yang sejak itu telah lupa. Anggap perintah mula sebagai loceng pintu yang didawai seseorang pada suku lalu. Menekannya bukan sama dengan memasang pendawaian.

Tiga pemilik konfigurasi VPN

Profil yang diurus organisasi datang daripada pengurusan peranti. Profil itu membawa alamat pelayan, susunan pengesahan dan dasar yang diperlukan organisasi, dan pentadbir VPN ialah orang yang membekalkannya. Skrip tidak sepatutnya membina semula tetapan itu daripada nama paparan yang ditemuinya dalam senarai.

Konfigurasi VPN peribadi asli dicipta melalui Network Extension API Apple, yang merangkumi protokol IPsec dan IKEv2 terbina dalam. Ia ialah antara muka aplikasi dengan langkah simpan dan kelulusan pengguna, bukan perintah shell yang diam-diam mencipta apa-apa jenis terowong yang dibekalkan vendor.

Klien pihak ketiga ialah kes ketiga dengan format importnya sendiri, alat pengurusannya sendiri dan selalunya pembantu istimewanya sendiri. Sesi itu dimiliki oleh proses vendor tersebut. Menemui perkhidmatan sistem dengan nama serupa bukan bukti bahawa perintah sistem mengawal terowong itu, dan menganggapnya begitu menghasilkan skrip yang kelihatan berfungsi sehingga vendor mengemas kini klien.

Penyediaan asli mempunyai simpanan dan kelulusan

Model Apple ialah muat, ubah, simpan. Aplikasi memuat keutamaan sedia ada sebelum simpanan pertamanya selepas dilancarkan, mengubah konfigurasi dan kemudian menyimpannya. Simpanan melaporkan ralat apabila ia tidak dapat berkekalan, dan mengabaikan hasil itu menjadikan kegagalan penyediaan sebagai kegagalan sambungan tiga langkah kemudian.

Simpanan pertama juga memerlukan pengguna meluluskan aplikasi itu. Itu sempadan keselamatan yang disengajakan, dan bermakna larian pertama pada Mac baharu adalah interaktif walaupun setiap sambungan dan pemutusan selepas itu boleh diautomasikan. Rancang larian pertama sebagai tugas manusia dengan manusia hadir. Automasikan larian kedua dan seterusnya, dan nyatakan itu dalam runbook supaya tiada siapa menjanjikan yang mustahil. Pelan penggunaan yang menjanjikan larian pertama sepenuhnya tanpa pengawasan menjanjikan sesuatu yang platform tidak tawarkan.

Apple juga mengesyorkan pengesahan keserasian pelayan dengan profil konfigurasi sebelum bergantung pada API. Melakukan pemeriksaan itu dahulu memisahkan «pelayan tidak akan menerima klien ini» daripada «klien tidak pernah menyimpan tetapan», yang merupakan tiket berbeza untuk pasukan berbeza.

Apa yang boleh dianggap oleh perintah mula yang boleh diulang

Selepas penyediaan, skrip boleh dengan selamat mensasarkan sambungan sedia ada melalui antara muka pemiliknya. Berikan kepadanya identiti stabil sambungan serta tindakan yang anda mahu, dan tiada yang lain. Ia tidak sepatutnya membaca laluan keutamaan yang diagak, dan tidak sepatutnya menganggap nama yang dipaparkan dalam menu adalah unik di seluruh sistem.

Untuk sambungan asli, permintaan sesi bernama seperti scutil --nc start ialah operasi kawalan. Ia tidak memasang tetapan pelayan, tidak mengimport kelayakan dan tidak melakukan kebenaran simpanan pertama. Perlakukan ia sebagai langkah terakhir rantaian, jangan sekali-kali sebagai seluruh rantaian.

Jauhkan rahsia daripada argumen baris perintah dan daripada output diagnostik biasa. Mekanisme identiti apa pun yang dipilih oleh penggunaan ialah yang harus diharapkan oleh perintah mula, dan kata laluan yang ditampal dalam sejarah shell ialah penemuan dalam mana-mana semakan.

Dua pemeriksaan penerimaan

Pemeriksaan pertama ialah penyediaan: ambil Mac yang baru dipasang dan buktikan konfigurasi hadir, dimiliki pengurus yang betul dan diluluskan sepenuhnya. Lakukan ini sebelum menguji sambungan, kerana ujian sambungan pada mesin yang tidak disediakan tidak membuktikan apa-apa tentang skrip.

Pemeriksaan kedua ialah sesi: sambung, capai sumber yang dibenarkan dan putuskan dengan bersih. Setiap kegagalan kini mempunyai pemilik, dan itulah faedah praktikal memisahkan kedua-dua kerja. Profil yang hilang ialah masalah penghantaran, ralat simpanan ialah masalah kelulusan, log masuk yang ditolak ialah masalah pengesahan, dan tamat masa selepas permulaan yang berjaya ialah lapisan sesi. Tiada satu pun daripada itu «skrip itu rosak».

Artikel berkaitan