
특정 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
이 작업은 다음 두 가지 방법 중 하나로 수행할 수 있습니다.
터미널에서 다음을 실행하여
security add-generic-password -a "account name" -s "service name" -T "/usr/bin/security" -U
Davidacland가 그의 저서에서 설명한 대로JAMFNation 응답.메모: 기존 키체인 아이템으로는 이것을 재현할 수 없었습니다(davidacland의 답변에서 알 수 있듯이 가능함).
-또는-
- 사용하여키체인 Access.app
security
키체인 항목의 액세스 제어 목록에 수동으로 추가하기 위한 GUI : 키체인 액세스 GUI -> 키체인 항목을 두 번 클릭 -> 액세스 제어
답변2
첫 번째로 사용 가능한 기본 네트워크(네트워크 기본 설정, 고급, "이 컴퓨터가 연결된 네트워크 기억"이 선택되어 있음)이고 "다음을 수행하려면 관리자 승인 필요: - Wi-Fi 켜기 또는 끄기"가 선택되어 있지 않은 경우 사용할 수 있습니다.
networksetup -setairportpower en0 off
비밀번호를 요구하지 않고 사용
networksetup -setairportpower en0 on
가능한 첫 번째 기본 네트워크에 연결됩니다(OS X 10.9.4에서 시도).
networksetup -help
마지막 출력 라인을 실행하면
비밀번호를 사용하는 모든 명령은 비밀번호를 stdin에서 읽어야 함을 나타냅니다.