【发布时间】:2019-04-17 10:36:48
【问题描述】:
有没有办法直接在 Bash 中获取连接到特定 Unix 环境的用户的 Windows 用户名,始终使用相同的服务器凭据?
一些背景
有 N 个用户,他们可以连接到 M 个不同的 Unix 环境,在 Unix 上总是使用相同的凭据:someusername,没有密码。 基本上,
- Windows 用户“Matteo”在计算机“
PMatteo.fr.company.com”上打开了一个 Windows 会话。 - 此用户使用 Putty 在 Linux 机器
linuxMachine上打开一个SSH会话。 - 登录始终使用相同的“假”凭据:
someusername,无密码,用户已登录。
在 Unix 环境中,因此使用 bash 命令,我想检索 Windows 用户名“Matteo”。
到目前为止我的研究
以下命令:
echo $(who am i) | cut -d "(" -f2 | cut -d ")" -f1
显示两种输出,具体取决于我连接到的机器:
- 有时会直接显示机器名
PMatteo.fr.company.com - 其他时候,它只显示 IP 地址(例如
45.32.4.19),但这很好,因为我可以使用命令nslookup 45.32.4.19找到机器名称。
我的问题
有什么方法可以使用 Bash 脚本直接访问 Windows 用户名?我可以(非常)轻松地找到机器名称,所以我相信 Windows 用户名可能存储在某个地方,我只是不知道如何并且在网络上的任何地方都找不到它。 有没有人有任何提示?我的 bash 版本是 4.1.2(1)。
目的
从 windows 用户名,我总是可以重建用户的邮件地址。有时用户启动可能会影响其他用户的命令,但由于他们总是使用相同的用户名连接(讲 Unix 的),所以没有人知道实际执行该命令的是谁。 如果其他人想要求停止他们正在做的事情,能够通过电子邮件与他们联系会很好。
【问题讨论】:
-
echo $(who am i)...你的意思是whoami还是who? -
在我的 Windows 10 系统上,Ubuntu Bash shell 中的
whoami提供了我的 Windows 10 登录名。那是你在谈论的bash shell吗?还不是很清楚。 -
@lurker 我认为
whoami打印您的Windows 用户名只是巧合。您可以在 WSL 中拥有多个用户,并且他们的名称可以与 windows 用户不同。 -
@Socowi 我的意思是
who am i,带有空格。它打印出如下内容:unix_user pts/3 Apr 17 09:46 (IP address)。也许它是一个内部别名,我认为它是一个 unix 内置的? -
@lurker 是的,我认为这是巧合,对我来说并非如此(我得到的是 unix 的用户名)。