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

     2023-03-08     143

关键词:

【中文标题】如何为应该从 cookie_jar 返回的 cookie 编写 bash bash 脚本【英文标题】:How to write bash bash script for cookie that should returns from cookie_jar 【发布时间】:2021-12-03 03:02:24 【问题描述】:

这里是 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 的 cookies

我写了一些脚本的例子

#!/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 脚本中

新脚本会很有帮助

【问题讨论】:

请用您的脚本生成的(错误的)输出和(正确的)预期输出来更新问题;这两组输出都应与您提供的示例输入相对应 我不知道哪些字符串被认为是 cookienamecookievalue,虽然我可以猜测,但我没有看到任何(从示例输入)接近14 的计数;因此要求您使用错误和正确/预期的输出集更新问题;如果您的代码在没有语法问题的情况下运行,则发布所述运行的输出;如果您不知道正确/预期的输出应该是什么,那么您如何知道您的代码是否生成了正确/错误的输出? 还可以考虑将您的代码(包括 shebang)剪切并粘贴到 shellcheck 并进行建议的编辑 不幸的是,额外的细节(错误/语法消息)只会使水更加混乱......错误消息提到line 28,但您提供的脚本中没有 28 行...... . 错误消息提到了一个以"PMV65SXY9tlvO7... 开头的字符串,但该字符串在您的脚本或示例输入中的任何位置都不存在;请查看How to create a Minimal, Reproducible Example? 并返回并相应地更新问题;特别是您正在运行的实际代码,匹配输入和输出数据 如前所述,将您的代码剪切并粘贴到shellcheck 并进行建议的更改;例如:BIGipS~NP_QA_QF~LQAS0_7011 是一个无效的变量名,所以BIGipS~NP_QA_QF~LQAS0_7011=.... 正在生成您的错误 【参考方案1】:

假设:

唯一的目标是在标准输出上显示 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==

【讨论】:

如何为从 localStorage 返回的值添加空检查 [重复]

