Файл: Лабораторная работа 1. Выполнил гр. Амм22 Аминбоев Бобуржон Абдулла угли Проверил Пёрышкова Евгения Николаевна.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 06.11.2023
Просмотров: 13
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Кафедра: ВТ
Дисциплина: Вычислительные системы
Лабораторная работа №1.
Выполнил гр. АММ-22
Аминбоев Бобуржон Абдулла угли
Проверил:
Пёрышкова Евгения Николаевна
Новосибирск 2022
ПОСТАНОВКА ЗАДАЧИ
Задание: написать bash-скрипт, который выводит на экран характеристики ПК в следующем формате:
Выполнение работы
Работа была выполнена на ПК с установленной на нём ОС Windows 10 и оболочкой Windows Subsystem for Linux. Дистрибутив Ubuntu.
Скрипт помещается в файл с расширением .sh. В строках скрипта будут повсеместно использоваться команды: grep (для поиска нужного текста), printf (для вывода форматированных данных), sed (потоковый редактор текста). Также будут использованы такие языковые конструкции, как цикл – for и оператор условного выбора –if.
Алгоритм работы скрипта следующий: в начале файла определяется функция deleteSpaces, которая с помощью команды awk удаляет лишние пробелы в заданном тексте. Далее мы выводим текущую дату – date –u (ключ –u используется для вывода даты в формате UTC), имя пользователя – whoami, и доменное имя ПК – hostname. Затем, с помощью команды lscpu мы получаем данные о процессоре. С данной командой возникла небольшая проблема, при её выполнении не выводилась информация о частоте процессора, поэтому данная характеристика была получена при помощи команды dmesg. После этого, оперируя командойfree мы выводим информацию об оперативной памяти ПК. Команда df –h даёт нам информацию о жёстких дисках в удобной для чтения форме. Команда ifconfig позволяет нам получить доступ к данных о наших сетевых интерфейсах.
Результат работы bash-скрипта
Приложение
function deleteSpaces {
awk '{$1=$1;print}'
}
printf "Current date is: `date -u`;\n"
printf "User name: `whoami`;\n"
printf "Domain name of PC: `hostname`;\n"
printf "\nCPU info:\n"
printf "* Model - `lscpu | grep "Model" | cut -d: -f2 | deleteSpaces`\n"
printf "* Architecture - `lscpu | grep "Architecture" | cut -d: -f2 | deleteSpaces`\n"
printf "* Clock frequency - `dmesg | grep "MHz" | cut -d: -f2 | deleteSpaces` \n"
printf "* Number of cores - `lscpu | grep "CPU(s):" | sed '2d' | cut -d: -f2 | deleteSpaces`\n"
printf "* Thread(s) per core - `lscpu | grep "Thread(s) per core" | cut -d: -f2 | deleteSpaces`\n"
printf "\nRAM info:\n"
printf "* Total - `free -m | grep "Mem" | deleteSpaces | cut -d' ' -f2`\n"
printf "* Free - `free -m | grep "Mem" | deleteSpaces | cut -d' ' -f4`\n"
printf "\nHDD info:\n"
printf "* Total - `df -h /dev/sda | sed '1d' | deleteSpaces | cut -d' ' -f2` \n"
printf "* Available - `df -h /dev/sda | sed '1d' | deleteSpaces | cut -d' ' -f4` \n"
printf "* Mounted to the root folder - `df -h | grep 'sdb' | deleteSpaces | cut -d' ' -f2` \n"
printf "* SWAP Total - `swapon | sed '1d' | cut -d' ' -f3` \n"
tmp1=`swapon -s | sed '1d' | deleteSpaces | cut -d' ' -f3`
tmp2=`swapon -s | sed '1d' | deleteSpaces | cut -d' ' -f4`
swapAvailable=$(( ${tmp1} - ${tmp2} ))
printf "* SWAP Available - ${swapAvailable}B \n"
printf "\nNetwork interfaces info:\n"
numberIntf=`ifconfig -s | sed '1d' | wc | deleteSpaces | cut -d' ' -f1 `
printf "* Number of network intefaces - ${numberIntf} \n"
printf "| # | Network Interface Name | MAC-address | IP-address | Speed |\n"
for (( i=1; i <= ${numberIntf}; i++ ))
do
name=`ifconfig -s | sed '1d' | head -n${i} | tail -n1 | deleteSpaces | cut -d' ' -f1`
mac=`ifconfig ${name} | grep 'ether' | gawk '{print $2}'`
ip=`ifconfig ${name} | grep 'inet ' | gawk '{print $2}'`
speed=`ethtool ${name} | grep 'Speed' | cut -d: -f2`
if [[ -z ${mac} ]]; then
mac="#####"
fi
if [[ -z ${ip} ]]; then
ip="#####"
fi
if [[ -z ${speed} ]]; then
speed="#####"
fi
printf "|%3s|%24s|%21s|%14s|%12s|\n" ${i} ${name} ${mac} ${ip} ${speed}
done