Файл: Лабораторная работа 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 удаляет лишние пробелы в заданном тексте. Далее мы выводим текущую дату – 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