Script shell OS X untuk terhubung ke wifi AP yang dikenal tanpa secara eksplisit menggunakan kata sandi

0

Saya mencoba menulis skrip shell yang dimulai dengan menyambungkan ke SSID tertentu (yang saya sambungkan sebelumnya, jaringan pilihan). Satu-satunya cara saya bisa melakukan ini melalui command-line adalah:

networksetup -setairportnetwork en0 "MyAP" "PASSWORD"

Bagaimana saya bisa terhubung ke jaringan "MyAP" tanpa menyimpan kata sandi secara tidak aman di skrip shell?

Pantone
sumber

Jawaban:

1

Jika ini merupakan jaringan pilihan pertama yang tersedia (Preferensi Jaringan, Tingkat Lanjut, "Ingat jaringan yang telah bergabung dengan komputer ini" dicentang) dan Anda tidak memiliki "Memerlukan otorisasi administrator untuk: - Mengaktifkan atau menonaktifkan Wi-Fi" yang dapat Anda gunakan

networksetup -setairportpower en0 offdiikuti oleh
networksetup -setairportpower en0 ondan itu akan terhubung ke jaringan pilihan pertama yang tersedia tanpa memerlukan kata sandi (dicoba pada OS X 10.9.4).

Jika Anda menjalankan networksetup -helpbaris output terakhir adalah

Perintah apa pun yang menggunakan kata sandi, akan menerima - untuk menunjukkan kata sandi harus dibaca dari stdin.

pengguna187561
sumber
1

Ada tutorial hebat dari Allan Odgaard di blog texmate yang menjelaskan cara menggunakan utilitas gantungan kunci dari baris perintah untuk mengambil kata sandi (di antara hal-hal lain). Saya sarankan membacanya, serta komentar yang sesuai. Anda dapat membuat fungsi yang akan digunakan secara umum, seperti

#!/bin/bash

get_pw () { 
    security 2>&1 >/dev/null find-generic-password -ga "$1" \
    | ruby -e 'print $1 if STDIN.gets =~ /^password: "(.*)"$/'
}

pass=$(get_pw $1)
echo $pass

Agar ini dapat diselesaikan secara programatik, tanpa konfirmasi pengguna, Anda harus memberikan securitybiner (dalam instalasi saya dari 10.11.2 terletak di /usr/bin/security) akses ke kata sandi tertentu. Ini dapat dilakukan dengan salah satu dari dua cara berikut:

  1. dengan menjalankan yang berikut dari terminal

    security add-generic-password -a "account name" -s "service name" -T "/usr/bin/security" -U
    

    seperti yang dijelaskan oleh davidacland dalam respons JAMFNation- nya . Catatan : Saya belum dapat mereproduksi ini dengan item gantungan kunci yang ada (seperti yang disarankan oleh davidacland adalah mungkin).

- atau -

  1. menggunakan Keychain Access.app GUI untuk secara manual menambahkan securityke daftar Kontrol Akses item Keychain: Keychain Access GUI -> klik dua kali pada Item Keychain -> Kontrol Akses

masukkan deskripsi gambar di sini

namaku lupa
sumber