玖叶教程网

前端编程开发入门

Python编写模拟ssh远程执行操作系统命令小程序,简单实用

自学python一段时间了,对python也比较感兴趣,但是我本身是做运维出身,所以这次写了一个模拟ssh远程执行操作系统命令的小程序,代码也不难,简单实用,所以分享出来给大家,有兴趣的可以一起交流交流。

此次是基于socket多线程通讯下进行的模拟ssh远程执行执行操作系统命令,既然是基于socket通讯,那么程序中也没有对账号密码进行验证,只是做了通过socket来达到类似于ssh那样的远程操作。

首先先把程序效果展示出来,

服务端效果,会提示收到了哪个客户端的什么命令,如下图:

服务端效果展示

客户端效果,会提示让你输入命令,并且在服务器端执行完成后将结果返回,如下图:

客户端效果展示

程序的难点在于,使用socket进行通讯的话,客户端收取的数据字节有限,跟其buffer有关,因此如果执行命令返回的数据较大,那么客户端有可能会出现数据缺失或者数据混乱的情况,按我的测试的话,超过36K的数据就会出现上述情况。因此需要在客户端上定义一个循环收取数据的函数,我定义的是4K数据循环收取,等所有数据收取完成后,再在客户端上进行展示。

还有一个问题需要注意的是,使用socket进行通讯,如果服务端发送给客户端信息的消息间隔太短,那么客户端可能会将服务端发送的数据进行合并收取,那样可能会出现粘包等情况,因为如果涉及到服务端需要连续发送消息的,那么则需要在连续发送消息的间隔添加sleep睡眠。

如下,进行了超过4K返回数据的测试,当然超过36K也不会报错,有兴趣的朋友可以自己测试下:

超过4K返回数据客户端效果

接下来就给出程序代码,代码已经添加详细注释,有疑问的可以在评论区留言,大家一起探讨。

服务端代码:

服务端的代码截图

客户端的代码:

客户端的代码截图

后话

文章属原创,未经允许,请尊重原创,请勿在其他地方抄袭发表。

写文章不易,我会坚持更新,希望大家多多关注点赞,如果有什么想法,或者想我出什么类型什么内容的文章,可以在文章下方评论,我会尽我所能满足大家的要求,谢谢。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言