Bac*_*alo 27 shell-script socket tcp-ip
出于测试目的,我需要创建一个 shell 脚本,该脚本与远程 IP>Port 连接并发送一个简单的文本 TCPIP 套接字消息。
Kus*_*nda 34
使用nc
( netcat
)。
服务器:
$ nc -l localhost 3000
Run Code Online (Sandbox Code Playgroud)
客户:
$ nc localhost 3000
Run Code Online (Sandbox Code Playgroud)
服务器和客户端都将读取和写入标准输出/输入。
当服务器和客户端在同一台机器上时,这将起作用。否则更改localhost
为服务器的外部名称。
更有趣的是,一个“服务器”,如果你连接到它并发送它d
,它会给你一天中的时间,如果你发送它就会退出q
:
服务器(在bash
):
#!/bin/bash
coproc nc -l localhost 3000
while read -r cmd; do
case $cmd in
d) date ;;
q) break ;;
*) echo 'What?'
esac
done <&"${COPROC[0]}" >&"${COPROC[1]}"
kill "$COPROC_PID"
Run Code Online (Sandbox Code Playgroud)
客户会话:
$ nc 本地主机 3000 d 欧洲中部时间 2017 年 1 月 12 日星期四 18:04:21 你好? 什么? q
(服务器在 之后退出q
,但在您按下 之前客户端不会检测到它已经消失Enter)。
Val*_*yKr 16
一般来说,建议使用netcat
是更好的方法。
但是在bash
andksh
你也可以这样做:
exec 3<>/dev/tcp/hostname/port
echo "request" 1>&3
response="$(cat <&3)"
Run Code Online (Sandbox Code Playgroud)
尝试 netcat(例如 nc )
echo GET / HTTP/1.0 | nc 0 80
HTTP/1.1 400 Bad Request
Date: Thu, 12 Jan 2017 13:44:23 GMT
Server: Apache/2.4.18 (Ubuntu)
Content-Length: 311
Connection: close
Content-Type: text/html; charset=iso-8859-1
Run Code Online (Sandbox Code Playgroud)
echo GET / HTTP/1.0
)发送到我的本地 http 服务器 归档时间: |
|
查看次数: |
91568 次 |
最近记录: |