Jest o wiele prostszy sposób na zrobienie tego. Jeśli chodzi o przenośność, jest to moja implementacja, ale możesz ją dowolnie modyfikować w zależności od potrzeb.
Wprowadź swoje hasło sudo jako parametr podczas uruchamiania skryptu, przechwyć je i powtórz za pomocą każdej komendy, która poprosi o podanie hasła sudo.
#!/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>
Możesz dodać monit i przechwycić po uruchomieniu skryptu w następujący sposób:
echo "enter the sudo password, please"
read PW
Ale jeśli ktoś inny monitoruje to, co działa w węźle; ma dostęp do utworzonych przez niego dzienników; lub po prostu losowo przegląda twój test, kiedy może to zagrozić bezpieczeństwu.
Działa to również z uruchomionymi poleceniami / skryptami, które wymagają tak, aby kontynuować:
echo $PW | yes | ./install.sh
Echo jest odpowiedzią na monit, więc możesz użyć tam wszystkiego, czego potrzebujesz, jeśli uruchamiasz inne skrypty z monitami o postęp, w kolejności sekwencyjnej. Upewnij się jednak, że znasz tę kolejność, ponieważ mogą się zdarzyć złe rzeczy.