Файл: Лабораторная работа 1. Выполнил гр. Амм22 Аминбоев Бобуржон Абдулла угли Проверил Пёрышкова Евгения Николаевна.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 06.11.2023

Просмотров: 68

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ«НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»Кафедра: ВТДисциплина: Вычислительные системыЛабораторная работа №1. Выполнил гр. АММ-22Аминбоев Бобуржон Абдулла углиПроверил:Пёрышкова Евгения НиколаевнаНовосибирск 2022ПОСТАНОВКА ЗАДАЧИЗадание: написать bash-скрипт, который выводит на экран характеристики ПК в следующем формате:Выполнение работыРабота была выполнена на ПК с установленной на нём ОС Windows 10 и оболочкой Windows Subsystem for Linux. Дистрибутив Ubuntu.Скрипт помещается в файл с расширением .sh. В строках скрипта будут повсеместно использоваться команды: grep (для поиска нужного текста), printf (для вывода форматированных данных), sed (потоковый редактор текста). Также будут использованы такие языковые конструкции, как цикл – for и оператор условного выбора –if.Алгоритм работы скрипта следующий: в начале файла определяется функция deleteSpaces, которая с помощью команды awk удаляет лишние пробелы в заданном тексте. Далее мы выводим текущую дату – dateu (ключ u используется для вывода даты в формате UTC), имя пользователя – whoami, и доменное имя ПК – hostname. Затем, с помощью команды lscpu мы получаем данные о процессоре. С данной командой возникла небольшая проблема, при её выполнении не выводилась информация о частоте процессора, поэтому данная характеристика была получена при помощи команды dmesg. После этого, оперируя командойfree мы выводим информацию об оперативной памяти ПК. Команда dfh даёт нам информацию о жёстких дисках в удобной для чтения форме. Команда 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