Es gibt tatsächlich einen viel einfacheren Weg, dies zu tun. Aus Gründen der Portabilität ist dies meine Implementierung, Sie können sie jedoch jederzeit an Ihre Anforderungen anpassen.
Geben Sie Ihr sudo-Passwort als Parameter ein, wenn Sie das Skript starten, erfassen Sie es und wiederholen Sie es mit jedem Befehl, der Sie zur Eingabe des sudo-Passworts auffordert.
#!/bin/bash
PW=$1
echo $PW | ./playback_delete_data_patch.sh 09_delete_old_data_p.sql
./command_wo_sudo.sh <param>
echo $PW | ./other_command_requires_sudo.sh <param>
Sie können eine Eingabeaufforderung hinzufügen und wie folgt erfassen, nachdem das Skript gestartet wurde:
echo "enter the sudo password, please"
read PW
Aber wenn jemand anderes überwacht, was auf dem Knoten läuft; hat Zugriff auf die von ihm erstellten Protokolle; oder prüft nur nach dem Zufallsprinzip, wann Sie einen Test durchführen, der die Sicherheit gefährden könnte.
Dies funktioniert auch bei der Ausführung von Befehlen / Skripten, für deren Fortsetzung ein Ja erforderlich ist:
echo $PW | yes | ./install.sh
Das Echo reagiert auf eine Eingabeaufforderung, sodass Sie alles verwenden können, was Sie benötigen, wenn Sie andere Skripts ausführen, die nacheinander nach dem Fortschritt fragen. Stellen Sie sicher, dass Sie diese Reihenfolge kennen, da sonst schlimme Dinge passieren können.