gpt4 book ai didi

linux - 使用 Linux 远程查找经过身份验证的 Windows 用户

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:11:26 27 4
gpt4 key购买 nike

我正在开展一个项目,该项目需要确定当前从 Linux 客户端登录到 Windows 工作站的用户名。 Linux 客户端具有工作站的 IP 地址/主机名,并且可以潜在地访问 Active Directory 域 Controller ,但除此之外别无他物。

我知道 Windows 中的“psloggedon\hostname”实用程序可以完成这项工作,但我正在寻找 Linux/Unix 替代方案。

有什么建议吗?

最佳答案

这是我正在使用的脚本。它需要 Samba,我认为至少是版本 3.x,它每次运行只要求域管理员密码一次,不是很安全,但比硬编码到脚本中要好。

#!/bin/bash
ADMIN_USER='DOMAIN_NAME\Administrator'
DOMAIN_CONTROLLER='hostname.of.domain.controller'
#

die () {
echo >&2 "$@"
exit 1
}

# Die if computer name missing
[ "$#" -eq 1 ] || die "Usage: loggedon <computer>"
COMPUTER=$1
# Store domain admin password in a variable to avoid asking every time.
read -s -p "Please provide domain administrator password: " ADMIN_PASSWORD
echo
# Store all sids logged on $COMPUTER inside an array
# Notice I'm using PASSWD= environement variable to push the admin password
# to net command, this way it won't ask for it.
#
SIDs=(`PASSWD=$ADMIN_PASSWORD /usr/bin/net rpc registry enumerate 'HKEY_USERS' -S $COMPUTER -U $ADMIN_USER | grep _Classes | cut -d '=' -f2 | sed 's/ //g'`)
if [ "${#SIDs[@]}" -gt 0 ]; then
printf "Found %s logged on $COMPUTER\n" "${SIDs[@]}"
echo
# Retrieves CommonName attribute from DC for each SID
for i in "${SIDs[@]}"
do
:
RAW_USER=`PASSWD=$ADMIN_PASSWORD net ads sid -S $DOMAIN_CONTROLLER -U Administrator $i`
#RAW_USER contains all attributes from ldap, we need to clean it first
USER=`echo $RAW_USER | egrep -o 'cn: (.+)sn:' | sed -e 's/sn\://g'`
echo "$USER is logged on $COMPUTER"
done
else
echo Nobody is logged on $COMPUTER
fi

关于linux - 使用 Linux 远程查找经过身份验证的 Windows 用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5249125/

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