Главная страница
Навигация по странице:

  • Результат : Задание 2

  • Результат: Задание 4

  • Результат: Задание 5

  • Решение : !/bin/bashif [[ $(cat -n $1 | grep $2) ]] ; thenecho "Есть"elseecho "Нет"fiРезультат

  • Решение : if [[ "$" -eq "0" ]]thenecho Ошибкаelseecho $ parametrovfiЗадание 8

  • Задание 9

  • Результат : Задание 10

  • Лабораторная_работа. Лабораторная работа 3. Командный интерпретатор shell


    Скачать 20.44 Kb.
    НазваниеЛабораторная работа 3. Командный интерпретатор shell
    АнкорЛабораторная_работа
    Дата11.11.2022
    Размер20.44 Kb.
    Формат файлаdocx
    Имя файла3_update.docx
    ТипЛабораторная работа
    #783546

    Лабораторная работа №3. Командный интерпретатор shell.
    Цель работы: Ознакомиться с набором средств настройки командного интерпретатора shell. Получить навыки написания простейших сценариев командного интерпретатора.
    Задание 1: Написать скрипт на командном языке bash. В качестве параметра скрипта указывается список имен файлов. разделенных пробелами. Для каждого из файлов: если файл существует, вывести данные о размере, владельце, правах доступа и т.п.; если не существует – выдать соответствующее сообщение.

    Решение:

    #!/bin/bash

    for var in "$@"

    do

    echo "$var"

    if [ -f "$var" ]; then

    FILESIZE=$(stat -c%s "$var")

    echo "Размер $var = $FILESIZE байт."

    USER=$(stat -c '%U' "$var")

    echo "Владелец $var = $USER."

    RIGHTS=$(stat -c '%a' "$var")

    echo "Права доступа $var = $RIGHTS."

    else

    echo "$var не существует или отсутствует."

    fi

    done;

    Результат:

    Задание 2: Написать сценарий, который в зависимости от первого параметра командной строки выдает:

    а) общее количество зарегистрированных в системе пользователей;

    б) количество работающих в данный момент в системе пользователей;

    в) при запуске без параметров или с неверными параметрами – сообщение об ошибке.

    Примечание. Общим числом зарегистрированных пользователей считать число строк в файле /etc/passwd.

    Решение:

    if [[ $1 = "1" ]]

    then

    wc /etc/passwd -l

    elif [[ $1 = "2" ]]

    then

    who

    else

    echo Ошибка

    fi

    3 Задание: Написать сценарий, определяющий, сколько сеансов указанного пользователя открыто в системе. Если указанный пользователь не присутствует в системе, выдать соответствующее сообщение. Имя пользователя передается в качестве параметра.

    Решение:

    #!/bin/bash

    # str=`w | grep "$1"`

    echo "insert user"

    read line

    w | grep ^$line

    # `w | grep "$1"`

    task() {

    if [[ $str == "" ]] || [[ "$#" -eq "0" ]]; then

    echo "пользователь отсутствует или не существует"

    else

    w | grep "$1" | grep "pts" | wc -l

    fi

    }

    task

    Результат:_Задание_4'>Результат:

    Задание 4: В качестве параметра скрипта указывается имя файла. Если в файле не более 10 строк, вывести число символов в нем, иначе – число строк.

    Решение_:_!/bin/bashif_[[_$(cat_-n_$1_|_grep_$2)_]]_;_thenecho_"Есть"elseecho_"Нет"fiРезультат'>Решение:

    #!/bin/bash

    var=`wc -l < $1`

    if [[ $var -lt 10 ]]; then

    echo `wc -m < $1` символов

    else

    echo `wc -l < $1` строк

    fi

    Результат:

    Задание 5: В качестве параметра скрипта указывается имя файла и ключевое слово. Если ключевое слово присутствует в файле, вывести «Есть», иначе – «Нет».

    Решение:

    #!/bin/bash

    if [[ $(cat -n $1 | grep $2) ]] ; then

    echo "Есть"

    else

    echo "Нет"

    fi

    Результат:

    Задание 6: В качестве параметров скрипта указывается список пользователей (через пробел). Вывести информацию о сеансах тех из них, кто в данный момент работает в системе.

    Решение:

    for str in $@

    do

    who | grep $str

    done

    Задание 7: Написать скрипт, который печатает количество указанных параметров командной строки. Если не указано ни одного параметра, вывести сообщение об ошибке.

    Решение:

    if [[ "$#" -eq "0" ]]

    then

    echo Ошибка

    else

    echo $# parametrov

    fi

    Задание 8: В качестве параметра скрипта указывается имя пользователя. Если пользователь с указанным именем существует, вывести информацию о том, работает ли он в данный момент в системе; иначе – вывести сообщение «Нет такого пользователя»

    Решение:

    str=`w | grep "$1"`

    if [[ $str == "" ]] || [[ "$#" -eq "0" ]]

    then

    echo Нет такого пользователя

    else

    w | grep "$1"

    fi

    Задание 9: Если скрипт запущен без параметров, вывести список активных процессов на экран, иначе – в файл, имя которого указано как параметр.

    Решение:

    #!/bin/bash

    if [[ "$#" -eq "0" ]]

    then

    ps -ef

    else

    ps -ef > $1

    echo "Файл был создан или отредактирован"

    echo "лог с процессами загружен"

    fi

    Результат:

    Задание 10: Определить, сколько сеансов провел в системе пользователь, имя которого указано в качестве параметра.

    Решение:

    #!/bin/bash

    echo -n "enter user: "

    read username

    echo -n "User: $username Session(s): "

    last | grep ^$username| grep 'logged' | wc -l

    last | grep ^$username| grep 'logged'

    exit;

    Результат:


    написать администратору сайта