潍坊公司网站建设,企业年金管理办法,网站需求报告怎么写,做网站准备材料某些场合#xff0c;需要在Linux上快速搭建一个TCP的服务器#xff0c;接收客户端的连接#xff0c;返回一些数据。
一般用于测试或者负载不大#xff0c;安全性要求不高的场合#xff0c;达到快速搭建的目的。
本文以客户端通过服务器的3334端口#xff0c;获取服务器…某些场合需要在Linux上快速搭建一个TCP的服务器接收客户端的连接返回一些数据。
一般用于测试或者负载不大安全性要求不高的场合达到快速搭建的目的。
本文以客户端通过服务器的3334端口获取服务器连接的modem网卡蜂窝信号强度为例说明使用方法。 第一步
假设服务器端获取modem网卡的命令及返回值如下 其中对我有用的如下字段
signal quality: 100% (recent)
第二步
随后在服务器下新建getSignalLevel.sh脚本赋予ax权限
#!/bin/sh -while read command;
do##echo got msg:$commandif [[ $command battery* ]]; thenmsgmmcli -m 0 | grep signal quality: | awk -F: {print $2} | awk -F% {print $1}##echo battery levle:$msglevel5;if [ $msg80 ]; thenlevel5elif [ $msg60 ]; thenlevel4elif [ $msg50 ]; thenlevel3elif [ $msg30 ]; thenlevel2elif [ $msg10 ]; thenlevel1elselevel0fiecho battery:$levelelif [[ $command wifirssi* ]]; thenmacsiw dev phy0-ap0 station dump | grep Station | awk -F {print $2}for var in $macsdo##echo $varif [[ $var ! c8:f0:9e:2e:34:40 ]]; thenrssiiw dev phy0-ap0 station get $var | grep signal: | awk -F {print $2}echo wifirssi:$rssibreak 1fidonefidone
然后在服务器端执行如下命令
socat -d -d tcp-l:3334,fork,reuseaddr exec:/etc/getSignalLevel.sh 该shell命令的作用是监听3334端口把收到的数据转发给getSignalLevel脚本处理上述shell脚本中循环读取外部输入如果是指定字符串打头[battery]就转成0-4的int型singal level并作为输出返回给socatsocat收到后通过3334端口返回给tcp client 第三步
起一个端口调试器模拟客户端输入命令获取结果运行截图如下 注意输入的battery后面要带换行符因为shell的read命令是检测回车换行作为字符截止的。 教程结束enjoy