Наш скрипт на git: gitlab.com/doa... Про программу [ и её синтаксис: tldp.org/LDP/B... Плейлист: • Основы GNU/Linux и под... Телеграм: t.me/gnuslashl... Текстовой вариант: basis.gnulinux...
Отличные видео! Как раз интересно смотреть такие уроки на реальных примерах, используемых в работе. Если можно, побольше такой практики и с использованием sed, awk. Спасибо.
Мурад, спасибо за объяснение! У меня появился следующий вопрос: последнее задание, где нужно вывести сообщение "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 "Верно! Дальше!" ... И так по цепочке. Но каждый раз скрипт просто закрывается после второго правильного ответа. Что я делаю не так и как это правильнее реализовать?
Привет Тебе нужны вложенные условия, а не elif Elif - это если первое условие не сработало А надо if условие then правильно if условие 2 then правильно 2 Ну или просто без elif if условие then правильно else выход Fi И повторяешь тоже самое
Добрый день, я правильно понял, что в практическом задании №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
Добрый день Как определить, что пользователь в линуксе админ? Четкого ответа нет, но условно речь идёт о строке в судоерс с его логином и ALL ALL, либо он состоит в одной из групп, у которой есть ALL:ALL права В качестве простого скрипта можете за условность взять группу sudo И можете усложнять скрипт, анализируя sudoers
делаю Задание которые вы задали своем странице Сделайте скрипт, который проверит bash историю и скажет, использовал ли этот пользовать команду sudo? Если использовал, то скрипт должен дополнительно вывести лог о выполнении из логов sudo. вот я не знаю правильно сделал или нет я делал так grep sudo*$lose /var/log/secure Это правильно ? PS: $lose это переменная для имени пользователя
@@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 я бы заменил /home/$lose на ~$lose/, потому что не факт, что домашняя директория пользователя находится в /home и не факт, что она так называется. Легче просто ~$lose/.bash_history
Спасибо. Круто, что рассматриваете на конкретных примерах.
Отличные видео! Как раз интересно смотреть такие уроки на реальных примерах, используемых в работе. Если можно, побольше такой практики и с использованием sed, awk. Спасибо.
спасибо,все понятно и может быть это мне как-то пригодиться
Круто-Удачи !!!!
Положи файлик на git.
gitlab.com/doatta/myscript
Ужасно душновато
Мурад, спасибо за объяснение!
У меня появился следующий вопрос: последнее задание, где нужно вывести сообщение "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 "Верно! Дальше!"
...
И так по цепочке. Но каждый раз скрипт просто закрывается после второго правильного ответа. Что я делаю не так и как это правильнее реализовать?
Привет
Тебе нужны вложенные условия, а не elif
Elif - это если первое условие не сработало
А надо
if условие
then правильно
if условие 2
then правильно 2
Ну или просто без elif
if условие
then правильно
else выход
Fi
И повторяешь тоже самое
@@GNULinuxPro да, так тоже пробовал, но он всегда выдает мне ошибку в самой последней строке: unexpected end of file.
@@GNULinuxPro а если через:
if условие
then правильно
else выход
fi
...
fi
То все работает. Но можно же, наверное, как-то сократить все это дело?
@@Diggertomix999 значит где-то забыл fi
@@Diggertomix999 можно написать функцию и подставлять условия
Добрый день, я правильно понял, что в практическом задании №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
Добрый день
Как определить, что пользователь в линуксе админ?
Четкого ответа нет, но условно речь идёт о строке в судоерс с его логином и ALL ALL, либо он состоит в одной из групп, у которой есть ALL:ALL права
В качестве простого скрипта можете за условность взять группу sudo
И можете усложнять скрипт, анализируя sudoers
делаю Задание которые вы задали своем странице Сделайте скрипт, который проверит bash историю и скажет, использовал ли этот пользовать команду sudo? Если использовал, то скрипт должен дополнительно вывести лог о выполнении из логов sudo. вот я не знаю правильно сделал или нет я делал так
grep sudo*$lose /var/log/secure Это правильно ? PS: $lose это переменная для имени пользователя
ты пропустил момент с проверкой баш истории, но это не критично
в целом да, sudo grep user /var/log/secure
@@GNULinuxProБлагодарю за вашу поддержку
@@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
@@GNULinuxPro Было бы круто если на вашем канале был курс по Python-у это было бы очень круто Знаю что хочу слишком многого )) Удачи вам
@@eldarkarimov5791 я бы заменил /home/$lose на ~$lose/, потому что не факт, что домашняя директория пользователя находится в /home и не факт, что она так называется. Легче просто ~$lose/.bash_history