根据我的要求,我需要在 Apache Tomcat 服务器和 Glassfish 服务器中列出所有具有事件 session 的事件用户名。
最佳答案
我不确定 GlassFish,但您可以编写 Tomcat 脚本来执行此操作,尤其是当您在用户 session 中有一个包含其用户名的对象时。在我的 session 中,我有一个可用于此目的的“用户”对象。
这是食谱:
- 安装 Tomcat 的
manager
网络应用程序并配置它以进行正确的身份验证 - 使用如下脚本:
for sessionid in `wget -qO - 'http://username:password@host:port/manager/jmxproxy?invoke=Catalina:type=Manager,context=/contextName,host=localhost&op=listSessionIds' \
| sed -e "s/ /\n/g" -e 's/.*returned://'`
do
response=`wget -qO - "http://username:password@host:port/manager/jmxproxy?invoke=Catalina:type=Manager,context=/contextName,host=localhost&op=getSessionAttribute&ps=$sessionid,user" 2>/dev/null`
#echo "$response"
if [ `expr "$response" : "^OK"` ] ; then
user=`expr "$response" : ".*\(User.*\)"`
if [ "$user" ] ; then
echo "$sessionid: $user"
else if [ "$VERBOSE" ] ; then
echo "$sessionid: [ no authenticated user ]"
fi fi
else
echo "[error]: $response"
fi
done
嗯...反引号在上面看起来不太好。让我阅读一些有关如何使该代码片段可读的内容,然后我将更新此答案。这两个 wget
命令都应该有反引号,第一个命令应该在 returned://'
字符串之后有关闭反引号。
关于session - 如何在 Apache Tomcat 服务器和 Glassfish 服务器中列出所有具有事件 session 的事件用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30341185/