Shifu高级功能:命令行中间件之HTTP 到 PowerShell 的中间件
创始人
2025-05-29 06:45:42
0

简介

为了让你的设备接入Shifu。我们用Go编写了一个简单的HTTP到 PowerShell 的中间件,供开发者使用。

设计

这个HTTP到PowerShell的中间件是这样设计的:

  • 中间件在主机上暴露了一个HTTP接口
  • 该HTTP接口用于转发来自外部的请求到 Windows 主机
  • 中间件将代理结果和执行状态返回给请求者

功能

将HTTP请求体代理到PowerShell shell并执行

接受HTTP请求体中的一切内容,并在规定超时时间内执行。

构建中间件

操作

386

GOOS=windows GOARCH=386 go build -a -o http2powershell.exe cmd/httpstub/powershellstub/powershellstub.go

amd64

GOOS=windows GOARCH=amd64 go build -a -o http2powershell.exe cmd/httpstub/powershellstub/powershellstub.go

使用方法

该可执行文件需要配置以下环境变量:

  • EDGEDEVICE_DRIVER_HTTP_PORT (可选)
    • 驱动程序容器的HTTP服务器端口,默认为11112
  • EDGEDEVICE_DRIVER_EXEC_TIMEOUT_SECOND (可选)
    • 执行指令的超时时间,可以通过在命令前面加上timeout 来实现。

对于Windows主机的操作:

如果要运行中间件,请双击http2powershell.exe,默认情况下,中间件会在0.0.0.0上监听11112端口。

对于Shifu的操作:

使用/examples/simple-powershell-stub中提供的样本部署文件。

shifu的根目录下发布:

kubectl apply -f driver_util/http-to-powershell-stub/examples/Simple-powershell-stub

代理命令

使用curlWindows主机发布请求:

root@nginx:/# curl "edgedevice-powershell/issue_cmd?flags_no_parameter=ls,C:"Directory: C:\
Mode                 LastWriteTime         Length Name                                                   
----                 -------------         ------ ----                                                   
d-----          6/5/2021   8:10 PM                PerfLogs                                               
d-r---          6/9/2022   2:48 PM                Program Files                                          
d-r---         4/29/2022   8:02 PM                Program Files (x86)                                    
d-r---         4/16/2022   1:46 AM                Users                                                  
d-----          6/9/2022   2:48 PM                Windows                                                
d-----         4/17/2022   5:23 PM                xampp                                                     root@nginx:/# curl "edgedevice-powershell/issue_cmd?flags_no_parameter=ping,8.8.8.8"Pinging 8.8.8.8 with 32 bytes of data:
Reply from 8.8.8.8: bytes=32 time=64ms TTL=114
Reply from 8.8.8.8: bytes=32 time=56ms TTL=114
Reply from 8.8.8.8: bytes=32 time=57ms TTL=114
Reply from 8.8.8.8: bytes=32 time=59ms TTL=114Ping statistics for 8.8.8.8:Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:Minimum = 56ms, Maximum = 64ms, Average = 59ms

示例

当使用curl向一个给定的URL发布请求时,命令如下:

curl "example.com/issue_cmd?flags_no_parameter=ping,8.8.8.8

然后请求将从HTTP的中间件传到Windows主机的PowerShell

> powershell.exe ping 8.8.8.8

请注意,默认的定时EDGEDEVICE_DRIVER_EXEC_TIMEOUT_SECOND可以被URL中的timeout标志所覆盖,例如:

  • 如果没有timeout标志(命令超时,输出不完整):
root@nginx:/# curl "example.com/issue_cmd?flags_no_parameter=ping,-n,6,8.8.8.8"   Pinging 8.8.8.8 with 32 bytes of data:
Reply from 8.8.8.8: bytes=32 time=58ms TTL=114
Reply from 8.8.8.8: bytes=32 time=51ms TTL=114
Reply from 8.8.8.8: bytes=32 time=59ms TTL=114
Reply from 8.8.8.8: bytes=32 time=45ms TTL=114
Reply from 8.8.8.8: bytes=32 time=59ms TTL=114
  • 使用timeout标志(输出完整):
root@nginx:/# curl "example.com/issue_cmd?timeout=10&flags_no_parameter=ping,-n,6,8.8.8.8" Pinging 8.8.8.8 with 32 bytes of data:
Reply from 8.8.8.8: bytes=32 time=60ms TTL=114
Reply from 8.8.8.8: bytes=32 time=60ms TTL=114
Reply from 8.8.8.8: bytes=32 time=59ms TTL=114
Reply from 8.8.8.8: bytes=32 time=59ms TTL=114
Reply from 8.8.8.8: bytes=32 time=59ms TTL=114
Reply from 8.8.8.8: bytes=32 time=60ms TTL=114Ping statistics for 8.8.8.8:Packets: Sent = 6, Received = 6, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:Minimum = 59ms, Maximum = 60ms, Average = 59ms

我们还添加了一个参数stub_toleration来处理deviceShifu和中间件之间的延迟问题。默认情况下,它被设置为1秒,你可以用以下方法覆盖这个时间:

root@nginx:/# curl "example.com/issue_cmd?timeout=10&flags_no_parameter=ping,-n,6,8.8.8.8&stub_toleration=0" 

本文由边无际授权发布

相关内容

热门资讯

青岛证监局联合三大交易所 为拟... 日前,青岛证监局联合上交所、深交所、北交所召开青岛辖区拟上市后备企业高质量发展座谈会,传达资本市场最...
原创 向... 向佐真是用实际行动证明了,什么叫做人生如戏。之前他各种奇装异服大家还没回过神来,这两天他又被告上法院...
原创 定... 案例背景 王某为2025年四川省某县定向医学生,与当地卫生健康局签订《定向医学生培养协议》,约定本...
美众议长透露:与特朗普发生争执... 【环球网报道】据美国《纽约邮报》报道,美国众议院议长迈克·约翰逊在16日播出的最新采访中透露,在与特...
白酒巨头“扎堆”光瓶酒:59元... 图源:图虫创意 “不是饥饿营销,确实不够卖”“爆单了,这两天已经卖了300多箱,之前预售时很多客户没...
二战爆发前后英国的远东政策 第一次世界大战结束后,在英国的全球战略中,远东曾占据相当重要的地位,一度列英国海军战略优先次序的第一...
男婴医院离世家长获赔88万,律... “孩子没了,医院赔了88.8万元,我的律师拿走了55万元。”韦先生无奈道,他自称文化水平低,称事后才...
上学,一个都不能少!广东二师将... 7月11日至16日,广东第二师范学院“戎耀之声”资助政策宣讲队走进阳江市阳西县织篢镇,开展“国家资助...
滨州市支持“好房子”建设的土地... 大众网记者 王卫 滨州报道 为进一步促进滨州市房地产行业平稳健康发展,提振房地产市场信心,激发市场主...
天天吃官司!执政不到半年特朗普... 自特朗普1月上任以来,其政府已面临300多起诉讼,指控其违反宪法、采取非法行动以及行政越权等。当地时...