Siv*_*ran 8 sockets shell tcp batch-file netcat
我正在向自定义协议TCP服务器发送文本命令.在下面的示例中,我发送2个命令并接收回写的响应.它在telnet和netcat中按预期工作:
$ nc 192.168.1.186 9760
command1
command2
theresponse
Run Code Online (Sandbox Code Playgroud)
我批量试用时不工作:
@echo off
cd..
cd C:\nc
nc 192.168.1.186 9760
00LI002LE99
end
Run Code Online (Sandbox Code Playgroud)
请帮帮我.
DNA*_*DNA 11
当您以nc交互方式运行时,它会从标准输入(您的终端)获取输入,因此您可以与它进行交互并发送命令.
当您在批处理脚本中运行它时,您需要将命令提供给标准输入流nc- 只需将命令放在以下行上就不会这样做; 它会尝试将它们作为完全独立的批处理命令运行.
您需要将命令放入文件中,然后将文件重定向到nc:
nc 192.168.1.186 9760 < commands.txt
Run Code Online (Sandbox Code Playgroud)
在Linux上,您可以使用"here document"将命令嵌入脚本中.
nc 192.168.1.186 9760 <<END
command1
command2
END
Run Code Online (Sandbox Code Playgroud)
但我还没有找到Windows批处理脚本的等价物.它有点难看,但您可以将命令回显到临时文件,然后将其重定向到nc:
echo command1^
command2 > commands.txt
nc 192.168.1.186 9760 < commands.txt
Run Code Online (Sandbox Code Playgroud)
该^转义字符,您可将文字换行到脚本.将换行符添加到echo命令的另一种方法(来自这个问题):
echo command1 & echo.command2 > commands.txt
Run Code Online (Sandbox Code Playgroud)
理想情况下,我们只是直接管道nc(这对我来说不太合适,但我现在无法尝试使用它nc):
echo command1 & echo.command2 | nc 192.168.1.186 9760
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22377 次 |
| 最近记录: |