将字符串传递给 /bin/login

将字符串传递给 /bin/login

我正在为 /bin/login 创建登录包装器,这样当您启动 Linux 时,您将获得 TUI 登录,而不是 tty 控制台上的单调登录。这只是此包装器的 bash 脚本,但我想知道如何/是否可以在一行或两行内将用户名和密码传递给 /bin/login。

我认为你可以这样做

echo "username/npassword" | login

但它不起作用。至少这是我在终端上得到的。我考虑过 except shell,但它在用户下生成。有人能给我指明正确的方向吗?

答案1

您可以使用 expect 来自动化该过程,或者,您可以将用户名和密码写为变量,并在脚本中调用它们。您也可以从用户输入中读取它们。我认为最简单的方法是使用 epect,它可以轻松处理诸如 dealys 之类的事情,并逐步思考交互过程。

使用 expect 的示例登录脚本可能如下所示:

#!/usr/bin/expect
#./script user passwd
spawn login  [lindex $argv 0]
set passID [lindex $argv 1]
expect "Password:"
send "$passID\r"
spawn echo "lol\r\r"
expect eof

有很多方法可以完成这项任务,无论您选择哪种方法,如果可能的话,我都会避免在脚本中保存密码。

相关内容