【问题标题】:How to get current ssm sessionId after starting a new session?开始新会话后如何获取当前的 ssm sessionId?
【发布时间】:2021-06-06 08:27:30
【问题描述】:

我正在尝试在开始会话后获取当前的 aws ssm sessionId。我可以看到,当我启动它时,它会被打印出来,就像这样

Starting session with SessionId: test@test.com-0ftz59d2285d67fb5

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

我还可以看到我可以从 ssm-session 工作人员那里获取它,但我正在尝试以更清洁的方式获取它:

[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

【问题讨论】:

  • 细节大概在/proc/875

标签: linux amazon-web-services aws-ssm amazon-linux-2 aws-session-manager


【解决方案1】:

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

# 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 Session Worker,然后从参数中提取 Session Id,或者直到不存在父进程。要运行它,您需要 sudo 访问权限并使用 sudo 运行它。即使使用 sudo su,它仍然可以工作。 $PPID 是当前进程的父进程的id。

#!/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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-09
    • 2021-01-24
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 1970-01-01
    相关资源
    最近更新 更多