
我製作了一個 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"