shell 腳本只需輸入一次密碼

shell 腳本只需輸入一次密碼

我製作了一個 shell 腳本來一次更新和升級我現有的軟體包。腳本是:

#!/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

我面臨的問題是,由於我的網路連線速度不是很快,當我到達第三個命令時,密碼會話過期,我必須重新輸入密碼。為此,我必須一直坐在電腦前,這實際上違背了腳本的目的。

所以,我的問題是:

無論如何,我可以將密碼儲存在變數中,並且每次都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,並以 root 身分執行實際腳本,例如:

#!/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"

相關內容