小编Joe*_*Joe的帖子

如何在使用 wget 的情况下获得 401 的 http 服务器响应?

我需要在各种情况下测试我的 http 服务器响应,即使身份验证失败也是如此。如果身份验证失败,我的服务器将返回401 Unauthorized一个响应主体,其中包含简单的Unauthorized(或者可能是其他一些详细消息)。

使用 eg curlor httpie,我得到了那些响应体,以防万一401

$ curl http://10.5.1.1/bla 
Unauthorized
$ curl http://10.5.1.1/bla --digest --user joe:wrong 
Unauthorized
$ http http://10.5.1.1/bla -b
Unauthorized
$ http http://10.5.1.1/bla -b --auth-type digest --auth joe:wrong
Unauthorized
Run Code Online (Sandbox Code Playgroud)

但是当使用 wget 尝试这个时,我没有输出:

$ wget http://10.5.1.1/bla -q -O /dev/stdout
$ wget http://10.5.1.1/bla -q -O /dev/stdout --user joe --password wrong
Run Code Online (Sandbox Code Playgroud)

在这种情况下,wget 返回退出代码 6,但我需要检查响应消息。

这是使用 httpie 捕获的完整流量的转储:

$ http http://10.5.1.1/bla --print hbHB
GET /bla HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: …
Run Code Online (Sandbox Code Playgroud)

wget http

7
推荐指数
2
解决办法
9503
查看次数

如何使用现有的 tcp 连接从 bash 脚本访问 http 服务器?

在 bash shell scipt 中,我使用了几个命令行工具(wgetcurlhttpie)来测试我的 http 服务器。

当使用例如 curl 调用 GET 请求时,我看到一个 tcp 连接被打开到我的服务器并在 http 通信完成后立即关闭。

$ curl http://10.5.1.1/favicon.ico -o /dev/null 
Run Code Online (Sandbox Code Playgroud)

为了更好地测试我的服务器的保持活动行为,我希望在多个 http 请求/响应周期内保持 tcp 连接打开。

我可以像这样直接从 bash 执行糟糕的 http 请求:

exec 3<>/dev/tcp/10.5.1.1/80
printf "GET /\r\n\r\n" >&3
while IFS= read -r -u3 -t2 line || [[ -n "$line" ]]; do echo "$line"; done
exec 3>&-
exec 3<&-
Run Code Online (Sandbox Code Playgroud)

但是因为我的测试通信要复杂得多(包括身份验证等),我不想完全自己用 bash 或其他脚本语言编写代码,而是想使用现有工具。现在的想法是首先在 bash 中打开一个 tcp 套接字,然后强制某些命令行工具使用此连接而不是打开自己的套接字。也许是这样;

exec 3<>/dev/tcp/10.5.1.1/80
curl http://10.5.1.1/message.txt --use-existing-socket-fd=3
# ... do some other …
Run Code Online (Sandbox Code Playgroud)

bash wget tcp http curl

4
推荐指数
1
解决办法
5662
查看次数

如何在没有root权限的情况下使用虚拟串口?

背景:我想使用 这个 Wifi-to-Serial 适配器 通过 在 Kubuntu 16.04(64 位)上运行的Stellarium来控制望远镜 。

我使用socat以下命令行创建了一个虚拟 com 端口:

$ sudo socat pty,link=/dev/virtualcom0,raw tcp:10.0.0.1:4030
Run Code Online (Sandbox Code Playgroud)

我在这里看到了新设备:

$ ls -l /dev/virtualcom0 
lrwxrwxrwx 1 root root 10 2017-07-03 09:05 virtualcom0 -> /dev/pts/6
$ ls -l /dev/pts/6
crw--w---- 1 root tty 136, 6 2017-07-03 09:05 /dev/pts/6
Run Code Online (Sandbox Code Playgroud)

只要我以 root 权限运行,就尝试使用/dev/virtualcom0eg withpicocomm工作picosomm。但是当我尝试使用具有标准用户权限的端口时,出现错误:

$ picocom /dev/virtualcom0 --baud 9600 --imap lfcrlf
FATAL: cannot open /dev/virtualcom0: Permission denied
Run Code Online (Sandbox Code Playgroud)

知道如何使用标准用户权限访问虚拟 com 端口,也许为此定义一个特殊的 udev 规则?

编辑 #1 …

udev serial-port kubuntu socat

2
推荐指数
2
解决办法
7538
查看次数

标签 统计

http ×2

wget ×2

bash ×1

curl ×1

kubuntu ×1

serial-port ×1

socat ×1

tcp ×1

udev ×1