
기존 패키지를 한 번에 업데이트하고 업그레이드하는 쉘 스크립트를 만들었습니다. 스크립트는 다음과 같습니다
#!/bin/bash
sudo apt-get update;
sleep 10;
sudo apt-get upgrade;
sleep 10;
sudo youtube-dl -U;
sleep 10;
sudo shutdown -h now;
exit 0
제가 직면하고 있는 문제는 인터넷 연결이 그리 빠르지 않기 때문에 세 번째 명령에 도달할 때 비밀번호 세션이 만료되고 비밀번호를 다시 입력해야 한다는 것입니다. 그리고 이를 위해 나는 항상 내 PC 앞에 있어야 하는데 이는 실제로 스크립트의 목적을 무너뜨리는 것입니다.
그래서 내 질문은:
어쨌든 변수에 비밀번호를 저장하고
sudo
변수에서 비밀번호가 입력될 때마다 컴퓨터 근처에 항상 있을 필요가 없도록 할 수 있는 방법이 있습니까? (또는 내가 원하는 것을 수행하는 유사한 것)
이 같은:
#!/bin/bash
printf "Please enter your password: ";
read -s password
sudo apt-get update;
$password
sleep 10;
sudo apt-get upgrade;
$password
sleep 10;
sudo youtube-dl -U;
$password
sleep 10;
sudo shutdown -h now;
$password
exit 0
답변1
스크립트의 명령에서 sudo를 제거하고 실제 스크립트를 루트로 실행합니다.
#!/bin/bash
apt-get update;
sleep 10;
apt-get upgrade;
sleep 10;
youtube-dl -U;
sleep 10;
shutdown -h now;
exit 0
그리고 그것을 실행sudo ./my-script.sh
답변2
이렇게 하면 비밀번호를 한 번만 입력할 수 있습니다. 명령 의 경우 apt-get
다음을 -y
제외한 모든 항목에 대해 "자동 예"라는 플래그가 설정되어 있습니다 dist-upgrade
.
sudo bash -c "apt-get -y update && apt-get dist-upgrade && youtube-dl -U && apt-get -y autoremove && apt-get -y autoclean && shutdown -h now"