ansible和ssh中的“我是谁”不输出任何内容
我在ansible中有以下测试代码:
- shell: who am i
register: w
- debug:
msg:
- "{{ w }}"
它产生空标准输出,如下所示:
ok: [10.20.30.40] => {
"msg": [
{
"changed": true,
"cmd": "who am i",
"delta": "0:00:00.003400",
"end": "2021-02-02 21:19:50.454729",
"failed": false,
"rc": 0,
"start": "2021-02-02 21:19:50.451329",
"stderr": "",
"stderr_lines": [],
"stdout": "",
"stdout_lines": []
}
]
}
该命令适用于某些服务器,但不适用于其他服务器。我无法弄清楚有什么区别。我只能猜测它与终端信息有关。当我以交互方式输入“我是谁”命令时,我得到了预期的结果。
我还注意到“who”命令中 ssh 的其他奇怪行为:
$ ssh myhost who # who outputs nothing
$ ssh myhost who am i # who am i outputs nothing
$ ssh myhost whoami # whoami works
j.smith
也许他们是相关的。
我需要who am i
在 sudo 命令中使用来查找发出 sudo 的用户。如果有另一种方法可以找到信息,我很乐意使用它,但我仍然想知道who am i
. 非常感谢。
回答
whoami
显示当前有效用户的用户名。
who am i
akawho -m
显示任何标准输入的 utmp 记录。
utmp
记录通常由login
各种终端模拟器添加。如果您不创建登录会话,who am i
则为空白:
$ ssh localhost who am i
(nothing)
$ ssh -t localhost who am i
me pts/31 Feb 2 14:27 (127.0.0.1)
比如,如果你运行screen
用deflogin off
,那么who am i
将永远是空白。这就是为什么你永远不应该who am i
试图弄清楚谁跑了sudo
($SUDO_USER
改用)的原因之一。