首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在启动新的会话后获取当前的ssm sessionId?

如何在启动新的会话后获取当前的ssm sessionId?
EN

Stack Overflow用户
提问于 2021-03-08 20:46:19
回答 1查看 360关注 0票数 2

我正在尝试在启动会话后获取当前的aws ssm sessionId。我可以看到,当我启动它时,它被打印出来,如下所示

代码语言:javascript
运行
复制
Starting session with SessionId: test@test.com-0ftz59d2285d67fb5

但我不知道这是从哪里来的。

我还可以看到我可以从ssm-session worker中获取它,但我正在尝试以一种更简洁的方式获取它:

代码语言:javascript
运行
复制
[ssm-user@ip-100-66-11-11 bin]$ sudo systemctl status amazon-ssm-agent
● amazon-ssm-agent.service - amazon-ssm-agent
   Loaded: loaded (/usr/lib/systemd/system/amazon-ssm-agent.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2021-03-08 09:54:44 UTC; 2h 48min ago
 Main PID: 3092 (amazon-ssm-agen)
   CGroup: /system.slice/amazon-ssm-agent.service
           ├─ 875 /usr/bin/ssm-session-worker test@test.com-0ftz59d2285d67fb5 i-0a7bb9a9064ccc96
           ├─ 886 bash -l
           ├─3092 /usr/bin/amazon-ssm-agent
           └─3272 /usr/bin/ssm-agent-worker
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-11 18:38:24

我找到了两个解决方案。第一个方法是使用代理在/var/lib路径上写入的内容,因为它将通道的名称写入其中,该名称与ssm会话id相匹配。我们可以像这样检索它:

代码语言:javascript
运行
复制
# gets the EC2 instance ID
INSTANCE_ID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)
# the most recent channel matches the current ssm session id
sudo ls -t /var/lib/amazon/ssm/${INSTANCE_ID}/channels | head -1

另一个选项是AWS支持人员提供给我的,它基于登录shell的PID。如果您直接在会话shell中运行它,它将是SSM会话工作者的PID。循环将一直运行,直到找到SSM会话工作进程,然后从参数中提取会话Id,或者直到不存在父进程。要运行此命令,您需要sudo访问权限,并使用sudo运行此命令。即使使用sudo su,它仍然可以工作。$PPID是当前进程的父进程的id。

代码语言:javascript
运行
复制
#!/bin/bash

PROCESSID=$PPID
while [ $PROCESSID ]
do
    SESSIONWORKERPID=$(ps -o ppid= -o args= -p $PROCESSID 2> null)
    if [[ "$SESSIONWORKERPID" =~ .*ssm-session-worker.* ]]; then
        if [[ "$SESSIONWORKERPID" =~ .*?[[:space:]](.*?)[[:space:]].* ]]; then
            echo ${BASH_REMATCH[1]}
        fi
        break;
    fi
    PROCESSID=$(ps -o ppid= -p $PROCESSID 2> null)
    if [[ ! $PROCESSID ]]; then
        echo "Session Id Not Found"
    fi
done
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66530126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档