我已使用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
答案 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}')