我有一个Python脚本来捕获网络流量与tcpdump在subprocess:
p = subprocess.Popen(['tcpdump', '-I', '-i', 'en1',
'-w', 'cap.pcap'], stdout=subprocess.PIPE)
time.sleep(10)
p.kill()
Run Code Online (Sandbox Code Playgroud)
当此脚本完成工作时,我正在尝试.pcap在Wireshark中打开输出文件并得到以下错误:
“捕获文件似乎在数据包中间被剪切了。”
有什么解决方案可以适用于“正确”收盘tcpdump的subprocess?
我有一个仅在特定条件下执行的函数(例如role == 'Administrator')。现在,我使用“if”语句。但也可能存在条件数量较多且定义较长的“if”看起来不那么美观的情况。
Go 中(或与 Go 框架相关)是否有可用的机制允许实现中间件概念(动作过滤器)?
例如,ASP.NET MVC 允许执行以下操作:
[MyFilter]
public ViewResult Index()
{
// Filter will be applied to this specific action method
}
Run Code Online (Sandbox Code Playgroud)
因此,在单独的类中实现 MyFilter() 可以更好地进行代码组合和测试。
更新: Revel(Go 的 Web 框架)提供与拦截器类似的功能(框架在操作调用之前或之后调用的函数):https://revel.github.io/manual/interceptors.html