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

问题描述:

我使用CURL命令将cookie文件保存到磁盘。现在我想从cookie文件读取会话ID,我想将它发送给另一个CURL请求。我该如何解决它?从CURL保存的cookie文件中读取会话ID

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 
+1

你能告诉保存的Cookie文件和你的预期产出的样本? – anubhava 2014-09-22 06:05:18

+0

通过编辑您的问题发布它,否则很难从评论中阅读。 – anubhava 2014-09-22 08:15:02

不知道的cookie文件中的内容,这里有一个通用的方法:

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

例如:

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

(也就是说,谁的人实际上已经做了壳牌开发全职,对于这种任务来说,它很可能会更好(对于你和任何需要维护软件的人)来使用Python,Ruby或Java等不同的语言,它们更加复杂d和程序员友好的字符串处理。例如,quoting是强制性的,并且简单,拆分和连接字符串看起来不像线路噪声,总是启用等效于set -o errexit,并且它们具有实际的异常处理。)

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

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

这不是一个正确的做法,我知道。

使用awk

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