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 iakawho -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)

比如,如果你运行screendeflogin off,那么who am i将永远是空白。这就是为什么你永远不应该who am i试图弄清楚谁跑了sudo$SUDO_USER改用)的原因之一。


以上是ansible和ssh中的“我是谁”不输出任何内容的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>