如何为应该 returns 来自 cookie_jar 的 cookie 编写 bash bash 脚本
How to write bash bash script for cookie that should returns from cookie_jar
这是bash版本
GNU bash,版本 5.0.17
这里是猫-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 应该显示在一行中
告诉我如何编写上面的脚本来获取带有 cookiename 的 cookivalue
我已经写了一些脚本的例子
#!/bin/bash
TS21xx72R2="$(grep -m 1 "TS21xx72R2" cookie_jar | awk -F' ' '{print }')"
BUILD0="$(grep -m 1 "BUILD0" cookie_jar | awk -F' ' '{print }')"
TS01dda1cb="$(grep -m 1 "TS01dda1cb" cookie_jar | awk -F' ' '{print }')"
BIGipS~NP_QA_QF~LQAS0_7011="$(grep -m 1 "BIGipS~NP_QA_QF~LQAS0_7011" cookie_jar | awk -F' ' '{print }')"
UserxxxId="$(grep -m 1 "UserxxxId" cookie_jar | awk -F' ' '{print }')"
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 脚本中
新脚本会有很大帮助
假设:
- 唯一的 objective 是在标准输出上显示 cookie 值,其中...
cookie value
是包含字符串 TRUE
或 FALSE
的任何行中的最后一个条目
- 注意:如果有明确的输出顺序(对我来说)并不明显
一个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 name/value 对存储在关联数组中,例如:
unset cookies
declare -A cookies
while read -r cname cvalue
do
cookies[${cname}]="${cvalue}"
done < <(awk '/TRUE|FALSE/ {print $(NF-1),$NF}' cookie_jar)
这将生成以下数组 structure/contents:
$ 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==
这是bash版本 GNU bash,版本 5.0.17
这里是猫-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 应该显示在一行中
告诉我如何编写上面的脚本来获取带有 cookiename 的 cookivalue
我已经写了一些脚本的例子
#!/bin/bash
TS21xx72R2="$(grep -m 1 "TS21xx72R2" cookie_jar | awk -F' ' '{print }')"
BUILD0="$(grep -m 1 "BUILD0" cookie_jar | awk -F' ' '{print }')"
TS01dda1cb="$(grep -m 1 "TS01dda1cb" cookie_jar | awk -F' ' '{print }')"
BIGipS~NP_QA_QF~LQAS0_7011="$(grep -m 1 "BIGipS~NP_QA_QF~LQAS0_7011" cookie_jar | awk -F' ' '{print }')"
UserxxxId="$(grep -m 1 "UserxxxId" cookie_jar | awk -F' ' '{print }')"
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 脚本中
新脚本会有很大帮助
假设:
- 唯一的 objective 是在标准输出上显示 cookie 值,其中...
cookie value
是包含字符串TRUE
或FALSE
的任何行中的最后一个条目
- 注意:如果有明确的输出顺序(对我来说)并不明显
一个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 name/value 对存储在关联数组中,例如:
unset cookies
declare -A cookies
while read -r cname cvalue
do
cookies[${cname}]="${cvalue}"
done < <(awk '/TRUE|FALSE/ {print $(NF-1),$NF}' cookie_jar)
这将生成以下数组 structure/contents:
$ 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==