첫 번째 bash 스크립트 - 루트 비밀번호를 한 번만 입력하세요.

첫 번째 bash 스크립트 - 루트 비밀번호를 한 번만 입력하세요.

나는 작은 bash 스크립트를 작성했습니다. 루트 비밀번호가 필요합니다.

권한이 필요한 명령은 두 개뿐입니다. 따라서 현재는 슈퍼유저 비밀번호를 입력해야 합니다.두 배- 난 그런 걸 원하지 않아요.

스크립트를 데스크탑에 연결했습니다. 즉, 데스크탑에서 실행하고 있다는 뜻입니다.

노력했지만 작동하지 않습니다.

gksu -u root "iptables -D INPUT 7 && iptables -D INPUT 6"

답변1

개인적으로 저는 스크립트를 작성하여 ~/bin$PATH 또는 다른 디렉토리에 배치한 다음 실행합니다 sudo <script_name>. 이를 수행하는 방법에는 여러 가지가 있습니다. 이것이 제가 선호하는 방법입니다.

mkdir ~/bin
editor ~/bin/myscript

그런 다음 스크립트를 작성하십시오.

#!/bin/bash
iptables -D INPUT 7
iptables -D INPUT 6

저장하고 실행 가능하게 만듭니다.

chmod +x ~/bin/myscript

마지막으로 스크립트를 실행하는 바탕 화면 바로 가기를 만듭니다.

editor ~/Desktop/myscript

포함하다:

[Desktop Entry]
Version=1.0
Type=Applicaton
Name=Myscript
Comment=My script that does something cool
Icon=help-info
Terminal=false
Exec=bash -c "sudo ~/bin/myscript"

그러면 sudo 비밀번호를 한 번만 묻는 메시지가 표시됩니다.

답변2

sh두 명령을 하나로 실행할 수 있습니다 .

sudo sh -c 'iptables -D INPUT 7 && iptables -D INPUT 6'

물론, 일회성이 아닌 경우에는 대본을 만들어 두는 것이 더 편리할 것입니다.

답변3

sudo -v"새로 고침" 권한을 사용할 수 있습니다 . 스크립트가 실행되는 동안 백그라운드 루프에서 이를 사용할 수 있습니다. (오래전에 다른 곳에서 개조했는데 어디인지 기억이 나지 않습니다.)

sudo_done="/tmp/sudo.finished"
sudo_me() {
 while [ ! -f $sudo_done ]; do
  sudo -v
  sleep 5
 done &
}

stop_sudoing() {
  touch $sudo_done
  sleep 7
  rm $sudo_done
}

sudo_me &
# Your script here.
stop_sudoing &

또한 GUI 프로그램이 아니라면 gksu필요하지 않고 sudo괜찮습니다.

관련 정보