我想定义一个 systemd 服务,根据某些条件,在用户的登录 shell 提示可用之前,向用户提示输入一些文本。
这是我想要的事情类型的示例:当用户在其他任何事情之前登录并且在用户可以输入任何内容之前,运行脚本提示用户输入他们喜欢的名字。该名称保存在其主目录中的文件中。但是,如果名字文件已存在,则脚本不执行任何操作。
这是登录用户的样子:
my-server login: joe-user
password: <user types in password>
System notice: joe-user we need to gather some information.
----
Please type in your preferred first name:
进行提示和文件写入的脚本很简单,但是如何编写服务以便用户登录后立即获取脚本?无论用户使用哪个 shell,这都应该有效。
答案1
虽然不是 100% 匹配 - 它看起来足够接近 - 有一个名为的工具systemd-ask-password
- 这是一种向您不想存储在磁盘上的 systemd 服务提供密码的方法。
例如,存在多个可以回答此类查询的代理systemd-tty-ask-password-agent
。
但请注意:回答此类查询需要特权用户(因为它是系统范围的查询,并且不绑定到任何用户)。
如果您想向没有权限的特定用户询问某些内容,那么在登录时执行的自编写脚本(例如从 调用 $HOME/.profile
)可能是进行此类查询的更好地方......