从CURL保存的cookie文件中读取会话ID

时间:2014-09-22 05:59:04

标签: shell curl cookies

我已使用CURL命令将cookie文件保存到磁盘。现在我想从cookie文件中读取会话ID,我想将其发送到另一个CURL请求。我该怎么做呢?

Cookie文件如下所示。

# Netscape HTTP Cookie File
# http://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

#HttpOnly_localhost FALSE   /HazelcastSessClus/ FALSE   0   JSESSIONID  C08191738299B771AB28EB49A18124EC

4 个答案:

答案 0 :(得分:4)

会话ID是Cookie文件中的最后一个字符串。 我暂时做了什么:

SESSION_ID=$(cat cookies.txt | tr -d '\n' | awk -F/ '{print $NF}')
SESSION_ID=$(echo "$SESSION_ID" | awk '{ print $(NF) }')

我知道,这不是一种正确的方法。

答案 1 :(得分:0)

不知道cookie文件的内容,这是一般方法:

awk '/regex identifying the line you want/ { print $field_you_want }' cookie.txt

例如:

awk '/^CookieId:/ { print $2 }' cookie.txt

(也就是说,作为一个几乎全职完成shell开发的人,对于这类任务来说,使用Python,Ruby或其他语言很可能会更好(对于你和任何必须维护软件的人) Java。它们具有更复杂和程序员友好的字符串处理。例如,quoting是强制性的,简单的,分割和连接字符串看起来不像线路噪声,等同于set -o errexit总是启用,他们有实际的异常处理。)

答案 2 :(得分:0)

使用awk

awk -v f='JSESSIONID' '$0 ~ f {for (i=2; i<=NF; i++) if ($(i-1)==f) {print $i; exit}}' file
C08191738299B771AB28EB49A18124EC

答案 3 :(得分:0)

这也可以

SESSION_ID=$(tail -1 cookies.txt | awk -F' ' '{print $NF}')