, содержащие предупреждения иинформационные сообщения, заменив маркеры предупреждений иинформационных сообщений на слова Warning: и Information:
так, чтобы в получившемся файле сначала шли все предупреждения, апотом все информационные сообщения. Вывести этот файл на экран.vii) Создать файл emails.lst, в который вывести через запятую всеадреса электронной почты, встречающиеся во всех файлах каталога/etc.viii) Вывести список пользователей системы с указанием их UID,отсортировав по UID. Сведения о пользователей хранятся в файле/etc/passwd. В каждой строке этого файла первое поле – имяпользователя, третье поле – UID. Разделитель полей – двоеточие.ix) Подсчитать общее количество строк в файлах, находящихся вдиректории /var/log/ и имеющих расширение log.x) Вывести три наиболее часто встречающихся слова из man по командеbash длиной не менее четырех символов. 3. Предъявите скрипты преподавателю и получите вопрос или задание длязащиты лабораторной работы.Выполнение работы 1. Создайте каталог для выполнения лабораторной работы в директории/home/user/ Все скрипты создавайте внутри этого каталога или егоподкаталогов.
2. Напишите скрипты, решающие следующие задачи:1. В параметрах при запуске скрипта передаются три целых числа. Выведите максимальное число
#!/bin/bash
a=$1
b=$2
c=$3
if [[ "$b" -gt "$a" ]]
then a=$b
fi
if [[ "c" -gt "$a" ]]
then a=$c
fi
echo "$a"
2. Считывать строки с клавиатуры, пока не будет введена строка "q". Послеэтого вывести последовательность считанных строк в виде одной строки.#!/bin/bash
b=""
read a
b="$b$a"
while [[ "$a" != "q" ]]
do
read a
b="$b$a"
if [[ "$a" == "q" ]]
then break
fi
done
echo "$b"
3. Создать текстовое меню с четырьмя пунктами. При вводе пользователемномера пункта меню происходит запуск редактора nano, редактора vi,браузера links или выход из меню.#!/bin/bash
echo "Vyberite deystvie:"
echo "1 = nano"
echo "2 = vi"
echo "3 = links"
echo "4 = exit"
read a
case $a in
1 )
/usr/bin/nano
;;
2 )
/usr/bin/vim
;;
3 )
/usr/bin/links
;;
4 )
echo "Goodbye"
exit 0
;;
esac
4. Если скрипт запущен из домашнего каталога, вывести на экран путь кдомашнему каталогу и завершить работу с кодом 0. В противном случаевывести сообщение об ошибке и завершить работу с кодом 1.#!/bin/bash
if [[ "$HOME" == "$PWD" ]]
then echo "$HOME"
exit 0
fi
if [[ "$HOME" != "$PWD" ]]
then echo "ERROR"
exit 1
fi
5. Создать файл info.log, в который поместить все строки из файла/var/log/anaconda/syslog, второе поле в которых равно INFO.#!/bin/bash
grep -E -r -h "^ACPI.*" /var/log/syslog > info.log
grep -E -r -h "^.*[[:alnum:]]\.[[:alpha:]]" /home/pyatkin/lab1/info.log
6. Создать full.log, в который вывести строки файла/var/log/anaconda/X.log, содержащие предупреждения иинформационные сообщения, заменив маркеры предупреждений иинформационных сообщений на слова Warning: и Information:
так, чтобы в получившемся файле сначала шли все предупреждения, апотом все информационные сообщения. Вывести этот файл на экран.#!/bin/bashinf="\\(II\\)"
war="\\(WW\\)"grep -E -h -s $war /var/log/Xorg.0.log | sed -E "s/$war/Warning: /" > full.loggrep -E -h -s $inf /var/log/Xorg.0.log | sed -E "s/$inf/Information: /" >> full.log
7. Создать файл emails.lst, в который вывести через запятую всеадреса электронной почты, встречающиеся во всех файлах каталога/etc.#!/bin/bashmail="[a-zA-Z0-9_.]+@[a-zA-Z0-9_]+(\\.[a-zA-Z]+)+"grep -E -h -s -o -w $mail /etc/* | awk '{printf("%s, ",$1)}' | sed -E "s/$mail,\s$//g" > emails.lst
8. Вывести список пользователей системы с указанием их UID,отсортировав по UID. Сведения о пользователей хранятся в файле/etc/passwd. В каждой строке этого файла первое поле – имяпользователя, третье поле – UID. Разделитель полей – двоеточие.#!/bin/bash
awk '{ FS=":"; print $3, $1;}' /etc/passwd | sort -n -k 1
9. Подсчитать общее количество строк в файлах, находящихся вдиректории /var/log/ и имеющих расширение log.#!/bin/bash
cat /var/log/*.log | wc –l
10. Вывести три наиболее часто встречающихся слова из man по командеbash длиной не менее четырех символов.#!/bin/bash
man bash | grep -o -i "[a-zA-Z]\{4,\}" | tr "[:upper:]" "[:lower:]" | sort | uniq -c | sort -r -n | head -3