首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否将备用输出保存到Bash中的变量,而不是主输出?

是否将备用输出保存到Bash中的变量,而不是主输出?
EN

Stack Overflow用户
提问于 2021-09-25 20:35:36
回答 1查看 36关注 0票数 0

这里是Linux新手,所以请耐心听我说。

我正在为学校(在CentOS 8虚拟机上)编写一个Bash脚本,并且我正在尝试将Siege (Load Tester)的输出保存到一个变量中,这样我就可以比较这些值。

这就是我遇到的问题:“服务器现在被围困”和“解除服务器围困……”之间的HTTP线路。是存储在变量中的内容,而不是“解除对服务器的围攻...”之后的漂亮的小摘要。

代码语言:javascript
复制
[root@prodserver siege-4.1.1]# siege -c 1 -t 1s 192.168.1.3
** SIEGE 4.1.1
** Preparing 1 concurrent users for battle.
The server is now under siege...
HTTP/1.1 200     0.00 secs:    6707 bytes ==> GET  /
HTTP/1.1 200     0.01 secs:    2008 bytes ==> GET  /assets/images/taste_bug.gif
HTTP/1.1 200     0.00 secs:    2579 bytes ==> GET  /assets/images/backpack_bug.gif
HTTP/1.1 200     0.00 secs:    2279 bytes ==> GET  /assets/images/desert_bug.gif
HTTP/1.1 200     0.00 secs:    1653 bytes ==> GET  /assets/images/calm_bug.gif
HTTP/1.1 200     0.00 secs:    1251 bytes ==> GET  /assets/javascripts/menus.js
...Shortened for readability...
HTTP/1.1 200     0.00 secs:    1251 bytes ==> GET  /assets/javascripts/menus.js
HTTP/1.1 200     0.00 secs:    2579 bytes ==> GET  /assets/images/backpack_bug.gif
HTTP/1.1 200     0.00 secs:    2279 bytes ==> GET  /assets/images/desert_bug.gif
HTTP/1.1 200     0.00 secs:    1653 bytes ==> GET  /assets/images/calm_bug.gif
HTTP/1.1 200     0.00 secs:    1251 bytes ==> GET  /assets/javascripts/menus.js
HTTP/1.1 200     0.01 secs:    2008 bytes ==> GET  /assets/images/taste_bug.gif
HTTP/1.1 200     0.00 secs:    2579 bytes ==> GET  /assets/images/backpack_bug.gif
HTTP/1.1 200     0.00 secs:    2279 bytes ==> GET  /assets/images/desert_bug.gif
HTTP/1.1 200     0.00 secs:    1653 bytes ==> GET  /assets/images/calm_bug.gif

Lifting the server siege...
Transactions:                149 hits
Availability:             100.00 %
Elapsed time:               0.22 secs
Data transferred:           3.95 MB
Response time:              0.00 secs
Transaction rate:         677.27 trans/sec
Throughput:            17.97 MB/sec
Concurrency:                1.00
Successful transactions:         149
Failed transactions:               0
Longest transaction:            0.01
Shortest transaction:           0.00

目前,我正在尝试将变量存储在bash中:

代码语言:javascript
复制
SIEGE="$(siege -c $1 -t $2 [ip])"

如前所述,当我回显$SIEGE时,它发现变量存储了所有HTTP行,而不是“解除封锁...”之后的摘要。

我的问题是如何将该摘要存储在变量中。

EN

回答 1

Stack Overflow用户

发布于 2021-09-25 22:50:24

备注:我不熟悉siege,所以我不知道是否所有的输出都会发送到stdout,或者是否会有一些输出发送到stderr

假设所有siege输出都将发送到stdout ...根据需要忽略哪些行,有几个想法:

代码语言:javascript
复制
# grab lines from `^Lifting` to end of output:

SIEGE="$(siege -c $1 -t $2 [ip] | sed -n '/^Lifting/,$ p')"

# ignore all lines starting with `^HTTP`

SIEGE="$(siege -c $1 -t $2 [ip] | grep -v '^HTTP')"

如果结果是将一些输出发送到stderr,请更改siege调用以将stderr重定向到stdout

代码语言:javascript
复制
# from

siege -c $1 -t $2 [ip]

# to

siege -c $1 -t $2 [ip] 2>&1

虽然我可能会选择将所有输出保存到一个文件中,然后根据需要解析该文件,但ymmv ...

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69329823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档