【问题标题】:Grab curl output's cookie in bash script在 bash 脚本中获取 curl 输出的 cookie
【发布时间】:2017-12-19 10:04:15
【问题描述】:

当我在我的 bash shell 脚本中发送 curl 命令时,我得到如下输出

< Date: Fri, 14 Jul 2017 10:21:25 GMT
< Set-Cookie: vmware-api-session-id=7ed7b5e95530fd95c1a6d71cf91f7140;Path=/rest;Secure;HttpOnly
< Expires: Thu, 01 Jan 1970 00:00:00 GMT
< Content-Type: application/json

我如何访问vmware-api-session-id。我应该在执行 curl 时将其存储在变量中吗?

【问题讨论】:

  • 您希望将字符串7ed7b5e95530fd95c1a6d71cf91f7140 存储在变量中吗?

标签: bash curl cookies


【解决方案1】:

可以执行以下命令:

sessionid=`[YOUR CURL COMMAND] 2>&1 | grep -o vmware-api-session-id=[0-9a-z]+ | grep -o [0-9a-z]+`

2&gt;&amp;1 将标准错误发送到标准输出。你需要这个,因为 curl 将会话信息发送到 stderr。

使用您的示例值,这将转化为

sessionid=7ed7b5e95530fd95c1a6d71cf91f7140

现在您可以通过访问变量 ${sessionid} 来访问 cookie 值

如果要导出变量,可以使用:

sessionid=`[YOUR CURL COMMAND] 2>&1 | grep -o vmware-api-session-id=[0-9a-z]+ | grep -o [0-9a-z]+`
export sessionid

或更短

export sessionid=`[YOUR CURL COMMAND] 2>&1 | grep -o vmware-api-session-id=[0-9a-z]+ | grep -o [0-9a-z]+`

【讨论】:

  • 这给了我api-session-id 存储在vmware-api-session-id 变量中
  • @love2code 你是对的!我忘了把 -o 放在 grep 命令中。我也不得不重命名变量。我修复了它并编辑了我的原始帖子!
  • 当我做echo $sessionid / echo ${sessionid}时,这会给出空白输出
  • @love2code 当然! Curl 将会话信息发送到标准输出的标准错误。另一个编辑,现在它应该运行了!
  • 还是空白输出!!
猜你喜欢
  • 1970-01-01
  • 2020-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-13
  • 2014-12-18
相关资源
最近更新 更多