當前位置:首頁 » 網頁前端 » 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協議棧對你的數據進行封裝以及路由轉發。