自动帐户锁定/注销脚本

自动帐户锁定/注销脚本

我创建了 2 个脚本。第一个脚本名为“lock_logoff”,它的作用就是这个。它会在脚本中锁定帐户,然后注销帐户。第二个脚本会解锁帐户。当我女儿被禁止使用电脑时,我厌倦了去她电脑前手动执行此操作。

锁定脚本:
sudo passwd -l 琥珀色
sudo pkill -u 琥珀色
echo "帐户已锁定并注销!尖叫声 3....2....1..."

解锁脚本:
sudo passwd -u 琥珀色
echo "账户已解锁!"

我想做的是,由于这台计算机上有多个帐户,我想向脚本添加一个变量,这样我就不必有 3 个不同的锁定和解锁脚本。有没有办法我可以运行“lock_logoff jon”或“unlock amber”并运行该用户的脚本?

答案1

您绝对可以只使用一个脚本,而不是 3 个。为此,您只需从命令行传递参数即可。在每个 bash 脚本和函数中,都会自动生成一些称为位置参数的变量。在脚本的开头(即,当尚未执行其他命令时),您将拥有:

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

请注意,这些参数受 IFS 和报价的影响,因此john doe将计为 2 个参数,而 则"john doe"计为 1 个参数。您可以阅读更多相关信息这里

读完参数后,您还必须确保用户确实存在(即您没有在调用脚本时出现拼写错误)。为此,您可以使用以下代码片段:

#!/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

相关内容