Скрипт автоматической блокировки / выхода из аккаунта

У меня есть 2 сценария. Первый называется «lock_logoff», и он делает именно это. Он блокирует учетную запись в сценарии и затем отключает их. Второй скрипт разблокирует аккаунт. Мне надоело переходить к компьютеру моей дочери и делать это вручную, когда она заземляется от компьютера.

Lock script:
sudo passwd -l amber
sudo pkill -u amber
echo "Account locked and logged off! Screaming in 3....2....1..."

Unlock script:
sudo passwd -u amber
echo "Account unlocked!"

То, что я пытаюсь сделать, поскольку на этом компьютере имеется более 1 учетной записи, я хотел бы добавить переменную в скрипт, чтобы у меня не было 3 разных скриптов блокировки и разблокировки. Есть ли способ, которым я могу запустить "lock_logoff jon" или "unlock amber", и он запускает скрипт для этого пользователя?

2
задан 18 August 2015 в 13:31

1 ответ

Абсолютно можно использовать только один сценарий вместо 3. Для этого Вы могли просто передать аргументы от командной строки. В каждом ударе сценарии и функции, звонили некоторые переменные, позиционные параметры автоматически сгенерированы. В начале Вашего сценария (т.е. когда никакая другая команда еще не будет выполнена), Вы будете иметь:

$0 : the name of the script
$1 : the 1st argument passed
$2 : the 2nd argument ...

Обратите внимание, что те аргументы затронуты Вашей IFS и Вашей цитатой, таким образом, john doe рассчитает как 2 аргумента тогда как "john doe" рассчитает как один. Можно читать больше об этом здесь

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

#!/bin/bash
user_name="$1"

#here, id returns 'true' if the user exists, else 'false' 
#>/dev/null 2>&1 hides the output of the id command
if id -u "$user_name" >/dev/null 2>&1; then
    sudo passwd -l "$user_name"
    sudo pkill -u "$user_name"
    echo "Account locked and logged off! Screaming in 3....2....1..."
else
    echo "Error: user $user_name does not exist"
fi

Можно теперь просто назвать сценарий как это: ./myscript amber или ./myscript john

1
ответ дан 18 August 2015 в 23:31
  • 1
    Я установил mailx и попробовал команду как показано (с корректным адресом электронной почты), и я все еще получаю 535 Неправильных данных Аутентификации – Chris W 9 November 2016 в 21:56

Другие вопросы по тегам:

Похожие вопросы: