28. bash скрипты #2

Поделиться
HTML-код
  • Опубликовано: 25 авг 2024
  • Наш скрипт на git: gitlab.com/doa...
    Про программу [ и её синтаксис: tldp.org/LDP/B...
    Плейлист: • Основы GNU/Linux и под...
    Телеграм: t.me/gnuslashl...
    Текстовой вариант: basis.gnulinux...

Комментарии • 32

  • @alexlobov6515
    @alexlobov6515 3 года назад +1

    Спасибо. Круто, что рассматриваете на конкретных примерах.

  • @user-ju4jb3rh3w
    @user-ju4jb3rh3w 4 года назад +1

    Отличные видео! Как раз интересно смотреть такие уроки на реальных примерах, используемых в работе. Если можно, побольше такой практики и с использованием sed, awk. Спасибо.

  • @gn01s3
    @gn01s3 4 года назад +1

    спасибо,все понятно и может быть это мне как-то пригодиться

  • @eldarkarimov5791
    @eldarkarimov5791 2 года назад +1

    Круто-Удачи !!!!

  • @temkastomsk
    @temkastomsk 4 года назад

    Положи файлик на git.

  • @Harasima11223
    @Harasima11223 Год назад

    Ужасно душновато

  • @Diggertomix999
    @Diggertomix999 Год назад

    Мурад, спасибо за объяснение!
    У меня появился следующий вопрос: последнее задание, где нужно вывести сообщение "Access Granted", если пользователь назовется John Doe. Получилось решить так:
    #!/bin/bash
    read -p "First Name": f
    read -p "Second Name": s
    if [[ "$f" = "John"]] && [[ "$s" = "Doe" ]]
    then
    echo "Access Granted"
    else
    echo "Permission Denied"
    fi
    Работает, ничего сложного, но моему любопытству нет предела: я попробовал по аналогии написать скрипт с загадками, чтобы за каждый ответ он выводил на экран сообщение о том, правильный это ответ или нет. Если ответ неверный, то скрипт закрывается, если ответ верный, то скрипт дальше прогоняет вопросы, на которые нужно ответить. То есть что-то вроде множественного условия.
    Пробовал примерно так:
    read -p "Q1": a
    if [[ "$a" = "нужный ответ" ]]
    then
    echo "Правильно! Следующий вопрос!"
    read -p "Q2": b
    elif [[ "$b" = "нужный ответ" ]]
    then
    echo "Верно! Дальше!"
    ...
    И так по цепочке. Но каждый раз скрипт просто закрывается после второго правильного ответа. Что я делаю не так и как это правильнее реализовать?

    • @GNULinuxPro
      @GNULinuxPro  Год назад

      Привет
      Тебе нужны вложенные условия, а не elif
      Elif - это если первое условие не сработало
      А надо
      if условие
      then правильно
      if условие 2
      then правильно 2
      Ну или просто без elif
      if условие
      then правильно
      else выход
      Fi
      И повторяешь тоже самое

    • @Diggertomix999
      @Diggertomix999 Год назад

      @@GNULinuxPro да, так тоже пробовал, но он всегда выдает мне ошибку в самой последней строке: unexpected end of file.

    • @Diggertomix999
      @Diggertomix999 Год назад

      @@GNULinuxPro а если через:
      if условие
      then правильно
      else выход
      fi
      ...
      fi
      То все работает. Но можно же, наверное, как-то сократить все это дело?

    • @GNULinuxPro
      @GNULinuxPro  Год назад

      @@Diggertomix999 значит где-то забыл fi

    • @GNULinuxPro
      @GNULinuxPro  Год назад

      @@Diggertomix999 можно написать функцию и подставлять условия

  • @joyriderjoyrider9602
    @joyriderjoyrider9602 Год назад +1

    Добрый день, я правильно понял, что в практическом задании №1 следует привязаться к /etc/passwd? Или как-то еще можно понять, что юзер админ/неадмин? Хотел привязаться к /etc/group, но в группе it почему-то нет перечисления юзеров ( it:x:1009: ). Из-за того, что это их основная группа?
    #!/usr/bin/env bash
    echo '*** Check for admin rights ***'
    read -p 'Please enter Username: ' user
    admgr=$(grep $user /etc/passwd | cut -d ':' -f4)
    if [ "$admgr" = 1009 ]
    then
    echo 'User is admin'
    else
    echo 'User is not admin'
    fi

    • @GNULinuxPro
      @GNULinuxPro  Год назад

      Добрый день
      Как определить, что пользователь в линуксе админ?
      Четкого ответа нет, но условно речь идёт о строке в судоерс с его логином и ALL ALL, либо он состоит в одной из групп, у которой есть ALL:ALL права
      В качестве простого скрипта можете за условность взять группу sudo
      И можете усложнять скрипт, анализируя sudoers

  • @eldarkarimov5791
    @eldarkarimov5791 2 года назад

    делаю Задание которые вы задали своем странице Сделайте скрипт, который проверит bash историю и скажет, использовал ли этот пользовать команду sudo? Если использовал, то скрипт должен дополнительно вывести лог о выполнении из логов sudo. вот я не знаю правильно сделал или нет я делал так
    grep sudo*$lose /var/log/secure Это правильно ? PS: $lose это переменная для имени пользователя

    • @GNULinuxPro
      @GNULinuxPro  2 года назад +1

      ты пропустил момент с проверкой баш истории, но это не критично
      в целом да, sudo grep user /var/log/secure

    • @eldarkarimov5791
      @eldarkarimov5791 2 года назад +1

      @@GNULinuxProБлагодарю за вашу поддержку

    • @eldarkarimov5791
      @eldarkarimov5791 2 года назад

      @@GNULinuxPro вот полный скрипт который я написал
      #!/bin/bash
      echo "Istifadechinin sudo istifade etmeyini yoxlamaq"
      read -p "istifadechi adini qeyd edin; " lose
      cd /home/$lose
      if grep 'sudo' .bash_history
      then echo 'Istifadechi sudo-dan istifade edib' && grep sudo*$lose /var/log/secure
      else echo 'istifadechi sudo-dan istifade etmeyib ve ya umumiyetle history fayli Yoxdur'
      fi

    • @eldarkarimov5791
      @eldarkarimov5791 2 года назад

      @@GNULinuxPro Было бы круто если на вашем канале был курс по Python-у это было бы очень круто Знаю что хочу слишком многого )) Удачи вам

    • @GNULinuxPro
      @GNULinuxPro  2 года назад +1

      @@eldarkarimov5791 я бы заменил /home/$lose на ~$lose/, потому что не факт, что домашняя директория пользователя находится в /home и не факт, что она так называется. Легче просто ~$lose/.bash_history