如何为cookie编写bash脚本,该脚本应该从cookie_jar返回



这是bash版本GNU bash, version 5.0.17

这是cat -A cookie_jar

ITRUE^I/^IFALSE^I0^ITS01e14722^I01786344cc8175e2661caaa80
ITRUE^I/^ITRUE^I0^IUserFirmId^I1$
IFALSE^I/^ITRUE^I0^IPF^IfqTGnM9LIjxqrsn
IFALSE^I/^ITRUE^I0^BIGipS~NP_QA_QF~LQAS0_7011   !qaE44xdbX2OjQtdL9Ez/f7vw2P/dxPd2WvZ9xQ==

我有一个cookie_jar文件下面是cookie_jar文件的内容

# Netscape HTTP Cookie File
# https://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.
.cn.com TRUE    /   FALSE   0   TS21xx72R2  01786344cc36119d024ed021fc31dad790cc200981f044
.cn.com TRUE    /   TRUE    0   UserxxxId   1we9edfauoefklare
.cn.com TRUE    /   TRUE    0   BUILD0  1teji23jksdfas
#HttpOnly_cn.com    FALSE   /   TRUE    0   BIGipS~NP_QA_QF~LQAS0_7011  !qaE44xdbX2OjQtdL9Ez/f7vw2P/dxPd2WvZ9xQ==
.cn.com TRUE    /   FALSE   0   TS01dda1cb  01786344cc027084e046d692cedc2bbedc95e2512d8557aedca2

我想上面所有的cookiename=cookievalue应该在一个脚本中,所有的cookievalue应该显示在一行

告诉我如何写一个脚本上面的cookivalue与那里cookiename

我已经写了一些脚本的例子

#!/bin/bash
TS21xx72R2="$(grep -m 1 "TS21xx72R2" cookie_jar | awk -F' ' '{print $7}')" 
BUILD0="$(grep -m 1 "BUILD0" cookie_jar | awk -F' ' '{print $7}')" 
TS01dda1cb="$(grep -m 1 "TS01dda1cb" cookie_jar | awk -F' ' '{print $7}')" 
BIGipS~NP_QA_QF~LQAS0_7011="$(grep -m 1 "BIGipS~NP_QA_QF~LQAS0_7011" cookie_jar | awk -F' ' '{print $7}')" 
UserxxxId="$(grep -m 1 "UserxxxId" cookie_jar | awk -F' ' '{print $7}')"
echo $TS21xx72R2 $UserxxxId $TS01dda1cb $BIGipS~NP_QA_QF~LQAS0_7011 $BUILD0

下面是正确的输出

/cookie.sh: BIGipS~NP_QA_QF~LQAS0_7011  !qaE44xdbX2OjQtdL9Ez/f7vw2P/dxPd2WvZ9xQ==: No such file or directory
1teji23jksdfas 1we9edfauoefklare 01786344cc027084e046d692cedc2bbedc95e2512d8557aedca2 01786344cc36119d024ed021fc31dad790cc200981f044 ~NP_QA_QF~LOGINQAS0_7011

注意:- BIGipS~NP_QA_QF~LQAS0_7011(当我执行脚本时,我得到了错误"没有这样的文件或目录"),但每个字都是正确的在脚本和我的文件

输出是正确的,但唯一需要的是它的格式应该在shell脚本

New Script将会很有帮助

假设:

  • 唯一的目标是在标准输出中显示cookie值
  • cookie value是任何包含字符串TRUEFALSE
  • 的行中的最后一项。
  • 注意:它不明显(对我来说),如果有一个显式的输出顺序

一个awk想法:

awk '
/TRUE|FALSE/ { printf "%s%s",pfx,$NF; pfx=" " }
END          { print "n" }
' cookie_jar

由此产生:

01786344cc36119d024ed021fc31dad790cc200981f044 1we9edfauoefklare 1teji23jksdfas !qaE44xdbX2OjQtdL9Ez/f7vw2P/dxPd2WvZ9xQ== 01786344cc027084e046d692cedc2bbedc95e2512d8557aedca2

如果OP需要在脚本中稍后访问这些,那么我假设cookie名称也需要在这种情况下,我建议将cookie名称/值对存储在关联数组中,例如:

unset cookies
declare -A cookies
while read -r cname cvalue
do
cookies[${cname}]="${cvalue}"
done < <(awk '/TRUE|FALSE/ {print $(NF-1),$NF}' cookie_jar)

生成如下数组结构/内容:

$ typeset -p cookies
declare -A cookies=([BUILD0]="1teji23jksdfas" [TS01dda1cb]="01786344cc027084e046d692cedc2bbedc95e2512d8557aedca2" [TS21xx72R2]="01786344cc36119d024ed021fc31dad790cc200981f044" [UserxxxId]="1we9edfauoefklare" [BIGipS~NP_QA_QF~LQAS0_7011]="!qaE44xdbX2OjQtdL9Ez/f7vw2P/dxPd2WvZ9xQ==" )

OP可以根据需要访问数组项,例如:

for i in "${!cookies[@]}"
do
echo "name = ${i} / value = ${cookies[${i}]}"
done

生成:

name = BUILD0 / value = 1teji23jksdfas
name = TS01dda1cb / value = 01786344cc027084e046d692cedc2bbedc95e2512d8557aedca2
name = TS21xx72R2 / value = 01786344cc36119d024ed021fc31dad790cc200981f044
name = UserxxxId / value = 1we9edfauoefklare
name = BIGipS~NP_QA_QF~LQAS0_7011 / value = !qaE44xdbX2OjQtdL9Ez/f7vw2P/dxPd2WvZ9xQ==

最新更新