当前位置:首页 » 网页前端 » shell脚本发socket报文
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

shell脚本发socket报文

发布时间: 2023-01-22 13:38:38

‘壹’ Socket通信中套接字和shell是什么关系呀套接字是实现应用程序和内核治疗沟通的,而sh

socket和shell基本没啥关系,socket可以是由os提供的api,而shell可以算是一个应用程序,提供人机交互功能,本质上也是使用的os的api

‘贰’ shell启动socket

nc -l localhost 3000 server
nc localhost 3000 client

‘叁’ c语言报文转发脚本怎么写

简单的Socket协议脚本的编写方法。

1.socket协议介绍

Socket协议有万能协议之称,很多系统底层都是用的socket协议,用处十分广泛。

1.1 Socket通讯方式说明

与socket通讯有两种方式,一种是建立长连接,建立后不停的发送,接收;另一种是建立短连接,即建立连接发送报文,接收报文关闭连接

1.2 Socket协议发送的buf类型介绍

Send buffer类型分为字符串和xml类型

1.3 Socket协议脚本编写前提:

与项目组沟通,确认是否是socket协议,由项目组提供服务器IP和端口号还有socket协议交易的报文发送及接收报文对,及交易接口文档,了解清楚报文的数据长度,参数化字段,结构,代表什么等,了解清楚后进行socket协议脚本的开发。

1.4、Socket协议脚本函数说明及实例:

1)名称 lrs_create_socket();

创建socket连接,添加IP和端口号,如果创建成功返回值为0,反之则返回为非0数值。(对于长连接,建立socket连接放在vuser_init函数中,短连接放在Action中即可) 实例: lrs_create_socket("socket0","TCP","RemoteHost=180.170.150.230:7700", LrsLastArg);

2)名称 lrs_send();

发送socket请求消息,取缓冲区buf0的报文并发送。

实例: lrs_send("socket0","buf1",LrsLastArg);

3)名称 lrs_receive();

接收socket的响应报文,放置buf1中。

实例:lrs_receive("socket0","buf2",LrsLastArg);

4)名称 lrs_get_last_received_buffer();

获取最后收到的buffer和大小,其中将最后收到的buffer的值赋给RecvBuf变量,将大小赋值给RecvLen。

实例: lrs_get_last_received_buffer("socket0",&recvBuf,&recvLen);

5)名称 lrs_free_buffer();

为防止内存泄露,释放内存空间。

实例: lrs_free_buffer(recvBuf);

6)名称 lrs_close_socket();

关闭Socket连接,(对于长连接,关闭socket连接应放在vuser_end函数中)

实例: lrs_close_socket("socket0");

其他常用的Socket函数:

lrs_set_send_buffer("socket0", sSendPkg, iLenOfPkg );//指定要发送的socket信息

lrs_get_buffer_by_name("buf0", sSendPkg, iLenOfPkg);// 获取收到的buffer和大小

lrs_length_send("socket0","buf0",1,"Size=4","Encoding=1",LrsLastArg);

关联函数:

lrs_save_param_ex("socket0","received","",151,7,"ascii","response");//取指定位置字符串保存到变量,以便判断事务是否成功

lrs_save_searched_string();//在指定位置搜索字符串,将出现的字符串报错到参数中

超时函数

lrs_set_connect_timeout();//设置连接超时时间

lrs_set_recv_timeout();//设置服务器响应超时时间

lrs_set_recv_timeout2();//设置接收

‘肆’ xshell发送报文返回的报文是那些

转载于:https://www.cnblogs.com/144823836yj/p/10549430.html。

_グ治_P报文结构 万次阅读 2017-06-30 15:45:17 使用tcpmp查看IP数据报 在linux中使用tcpmp抓取数本地环路上的数据包,

‘伍’ 在Shell中打开Server Socket

工作中的一个需求 需要为一个现存的功能 提供Web访问界面 由于这个功能是用Shell编写的 首先想到的解决方案是通过在Shell中开启一个Server Socket 来实现一个简单的HTTP服务器 提供给浏览器访问 我并不需要实现所有的HTTP协议 只要能够处理特定的GET请求即可 这个简单的HTTP服务器将会从浏览器发送的GET请求中截取指定参数 然后通过系统调用执行现存的Shell脚本 在网上查找了一下Shell Socket的相关信息 发现实现技术还挺多 摘录了两种方法(为简明起见 所列代码做了简化) 记录于此以备忘

Perl

use strict;

use IO::Socket;

my $server_socket = IO::Socket::INET >new

(

LocalPort =>

Listen => SOMAXCONN

Proto => tcp

Reuse =>

Timeout =>

) or die SERVER SOCKET ERROR!n ;

while( ) {

next unless my $connection = $server_socket >accept;

my $url = get_url($connection);

if ($url =~ /^ */(?param=( *))?$/) {

if ($ ) {

system(( myshell $ )); #myshell是现有功能的shell程序

}

send_page($connection);

} else {

send_ ($connection);

}

$connection >close;

}

sub send_ {

my $sock = shift;

print $sock HTTP/ NOT FOUND NOT FOUND ;

}

sub send_page {

my $sock = shift;

my $ = HTTP/ OK Content Type: text/; charset=UTF

<><head><meta equiv= Content Type content= text/; charset=UTF />

<title></title></head><body><form method= get ><input type= text name= param />

<input type= submit value= Submit /></form></body></> ;

print $sock $;

}

sub get_url {

my $sock = shift;

my $line = ;

while(($line = <$sock>) ne )

{

if ($line =~ /GET ([^ ]+) /) {

return $ ;

}

}

return ;

}

保存脚本为appserver pl 以 perl appserver pl & 启动 然后用浏览器访问: / //<ip>: /即可 由于Linux发行版上一般都自带Perl 这个方法的适用性还是比较普遍 不过需要熟悉一点Perl语法

nc命令

while(/bin/true)

do

nc l p c $(cat /path/to/myshell) #myshell从标准输入读取请求 将响应打印到标准输出

done

这种方式可以完全通过shell来实现 相对简洁 但要求nc支持 c选项 且myshell必须是sh语法(不能使用bash) 如果把shell脚本换成二进制程序 可以使用 e选项 不过有些Linux发行版上默认的nc不支持 c和 e选项(在ubuntu desktop和RHEL上就不行 但在ubuntu server上可以)

lishixin/Article/program/Java/hx/201311/26300

‘陆’ linux下socket客户端怎么分包发送数据,以及报文,

socket系列的函数都是系统调用,你只要指定要传输的数据、对端IP、端口,socket接口会陷入内核,通过TCP/IP协议栈对你的数据进行封装以及路由转发。