2009-09-03 5 views
3

스택 오버플로 및 인터넷에 관한 많은 스크립트 질문이있는 솔루션을 찾으려고 최선을 다했지만 필요한 솔루션을 찾을 수없는 것 같습니다.OS X에서 관리자 권한으로 스크립트 실행하기

내가하고 싶은 일은 시스템에서 모든 모바일 캐시 된 사용자 계정을 제거하는 자동화 된 적은 클릭 솔루션을 만드는 것입니다. 로그인하고 수동으로 사용자 계정으로 이동하여 "-"버튼을 클릭 한 다음 사용자 데이터에 대해 "즉시 삭제"를 클릭하여 한 번에 하나씩 사용자를 제거합니다. 이 방법은 효과가 있지만 시간이 많이 걸리고 시간이 더 걸립니다. 그래서 저는 스크립트로 이것을 할 수있는 방법이 있어야한다는 것을 알고있었습니다.

는이 코드를 통해 실행 :이 터미널에서 실행하는 경우

for cuser in `dscl . -list /Users AuthenticationAuthority | grep LocalCachedUser | awk '{print $1}' | tr '/n' ' '`; do 
    dscl . -delete /Users/$cuser 
done 

내가 권한 오류를 얻을. 그래서 sudo로 실행해야한다고 생각했습니다. 그래서 스크립트를 실행하기 위해 AppleScript를 만드는 방법을 살펴 보았지만 올바른 방법을 찾지 못했습니다.

아이디어가 있으십니까? 그건 그렇고, 맥에서 스크립팅하는 것이 처음이에요. 코드를 주석으로 작성하여 무슨 일이 일어 났는지 알기 바랍니다. 그래서 스크립트 코드가 무엇을 할 지 몰라서 실행하지 않습니다. :)

감사

답변

5

sudo 또는 관리자 권한으로 쉘 스크립트를 수행하려면 추가를 do shell script 행 끝까지 with administrator privileges 예를 들어 :

do shell script "/path/to/script/file.sh" user name "adminusershortname" password "password" with administrator privileges 

당신은 말했다 do shell script

처리 쉘 스크립트로이 절약 그냥 잘 작동 sudo를를 사용하는 쉘 스크립트를 실행하는 애플의 기술 문서에 대한보다 자세한 내용을보실 수 있습니다. removeUser.sh 말대로, 다음 실행 파일 (chmod 755)로 설정하고 chmod를 사용하여 저장을

#! /bin/sh 

for cuser in `/usr/bin/dscl . -list /Users AuthenticationAuthority | grep LocalCachedUser | awk '{print $1}' | tr '/n' ' '`; do 
    /usr/bin/dscl . -delete /Users/$cuser 
done 

+0

사과 스크립트에서 실행 해 보았습니다 만, 지금은 "delete : Invalid Path"라는 전체 묶음을 얻습니다. 삭제하려고하는 각 사용자마다 있다고 가정합니다. AppleScript 파일이 바탕 화면에 있습니다. 다른 곳이 필요합니까? delete 명령에 더 유효한 경로를 제공해야합니까? – ScottN

+0

터미널에서 list 명령을 실행하는 명령에서 "tr"/ n '' ' "명령을 제거한 사용자가 매우 이상하게 인쇄되었습니다. 하지만 지금은 또 다른 문제가 있습니다. AppleScript를 처음 실행했을 때 오류가 발생하지 않았을 때, 나는 그것이 효과가 있다고 가정했습니다. 시스템 환경 설정에서 계정 목록을 확인하면 여전히 사용자가 나열되므로 삭제로 인해 시스템에서 사용자 계정이 완전히 제거되지는 않습니다. 그러나 list 명령을 다시 실행하면 터미널 창에 사용자가 인쇄되지 않으므로 이제 스크립트를 실행할 필요가 없습니다. 지금 내가 뭘 잘못하고 있니? "dscl. -delete"명령이 GUI와 동일한 기능을 수행합니까? – ScottN

+0

좋아, 그들은 시스템을 재부팅 할 때까지 시스템 환경 설정에 여전히 나타나고 있었다. 그런 다음 더 이상 존재하지 않았다. 수동으로 사용자 폴더를 제거해야했습니다. 하지만 몇 번의 클릭만으로 충분합니다. 나는 이것에 만족할지도 모른다. 동시에 사용자 폴더를 제거하는 것이 좋습니다. – ScottN

0

나는이 작업을 할 경우 편리 맥이 내가 확인할 수 없습니다. 그런 다음 스크립트를 실행

-

는 SU를 실행 해보십시오. 작동하는 경우 crontab -e

을 입력하고 해당 스크립트를 실행하는 항목을 추가하십시오.

crontab에 익숙합니까? 만약 google이 아니라면 그것은 필요하다면. 그러나 기본적으로 당신이 0 * * * */경로 /에/스크립트

볼 같은 거라고 매일 자정에 실행 : http://en.wikipedia.org/wiki/Cron

+0

답을 잘 구성 해 주시겠습니까? 나는 "su -"가 무엇인지 확신 할 수 없다. 그게 단지 짧은 sudo입니까? – ScottN

+0

su는 "대체 사용자"의 줄임말입니다. 터미널에서 루트로 로그인 할 수 있습니다. –

2

당신은 당신의 시스템의 sudoers 파일을 편집하여이 작업을 수행 할 수 있습니다 그것을 (sudo ./removeUser.sh)를 실행합니다. 이렇게하면 cron 등을 통해이 스크립트를 실행하는 데 사용하는 계정이 암호없이 sudo를 실행할 수 있습니다.

sudoers 파일을 편집하려면 visudo를 사용하지만 관리자 권한으로 실행해야합니다.시도 :

$ sudo visudo 

이 스크립트를 실행하는 사용자와 _ 이름를 대체 파일의 끝에 다음과 같은 라인을 추가합니다. 각 필드 사이에 탭을 사용하십시오.

user_name ALL=(ALL)  NOPASSWD:ALL 

이제 user_name은 sudo를 입력 할 수 있어야하며 비밀번호를 묻는 메시지가 표시되지 않습니다.

또한 visudo는 vi 편집기를 반영하고 vi와 동일한 명령을 사용하는 텍스트 편집기입니다.

관련 문제