Какова цель отложенной приостановки (Ctrl-Y) в Bash?

Временное включение исходного файла sudoers и очистка старого файла, похоже, поможет.

includeCurrent=$'#include /etc/sudoers\n'
echo "$includeCurrent$updaterSudoers" | visudo -c -q -f -

В итоге у меня был sudoers.sh целиком.

#!/bin/bash

#Clear the current file if it exsists 
#Warning: this might break stuff if you edit current user visudo rights
if [[ -f "/etc/sudoers.d/aptget" ]]
then
  echo -n > "/etc/sudoers.d/aptget"
fi

#New settings to be added
updaterSudoers="$(cat <<EOF
Cmnd_Alias APTGETUPDATE = /usr/bin/apt-get update *
Cmnd_Alias APTGETINSTALL = /usr/bin/apt-get -y --force-yes install *

%aptgroup ALL = (root) NOPASSWD: APTGETUPDATE, APTGETINSTALL
Defaults!APTGETUPDATE !requiretty
Defaults!APTGETINSTALL !requiretty
EOF
)"

#Include current sudoers file
includeCurrent=$'#include /etc/sudoers\n'

#Validate new settings with current settings
echo "$includeCurrent$updaterSudoers" | visudo -c -q -f -
if [ "$?" -eq 0 ]
then
  #Write /etc/sudoers.d/aptget with updateSudoers value
  echo "$updaterSudoers" | (EDITOR="tee" visudo -f /etc/sudoers.d/aptget) &> /dev/null
else
  #Yell and exit in case of error
  echo "ERROR CHECKING SUDOERS FILE:"
  echo "$includeCurrent$updaterSudoers" | visudo -c -f -
  exit 1
fi

#If sudoers.d or sudoers.d/aptget is not included include only sudoers.d/aptget
grep -xq "#includedir /etc/sudoers\.d/\?" /etc/sudoers || grep -xq "#include /etc/sudoers\.d/aptget" /etc/sudoers
if [ "$?" -eq 1 ]
then
  echo "#include /etc/sudoers.d/aptget" | (EDITOR="tee -a" visudo -f /etc/sudoers) &> /dev/null
fi
31
16.01.2020, 16:09
1 ответ

Допустим, есть цикл, читающий входные данные и выполняющий их. Может быть полезно дать задаче закончить текущую инструкцию, которую она вычисляет, не прерывая ее до того, как она вернется в командную строку за новой инструкцией. Таким образом, можно завершить цикл. Это завершает цикл изящно и предотвращает его повторный запуск, если read находится под ограничением таймаута.

12
27.01.2020, 19:38

Теги

Похожие вопросы