ISP에서 제공하는이 스크립트 줄이 있습니다.
sudo bash
echo "plugin L2TP.ppp">>/etc/ppp/options
echo "l2tpnoipsec">>/etc/ppp/options
터미널에 한 줄씩 붙여 넣으면 작동합니다. * .command 파일을 만들고 두 번 클릭하여 실행하고 싶습니다. 그러나 내가 얻는 것은 암호 프롬프트와 빈 bash 창입니다. 결과 “옵션”파일이 비어 있습니다.
나는 이것을 시도했다 :
#!/bin/bash
echo "plugin L2TP.ppp">>/etc/ppp/options
echo "l2tpnoipsec">>/etc/ppp/options
나는 얻다:
/ etc / ppp / options : 권한이 거부되었습니다
bash 내부에서 루트 권한을 얻으려면 명령을 사용해야한다고 생각합니다.
답변
작성한 스크립트를 작성하십시오.
#!/bin/bash
echo "plugin L2TP.ppp">>/etc/ppp/options
echo "l2tpnoipsec">>/etc/ppp/options
홈 디렉토리 또는 홈 디렉토리 내의 ‘scripts’디렉토리에 l2tp.sh로 저장하십시오. 실행되도록 허용하십시오 (터미널에이 명령을 작성하십시오).
chmod 700 ~/path/to/l2tp.sh
sudo (루트 권한)를 사용하여 파일을 실행하려면
방법 # 1. 터미널 유형에서 :
$ sudo ~/path/to/l2tp.sh
방법 # 2. 이 내용으로 run_l2tp.command 파일을 작성하십시오.
sudo ~/path/to/l2tp.sh
실행되도록 허용하십시오.
chmod u+x run_l2tp.command
run_l2tp.command를 두 번 클릭하고 비밀번호를 입력하면 l2tp.sh 파일이 루트 권한으로 실행됩니다.
방법 # 3 보안상의 이유로 시스템 사용자가 스크립트를 실행할 수 없도록하려면 대신 관리자 암호를 묻는 메시지를 표시하려는 경우 대체 해결 방법은 셸 스크립트를 저장 한 다음 AppleScript 프로그램 을 사용하여 AppleScript를 생성하십시오.
AppleScript는 한 줄짜리라고 말합니다 do shell script «your script's name here» with administrator privileges
. 해당 스크립트를 응용 프로그램으로 저장하십시오. 그런 다음 클릭하면 관리자 암호를 묻고 관리자 권한으로 셸 스크립트를 실행합니다.
분명히 «your script's name here»
스크립트 경로로 바꿉니다.
몇 가지 참고 사항 :
- UNIX와 같은 시스템에서 ~는 “my home directory”의 줄임말입니다.
- Chmod 700은 사용자 만 파일을 실행 가능하게합니다. 자세한 내용 은이 Wikipedia 페이지를 참조하십시오 .
- 명령 전에 ‘sudo’를 입력하면 루트 권한을 사용하여 프로그램이 실행됩니다. 이 작업을 수행 할 때주의하십시오. 수행중인 작업을 잘 모를 경우 나쁜 일이 발생할 수 있습니다.
- 이 스크립트를 홈 디렉토리에 직접 저장 한 경우 / path / to를 생략 할 수 있습니다.
답변
이것을 저장하십시오 :
#!/bin/bash
echo "plugin L2TP.ppp">>/etc/ppp/options
echo "l2tpnoipsec">>/etc/ppp/options
라는 파일로 데스크탑에 script.sh
.
터미널 창을 열고 다음을 입력하십시오.
sudo bash ~/Desktop/script.sh
프롬프트가 표시되면 비밀번호를 입력하면 파일의 모든 명령이 수퍼 유저 권한으로 실행됩니다.
답변
보안상의 이유로 시스템 사용자가 스크립트를 실행할 수 없도록하려면 대신 관리자 암호를 묻는 메시지가 표시되도록하려면 셸 스크립트를 저장 한 다음 프로그램을 사용하는 것이 좋습니다. AppleScript 를 작성하는 AppleScript 편집기
AppleScript는 한 줄짜리라고 말합니다 do shell script «your script's name here» with administrator privileges
. 해당 스크립트를 응용 프로그램으로 저장하십시오. 그런 다음 클릭하면 관리자 암호를 묻고 관리자 권한으로 셸 스크립트를 실행합니다.
분명히 «your script's name here»
스크립트 경로로 바꿉니다.
답변
문제는 당신이 명령 줄에서 작업을 수행 할 때, 당신이하고있는 것은 시작 것을의 bash
아래에 sudo
, 다음에 그 다음 두 명령을 전송 bash
하지 원래 쉘. (표시는 exit
두 번 필요하다는 것 )
스크립트에서 수행하면 bash
명령이 종료되지 않으므로 다음 두 명령은 실행되지 않습니다.
AppleScript 솔루션만큼 우아하지는 않지만 명령 줄에서 스크립트 로이 작업을 수행하려는 경우 다음과 같습니다.
#!/bin/sh --
sudo bash -c 'echo "plugin L2TP.ppp">>/etc/ppp/options'
sudo bash -c 'echo "l2tpnoipsec">>/etc/ppp/options'
io 리디렉션 ( >>
비트)이 sudo
필요하지 않은 경우 sudo sh -c
트릭 을 사용 하지 않고 직접 명령을 호출 할 수 있습니다 . (그리고 sh -c
에코를 루트로 실행하지 않고 파일을 원래 사용자로 추가하지 못하게 하려면 인수를 인용 해야합니다.)
그것은 것이다 A와 작동 .command
파인더에서 파일, 그러나 당신의 암호를 묻는 터미널 창을 가져올 것이고, 올바르게 입력 한 경우, 명령을 실행합니다. (최근에 인증을받지 않았다고 가정하면 확인 메시지가 표시되지 sudo
않고 계속 실행 됨)