带shell脚本的Python套接字程序?

2024-09-29 23:28:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两台机器用一个开关连接起来。我有一个流行的服务器应用程序,我们可以称之为“SXC_服务器”在机器a上,我用机器B的相应应用程序来询问“SXC_服务器”,我将其称为“SXC_客户端”。我要做的是两个方面:

  • 首先,通过tcpdump获得SXC_服务器和SXC\u客户端交互的流量。两者之间的交互是一个简单的GET-and-RESPONSE,但是我需要流量跟踪。在
  • 其次,我想记录在每次交互/迭代期间SXC_服务器进程的驻留集大小(Resident Set Size,RSS)使用情况

此外,我不需要一个通信的流量跟踪和一个SXC_服务器进程的内存使用日志,否则我就不会写这篇文章了,因为我可以在十分钟内离开并完成它。。。事实上,我的目标是做很多!但为了简单起见,我想做10。在

由于这将是非常劳动密集型的,因为它将需要我在两台机器上停止和启动所有的SCX_CLIENT-to-SXC_服务器询问、tcpdump流量捕获和SXC_服务器日志的RSS内存使用情况,所以我想编写一个自动化脚本。在

但是!我不是程序员,也不是软件人……(该死的)

不过,这意味着我可以想象一个独立的客户机/服务器程序来监督这种自动化,我们可以称之为AUTO_server和AUTO_client。我的想法是机器B将运行AUTO_客户端,机器A将运行AUTO_SERVER。两者的目的都是为了促进自动化,即停止和启动tcpdump,以及在机器B使用SXC\u客户机查询SXC\u服务器之前(如果您跟随我的话!)在SXC\u服务器进程的机器A上进行内存登录。在

在运行了一次SXC_SERVER-to-SXC\u客户端GET/RESPONSE交互之后,我将得到以下结论:

  • 一个名为n1.pcap
  • 以及一个名为n1.csv的内存日志转储(与进程相关的RSS)。在

我不是程序员或软件人员,但我可以看到一个粗略的方法(尽我所能)来实现这一点,如下所示:

机器A:自动服务器

BEGIN:

msgRecieved = open socket(listen on port *n*)

DO

1. wait for machine A to tell me when to start watch (as in the program) to log RSS memory usage of the SXC_SERVER process using hardcoded command:
watch -n 0.1 'ps -p $(pgrep -d"," -x snmpd) -o rss= | awk '\''{ i += $1 } END { print i }'\'' >> ~/Desktop/mem_logs/mem_i.csv

UNTIL (messageRecieved == "FINISH")

quit

END.

机器B:自动客户端

^{pr2}$

如您所见,我假设这将通过在两台机器上使用一个单独的小型客户机/服务器类程序(这里我称之为AUTO_server和AUTO_client)来实现。真正粗糙的伪代码设计应该是不言而喻的。在

我在这里找到了一个小的客户机/服务器套接字程序:http://www.velvetcache.org/2010/06/14/python-unix-sockets,如果我编辑它,我认为它可能是合适的,但我不确定我到底如何才能实现这一点。在那里你可以提供一些帮助。在

Python能做到这一点吗? 可以用一个bash脚本完成吗? 你认为我这样做对吗? 或者你有什么有用的建议吗?在

敬上。在


Tags: to内存服务器机器客户端autoget客户机
1条回答
网友
1楼 · 发布于 2024-09-29 23:28:27

您可以使用Python来完成这类工作,但我强烈建议您在大部分工作中使用SSH(而不是自己编写连接代码),然后使用bash脚本或Python脚本来启动tcpdump等进程。在

但是,对于stackoverflow来说,您的问题有点太开放了—听起来您是在请求某人为您编写这个程序,而不是为了帮助您解决某个特定的问题。在

相关问题 更多 >

    热门问题