Geben Sie das Passwort für das Shell-Skript nur einmal ein

Geben Sie das Passwort für das Shell-Skript nur einmal ein

Ich habe ein Shell-Skript erstellt, um alle meine vorhandenen Pakete in einem Rutsch zu aktualisieren und aufzurüsten. Das Skript lautet:

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

Das Problem, mit dem ich konfrontiert bin, ist, dass meine Internetverbindung nicht sehr schnell ist. Wenn ich den dritten Befehl erreiche, läuft die Passwortsitzung ab und ich muss mein Passwort erneut eingeben. Und dafür muss ich die ganze Zeit vor meinem PC sitzen, was den Zweck des Skripts eigentlich zunichte macht.

Meine Frage ist also:

Gibt es eine Möglichkeit, das Passwort in einer Variablen zu speichern und jedes Mal sudodas Passwort aus der Variablen einzugeben, sodass ich nicht die ganze Zeit in der Nähe meines Computers sein muss? (oder irgendetwas Ähnliches, das meinen Wünschen entspricht)

Etwas wie das:

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

Antwort1

Entfernen Sie das „sudo“ aus den Befehlen im Skript und führen Sie das eigentliche Skript z. B. als Root aus.

#!/bin/bash
apt-get update;
sleep 10;
apt-get upgrade;
sleep 10;
youtube-dl -U;
sleep 10;
shutdown -h now;
exit 0

Und führen Sie es mitsudo ./my-script.sh

Antwort2

Dadurch müssen Sie das Passwort nur einmal eingeben. Für die apt-getfolgenden Befehle ist -yfür alles außer das Flag „Automatisch Ja zu Eingabeaufforderungen“ gesetzt 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"

verwandte Informationen