| #!/bin/bash |
| |
| # Given a script and it's content SHA-1, determine if it should run based upon |
| # whether its content has changed. |
| # |
| # Returns 0 if the script should run, other values indicate it should not run. |
| # |
| function should-run-script { |
| local script="$1"; shift |
| local script_sha1="$1"; shift |
| |
| if [[ -f /var/cache/runonce/$fname ]]; then |
| previous_sha1=$(cat /var/cache/runonce/$fname) |
| |
| if [[ $script_sha1 == $previous_sha1 ]]; then |
| return 1 |
| fi |
| fi |
| |
| return 0 |
| } |
| |
| function main { |
| local script="" |
| |
| for script in /etc/runonce.d/*; do |
| local script_sha1=$(sha1sum $script |awk '{ print $1 }') |
| |
| if ! should-run-script $script $script_sha1; then |
| continue; |
| fi |
| |
| $script |
| |
| if [[ $? == 0 ]]; then |
| local fname=$(basename $script) |
| echo $script_sha1 > /var/cache/runonce/$fname |
| fi |
| done |
| } |
| |
| main |