2014-09-22 3 views
1

CURL 명령을 사용하여 쿠키 파일을 디스크에 저장했습니다. 이제 쿠키 파일에서 세션 ID를 읽고 다른 CURL 요청으로 보내려고합니다. 어떻게해야합니까?CURL에 저장된 쿠키 파일에서 세션 ID 읽기

쿠키 파일은 다음과 같습니다. 예를 들어

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

:

# 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

당신이 저장된 쿠키 파일과 예상 출력의 샘플을 보여줄 수 있습니까? – anubhava

+0

질문을 편집하여 의견을 올리면 의견을 읽는 것이 어려워집니다. – anubhava

답변

0

여기에 일반적인 접근 방식의 쿠키 파일의 내용을 알고하지

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

(즉, 실질적으로 쉘 개발을했다 사람 사람으로 말했다 풀 타임으로, 이런 종류의 작업을 위해서는 Python, Ruby 또는 Java와 같은 다른 언어를 사용하는 것이 더 좋을 것입니다 (소프트웨어를 유지 관리해야하는 사람과 누구에게나). 훨씬 더 정교합니다 d 및 프로그래머에게 친숙한 문자열 처리. 예를 들어, quoting은 필수이며 단순하며 분할 및 결합 문자열은 라인 노이즈와 유사하지 않으며 항상 set -o errexit에 해당하며 실제 예외 처리가 있습니다.

2

세션 ID는 쿠키의 마지막 문자열입니다 파일. 나는 당분간 무슨 짓을 :

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

이것은 올바른 접근하지, 난 알고있다.

0

awk 사용 :

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