网络编程学习(4)—— 基于SOCKET实现模拟SSH远程执行命令

本文介绍了如何使用Python通过SOCKET实现模拟SSH远程执行命令。首先讨论了网络通信的应用,如查看系统信息等。接着探讨了使用os模块在Python中执行终端命令的问题,发现os模块只能获取命令执行状态,无法获取结果。然后,文章转向使用subprocess模块,通过实例展示了如何获取命令执行的输出并应用于服务端和客户端之间的通信。
摘要由CSDN通过智能技术生成

网络通信的应用

根据之前的网络通信的学习,我们可以很简单的想到网络通信可以用于搭建一个类似聊天室的程序。其实网络通信一个重要的应用是连接服务器执行命令,以 Windows 系统为例,比如说:dir 是查看本地文件目录的命令,ipconfig 是查看本地网卡 IP 地址命令,tasklist 是查看运行进程的命令……

python 如何利用代码执行终端命令

而要实现远程执行命令我们要做的是将相应命令传输给服务端,并让服务端将执行命令的结果返回客户端。

所以我们首先要解决的问题是如何利用代码执行终端命令。

尝试一、os模块

不出意外,我们首先想要的实现方法是 os 模块。运行代码及结果如下

# coding=gbk
import os

os.system("ipconfig")

请添加图片描述
看运行结果,好像我们已经解决问题了,但仔细想想我们这段代码是写在 服务端的,我们需要做的是获取执行后得到的结果传递给客户端,但现在却是直接在服务端打印结果了。
那么面对这个问题我们可以通过赋值解决吗?
答案是否定的。

# coding=gbk
import os

res = os.system("ipconfig")
print(res)

请添加图片描述
我们发现自己的赋值结果得到的是 0.其实这个零表示的是我们提供的命令可以执行并且执行成功。这也意味着利用 os模块并不能得到我们想要的结果。

解决方法、subprocess 模块

代码及实现

# coding=gbk
import subprocess

cmd = input(">>: ").strip()

# shell 一定不要忘记,不然该命令不会执行
# stdout 表示可以执行并且执行成功后的结果,PIPE 表示结果送至管道
# stderr 表示无
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值