명시적으로 비밀번호를 사용하지 않고 알려진 Wi-Fi AP에 연결하는 OS X 쉘 스크립트

명시적으로 비밀번호를 사용하지 않고 알려진 Wi-Fi AP에 연결하는 OS X 쉘 스크립트

특정 SSID(이전에 연결한 적이 있는 기본 네트워크)에 연결하여 시작하는 쉘 스크립트를 작성하려고 합니다. 명령줄을 통해 이 작업을 수행할 수 있는 유일한 방법은 다음과 같습니다.

networksetup -setairportnetwork en0 "MyAP" "PASSWORD"

쉘 스크립트에 비밀번호를 안전하지 않게 저장하지 않고 어떻게 "MyAP" 네트워크에 연결할 수 있습니까?

답변1

있다Allan Odgaard의 훌륭한 튜토리얼암호를 검색하기 위해 명령줄에서 키체인 유틸리티를 사용하는 방법을 설명하는 texmate 블로그에 있습니다. 해당 내용과 해당 의견을 읽어 보시기 바랍니다. 다음과 같이 일반적으로 사용할 함수를 만들 수 있습니다.

#!/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

사용자 확인 없이 프로그래밍 방식으로 이 작업을 수행하려면 특정 비밀번호에 대한 액세스 권한을 security바이너리(10.11.2 설치 시 에 있음 )에 부여해야 합니다. /usr/bin/security이 작업은 다음 두 가지 방법 중 하나로 수행할 수 있습니다.

  1. 터미널에서 다음을 실행하여

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

    Davidacland가 그의 저서에서 설명한 대로JAMFNation 응답.메모: 기존 키체인 아이템으로는 이것을 재현할 수 없었습니다(davidacland의 답변에서 알 수 있듯이 가능함).

-또는-

  1. 사용하여키체인 Access.appsecurity키체인 항목의 액세스 제어 목록에 수동으로 추가하기 위한 GUI : 키체인 액세스 GUI -> 키체인 항목을 두 번 클릭 -> 액세스 제어

여기에 이미지 설명을 입력하세요

답변2

첫 번째로 사용 가능한 기본 네트워크(네트워크 기본 설정, 고급, "이 컴퓨터가 연결된 네트워크 기억"이 선택되어 있음)이고 "다음을 수행하려면 관리자 승인 필요: - Wi-Fi 켜기 또는 끄기"가 선택되어 있지 않은 경우 사용할 수 있습니다.

networksetup -setairportpower en0 off비밀번호를 요구하지 않고 사용
networksetup -setairportpower en0 on가능한 첫 번째 기본 네트워크에 연결됩니다(OS X 10.9.4에서 시도).

networksetup -help마지막 출력 라인을 실행하면

비밀번호를 사용하는 모든 명령은 비밀번호를 stdin에서 읽어야 함을 나타냅니다.

관련 정보