О данном сценарии часто заходит речь, когда разработчики вопрошают: "Где же команда sed, выполняющая повторное удаление пустых строк?" Именно для этой цели и создан этот небольшой сценарий.
Действительно, сценарий представляет собой оболочку для потокового редактора sed. Поскольку этот процесс применяется довольно часто, разработчики заинтересованы в подобном сценарии.
Сценарии интерпретатора shell не должны быть большими. Создание сценариев целесообразно, если при автоматизации задач экономится время пользователя.
Сценарий del.lines может обрабатывать один или несколько файлов. До того, как команда sed приступит к удалению всех пустых строк, проверяется наличие каждого файла. Поток вывода команды sed с помощью символов $$ направляется во временный файл. Затем файл перемещается обратно, заменяя исходный файл.
Чтобы просмотреть все имена файлов, применяется команда shift. Цикл while выполняется до тех пор, пока имеются обрабатываемые файлы.
Введите команду del.lines -help, в результате чего отобразится немного разреженная справочная строка. Желательно создать более удобную справочную конструкцию. Сценарий имеет следующий вид:
$ pg del.lines
#!/bin/sh
#del.lines
#сценарий получает имена файлов и удаляет из них все пустые строки
TEMP_F=/tmp/del.lines.$$
usage ()
{
# usage
echo "Usage :`basename $0` file [file..]"
echo "try `basename $0` -help for more info"
exit 1
}
if [ $# -eq 0 ]; then
usage
fi
FlLES=$1
while [ $# -gt 0 ] do
echo "..$1"
case $1 in
-help) cat << MAYDAY
Use this script to delete all blank lines from a text file(s)
MAYDAY
exit 0;;
*)FILE_NAME=$1
if [ -f $1 ]; then
sed '/^$/d' $FILE_NAME > $TEMP_F
mv $TEMP_F $FILE_NAME
else
echo "`basename $0` cannot find this file : $1"
fi
shift;;
esac
done
27.4. Сценарий access.deny
Чтобы пользователи не регистрировались в системе при введении необходимых обновлений, можно воспользоваться методом /etc/nologin, который доступен для большинства систем. Когда в каталоге /etc создается файл nologin, обычно применяется команда touch. И никто из пользователей, кроме пользователя root, не может зарегистрироваться.
Если данная система не поддерживает метод nologin, не все потеряно — можно создать подобный метод самостоятельно. Ниже показано, как это осуществить на практике.
В файл /etc/profile помещается следующий код:
if [ -f /etc/nologin ]; then
if [ $LOGNAME != "root" ]; then
echo "Sorry $LOGNAME the system is unavailable at the moment"
exit 1
fi
fi
Теперь, если требуется запретить регистрацию для всех пользователей, за исключением пользователя root, примените команду touch для создания в каталоге /etc файла nologin и удостоверьтесь, что все пользователи имеют право читать этот файл.
touch /etc/nologin chmod 644 /etc/nologin
Если необходимо вернуться к старому порядку, удалите файл nologin следующим образом:
rm /etc/nologin
Описанная методика используется для отключения всех пользователей, кроме пользователя root. Если нужно временно отключить некоторые учетные записи, можно обратиться к файлу /etc/passwd, а в качестве первого символа в поле пароля следует указать символ *. Однако такой подход применяется редко, и если пользователь недостаточно четко выполняет все действия, можно столкнуться с проблемами при работе всей системы.
Linux располагает утилитой, с помощью которой в файл login.access вводятся имена пользователей и групп. Этот файл предназначен для предоставления доступа к системе.
Рассмотрим версию утилиты под названием deny.access. Сценарий, который выполняется из файла /etc/profile, просматривает файл lockout.user. Этот файл включает имена пользователей, в регистрации которых вы не заинтересованы. Если в файле присутствует слово "all", доступ запрещается всем пользователям, кроме пользователя root.
Ниже приводится пример файла lockout.user. Этот файл может включать строки комментария.
$ pg lockout.users
#lockout.users
#поместите в этот файл имена пользователей по вашему усмотрению
#снятие системной блокировки
#Удалите из этого файла имена пользователей, чтобы пользователи могли
#вернуться назад.