gpt4 book ai didi

bash - 在 bash 脚本中获取 SSH 登录名

转载 作者:行者123 更新时间:2023-11-29 09:10:29 26 4
gpt4 key购买 nike

我在服务器 A 上有一个 Bash 脚本,它通过 logname 命令找到登录的 SSH 用户,即使它是以 root 运行的使用 sudo。如果我从我的桌面通过 SSH 连接到服务器 A 并运行脚本,它工作正常。

但是,我在 SVN 服务器 S 上设置了一个提交后 Hook ,SSH 连接到 A 并在那里运行脚本,这会导致 logname 失败,错误“登录名:没有登录名”。

如果我从我的桌面 SSH 进入 S,然后从那里 SSH 进入 A,它工作正常,所以错误一定是 SVN Hook 最终不从虚拟终端运行。

我可以在这里使用什么替代logname

最佳答案

您可以使用 id 命令:

  $ ssh 192.168.0.227 logname
logname: no login name

不过

  $ ssh 192.168.0.227 id
uid=502(username) gid=100(users) groups=100(users)

在 bash 脚本中,您可以使用类似的东西从 id 输出中删除用户名

  $ id | cut -d "(" -f 2 | cut -d ")" -f1
username

要拥有一个既可以在 sudo 环境中运行又可以在没有终端的情况下运行的脚本,您始终可以有条件地执行不同的命令。

if logname &> /dev/null ; then 
NAME=$( logname )
else
NAME=$( id | cut -d "(" -f 2 | cut -d ")" -f1 )
fi
echo $NAME

关于bash - 在 bash 脚本中获取 SSH 登录名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11052070/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com