】如何为从localStorage返回的值添加空检查[重复]【英文标题】:HowtoaddnullcheckforvaluesreturningfromlocalStorage[duplicate]【发布时间】:2021-02-0816:52:59【问题描述】:我得到了一个localStorage值constmarks=JSON.parse(localstorage.getItem(\'mark\'))现在我... 查看详情

如何为用户返回每月最大日期

】如何为用户返回每月最大日期【英文标题】:Howtoreturnmaxdatepermonthforuser【发布时间】:2021-05-2109:47:55【问题描述】:我有下表:我想为每个用户返回每个月的最大阈值日期,所以我的最终结果应该是这样的:我想使用分析函数... 查看详情

如何为返回多种可能数据类型的函数记录 :rtype:? [复制]

】如何为返回多种可能数据类型的函数记录:rtype:?[复制]【英文标题】:HowdoIdocument:rtype:forafunctionthatreturnsmultiplepossibledatatypes?[duplicate]【发布时间】:2016-09-3022:34:31【问题描述】:在Python文档字符串中,应该如何记录:rtype:以获... 查看详情

如何为表中的两列返回相同的值

】如何为表中的两列返回相同的值【英文标题】:Howtoreturnsamevaluefortwocolumnsinatable【发布时间】:2021-04-2914:31:02【问题描述】:我用hive试过这个。有一个带有列的表:idkey123123345345123123条件是id和key要相同的值和相同的长度,key... 查看详情

如何为迭代器返回“null”值?

】如何为迭代器返回“null”值?【英文标题】:Howtoreturna"null"valueforaniterator?【发布时间】:2019-09-1414:04:34【问题描述】:我想编写一个函数,它将两个向量迭代器作为输入,然后根据某些条件返回其中一个迭代器。如果... 查看详情

我应该如何为精灵表中的精灵分配名称?

】我应该如何为精灵表中的精灵分配名称?【英文标题】:HowshouldIbeassigningnamestospritesfromaspritesheet?【发布时间】:2019-10-1717:30:47【问题描述】:我知道如何加载精灵表、剪辑图像并返回这些图像的列表,但我喜欢按名称而不是... 查看详情

如何为 UITapGestureRecognizer 从不同的 UIView 对象设置选择器

】如何为UITapGestureRecognizer从不同的UIView对象设置选择器【英文标题】:howtosetupaselectorfromadifferentUIViewobjectforUITapGestureRecognizer【发布时间】:2015-06-2905:51:30【问题描述】:这应该是直截了当的,但我遇到了一些问题。我有一个UIVi... 查看详情

我应该如何为共享项目创建管理 github 存储库?

】我应该如何为共享项目创建管理github存储库?【英文标题】:HowshouldIcreateanmanageagithubrepositoryforasharedproject?【发布时间】:2012-02-2312:55:33【问题描述】:我想为一个开源项目创建一个新的github存储库。我不想在我的个人帐户下... 查看详情

我应该如何为 Firebase 身份验证创建新的联合身份提供程序

】我应该如何为Firebase身份验证创建新的联合身份提供程序【英文标题】:HowshouldIcreateanewFederatedIdentityProviderforFirebaseAuthentication【发布时间】:2018-05-0501:48:42【问题描述】:我想将PayPal登录功能集成到Android应用程序中,以便向Fi... 查看详情

如何为同一视图中的每个 UIImageView 分配从相机拍摄的照片?

】如何为同一视图中的每个UIImageView分配从相机拍摄的照片?【英文标题】:howIcanassignforeachUIImageViewinthesameviewapicturetakenfromcamera?【发布时间】:2013-11-1016:12:18【问题描述】:我在同一个视图中有两个UIImageView。对于每个imageView,... 查看详情

如何为Android应用程序统一访问手机后退按钮

】如何为Android应用程序统一访问手机后退按钮【英文标题】:Howtoaccessmobilesbackbuttoninunityforandroidapplications【发布时间】:2016-10-0903:14:22【问题描述】:我正在构建一个带有菜单场景和许多其他场景的VR应用程序。当用户点击手机... 查看详情

如何为图像选择器选择多个 (2-5) 图像然后作为图像视图返回?

】如何为图像选择器选择多个(2-5)图像然后作为图像视图返回?【英文标题】:Howdoiselectmultiple(2-5)imagesforanImagepickerthenreturnasimageview?【发布时间】:2014-10-0816:36:44【问题描述】:嘿,所以我想有一个按钮,当按下时允许用户从他... 查看详情

我应该如何为具有两个范围条件的查询建立索引?

】我应该如何为具有两个范围条件的查询建立索引?【英文标题】:HowshouldIgoaboutindexingforaquerywithtworangeconditions?【发布时间】:2018-07-3105:17:30【问题描述】:系列的下一篇……CREATETABLE`Alarms`(`AlarmId`INT(10)UNSIGNEDNOTNULLAUTO_INCREMENT,`De... 查看详情

如何为 IME 的结果启动 Activity

】如何为IME的结果启动Activity【英文标题】:HowtostartActivityforresultfromIME【发布时间】:2012-11-1804:00:26【问题描述】:我正在开发一个应用程序,它应该向启动意图的应用程序返回一些文本。但启动Intent的应用是IME/软键盘。所以St... 查看详情

如何为返回列表的方法创建适当的单元测试?

】如何为返回列表的方法创建适当的单元测试?【英文标题】:Howdoyoucreateaproperunittestforamethodthatreturnsalist?【发布时间】:2013-07-0823:13:28【问题描述】:我有这个方法:publicDataSourceResultGetProjectBySpec(intprojectId,intseasonId,intepisodeId)us... 查看详情

使用 lodash .groupBy。如何为分组输出添加自己的键?

】使用lodash.groupBy。如何为分组输出添加自己的键?【英文标题】:usinglodash.groupBy.howtoaddyourownkeysforgroupedoutput?【发布时间】:2014-06-2908:03:03【问题描述】:我有这个从API返回的示例数据。我正在使用Lodash的_.groupBy将数据转换为... 查看详情

如何为丢失的资源建模权限?

】如何为丢失的资源建模权限?【英文标题】:Howtomodelpermissionsformissingresources?【发布时间】:2014-10-2711:45:13【问题描述】:我有以下REST资源:/companies返回公司列表/companies/id返回公司状态/companies/id/departments返回公司所有部门/em... 查看详情

如何为 HTTPS 配置 503 状态?

】如何为HTTPS配置503状态?【英文标题】:Howtoconfigure503statusforHTTPS?【发布时间】:2017-10-0409:02:04【问题描述】:我为我的站点设置了一个维护页面,因此当用户访问时,他们会返回503状态并重定向到自定义维护.php页面。所以它... 查看详情