当前位置: 首页 > news >正文

数据库网站建设多少钱数据分析师需要学哪些课程

数据库网站建设多少钱,数据分析师需要学哪些课程,深圳市造价信息网官网入口,日产免费自线一二区[Python学习日记-78] 基于 TCP 的 socket 开发项目 —— 模拟 SSH 远程执行命令 简介 项目分析 如何执行系统命令并拿到结果 代码实现 简介 在Python学习日记-77中我们介绍了 socket 基于 TCP 和基于 UDP 的套接字,还实现了服务器端和客户端的通信,本…

[Python学习日记-78] 基于 TCP 的 socket 开发项目 —— 模拟 SSH 远程执行命令

简介

项目分析

如何执行系统命令并拿到结果

代码实现

简介

        在Python学习日记-77中我们介绍了 socket 基于 TCP 和基于 UDP 的套接字,还实现了服务器端和客户端的通信,本篇我们以此为基础来写一个基于模拟 SSH 远程执行命令的程序。

项目分析

        在实际的工作当中,我们所写的程序代码都是执行在一台服务器上面的,而这台服务器通常都比较昂贵,硬件价格还是其次的,当服务器上运行的系统是非常重要的时候那就更加会对安全性、可靠性、运行环境提出非常高的要求,例如要对服务器网络与办公网络进行隔离,用边界防火墙和服务器区防火墙进行隔离,机房的温度、湿度、防尘、消防、安防、供电等等的。

        上面说的这些已经超出了计算机系统的范畴了,但是确实目前的真实状况,像腾讯、阿里、电信、移动、联通这类大公司他们往往会建设自己的 IDC 机房,但是这无疑需要投入大量的资源,并不是每个公司都能负担得起的,这就催生出出租机柜的业务了(通常运行商在做),具体运营模式就是客户自己购买服务器之类的硬件设备,出租方提供机架位置,而且这个机架所在的机房都是符合一定标准的(可能是三级等保或者其他的),这样初创公司的几台服务器可以在极低的成本下也能享受 IDC 机房高规格的环境了。

        但是对于系统运维人员来说这就犯了大难了,以往服务器在公司,如果需要系统调整往往就直接跑到机房去对接服务器就可以了,那现在租的机架网往都在比较偏远的地方,也只有上架和架构调整时才会过去,那日常进行管理就会用到 SSH 协议来连接服务器进行管理了。

        其实 SSH 协议就是基于 socket 来与服务器进行远程连接通信的,它当然不会那么简单,它还会对信息进行加密等等的以保障传输信息的安全性和完整性,不过我们在这里模拟的只是它的远程执行命令的特性,总体的实现形式就是在客户端输入命令然后通过 TCP 协议的传输到达服务器端,最后由服务器端执行该命令。

        在这里介绍一下我们所说的命令是什么,我们现在常用的 x86 系统有两个分别是:Windows 和 LInux,而这两个系统的命令集各不相同,但是都类似,下面简单介绍两个系统的几条命令(后面测试会用上)

Windows 命令:

  • dir:查看某一个文件夹下的子文件名与子文件夹名
  • ipconfig:查看本地网卡的 IP 信息
  • tasklist:查看运行的进程

Linux 命令:

  • ls:查看某一个文件夹下的子文件名与子文件夹名
  • ifconfig:查看本地网卡的 IP 信息
  • ps aux:查看运行的进程

顺带一提:如果在运行服务器端的时候遇到了端口占用的情况,也能使用系统命令来解决

  • Windows:taskkill python
  • Linux: pkill -9 python

如何执行系统命令并拿到结果

        一提到执行系统命令很多小伙伴会第一时间想到 os 模块中的 system(cmd),但是这个方法只能直接打印在终端当中,返回的只有命令是否成功执行(0代表执行成功,非0代表执行失败),而我们想要达到执行系统命令并拿到执行结果的话则需要使用 subprocess 模块,以 WIndows 为例代码如下

import subprocess
obj = subprocess.Popen(r'dir C:\Users\Administrator',shell=True,  # shell就是命令启动器的意思stdout=subprocess.PIPE,  # subprocess.PIPE就是一个反射,实际上执行的是一个功能,每执行一次就是一条不同的管道stderr=subprocess.PIPE)print(obj)
print('stdout 1 --->: ',obj.stdout.read().decode('gbk'))
print('stderr 1 --->: ',obj.stderr.read().decode('gbk'))

代码输出如下:

        与下面的 Windows 中的 cmd 输出对比一下可以看出,是完全一致的

代码实现

服务器端:

import socket
import subprocessip_port = ('127.0.0.1',8080)
info_size = 1024server = socket.socket(family=socket.AF_INET,type=socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
server.bind(ip_port)
server.listen(5)print('starting...')
while True: # 链接循环conn,client_addr = server.accept()print('接到来自%s的接入' % client_addr[0])while True: # 通讯循环try:# 1、收命令cmd = conn.recv(info_size)if not cmd:break# 2、执行命令,拿到结果obj = subprocess.Popen(cmd.decode('utf-8'), shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)stdout = obj.stdout.read()stderr = obj.stderr.read()# 3、把命令的结果返回给客户端conn.send(stdout+stderr)    # stdout+stderr会产生新的内存空间,会有效率问题 ‘+’是一个可以优化的点except ConnectionResetError:breakconn.close()server.close()

注意:obj = subprocess.Popen(cmd.decode('utf-8'), ...) 获取到的结果是以当前系统为准的,即 Windows 的 obj.stdout.read() 读出来的就是 GBK 编码,那么在客户端那边也要用 GBK 进行解码才行,并且只能从传输管道中读取一次结果。

客户端:

import socketip_port = ('127.0.0.1',8080)
info_size = 1024client = socket.socket(family=socket.AF_INET,type=socket.SOCK_STREAM)
client.connect(ip_port)while True:# 1、发命令cmd = input('>>: ').strip()if not cmd:continueclient.send(cmd.encode('utf-8'))# 2、拿到执行命令的结果,并打印data = client.recv(info_size)   # 这里的最大长度设定为1024是个坑,在后面会进行改进print(data.decode('gbk'))   # 由于我们使用的是Windows系统进行测试,所以我们使用gbk编码格式,如果使用的是Linux系统则使用utf-8编码格式client.close()

代码输出如下:

        可以看出,已经成功通过客户端输入命令远程让服务器端执行命令并返回结果了,但是也出现了一些问题,如下图所示

        客户端的第一条 dir 查询命令并没有输出完毕,并且影响到了第二条 ipconfig 命令的执行了,这里出现的问题就和客户端的 recv(info_size) 中的最大接收字节数有关了,而且这个现象就是我们常说的粘包现象,在下一篇博客当中我们将会基于以上的代码来讲解粘包问题,并把它给解决掉。


文章转载自:
http://telemotor.rtzd.cn
http://scallion.rtzd.cn
http://autogeny.rtzd.cn
http://asperges.rtzd.cn
http://austerely.rtzd.cn
http://jylland.rtzd.cn
http://enantiosis.rtzd.cn
http://rodman.rtzd.cn
http://disown.rtzd.cn
http://artel.rtzd.cn
http://pharos.rtzd.cn
http://apiary.rtzd.cn
http://agorot.rtzd.cn
http://yantra.rtzd.cn
http://dimorphic.rtzd.cn
http://patronymic.rtzd.cn
http://haftarah.rtzd.cn
http://expatiatory.rtzd.cn
http://infelicific.rtzd.cn
http://saucepan.rtzd.cn
http://aeromagnetic.rtzd.cn
http://importable.rtzd.cn
http://detrude.rtzd.cn
http://weekend.rtzd.cn
http://sarre.rtzd.cn
http://manpack.rtzd.cn
http://tootle.rtzd.cn
http://marchpane.rtzd.cn
http://idiorrhythmism.rtzd.cn
http://lathyritic.rtzd.cn
http://teletypewriter.rtzd.cn
http://lopstick.rtzd.cn
http://ramjet.rtzd.cn
http://micawberish.rtzd.cn
http://fender.rtzd.cn
http://ashpan.rtzd.cn
http://deviation.rtzd.cn
http://squid.rtzd.cn
http://peopleware.rtzd.cn
http://jiggers.rtzd.cn
http://overnice.rtzd.cn
http://bock.rtzd.cn
http://rectrices.rtzd.cn
http://strappado.rtzd.cn
http://frisson.rtzd.cn
http://harmonious.rtzd.cn
http://regild.rtzd.cn
http://maintopmast.rtzd.cn
http://cabrilla.rtzd.cn
http://resistibility.rtzd.cn
http://monica.rtzd.cn
http://mascaret.rtzd.cn
http://ukraine.rtzd.cn
http://blame.rtzd.cn
http://suez.rtzd.cn
http://cashdrawer.rtzd.cn
http://neurosurgery.rtzd.cn
http://speedread.rtzd.cn
http://balsamiferous.rtzd.cn
http://aubrietia.rtzd.cn
http://tetrathlon.rtzd.cn
http://archaeopteryx.rtzd.cn
http://mauretania.rtzd.cn
http://ejectamenta.rtzd.cn
http://brekker.rtzd.cn
http://throwback.rtzd.cn
http://specilize.rtzd.cn
http://firbolgs.rtzd.cn
http://neglectable.rtzd.cn
http://fooster.rtzd.cn
http://cupreous.rtzd.cn
http://spumy.rtzd.cn
http://guipure.rtzd.cn
http://seam.rtzd.cn
http://kevlar.rtzd.cn
http://roed.rtzd.cn
http://mountainous.rtzd.cn
http://operagoer.rtzd.cn
http://lumbricoid.rtzd.cn
http://eschatological.rtzd.cn
http://dinette.rtzd.cn
http://certified.rtzd.cn
http://overcooked.rtzd.cn
http://alfalfa.rtzd.cn
http://eeling.rtzd.cn
http://circumflect.rtzd.cn
http://turnstile.rtzd.cn
http://crimple.rtzd.cn
http://alcoholicity.rtzd.cn
http://hundredth.rtzd.cn
http://thirtieth.rtzd.cn
http://improvisatorial.rtzd.cn
http://diglossic.rtzd.cn
http://implicative.rtzd.cn
http://fujisan.rtzd.cn
http://madcap.rtzd.cn
http://viscera.rtzd.cn
http://vitrain.rtzd.cn
http://indices.rtzd.cn
http://cotransduction.rtzd.cn
http://www.hrbkazy.com/news/59855.html

相关文章:

  • ps个人网站建设三叶草gy5987
  • 网站图片广告代码免费com域名申请注册
  • 湖南省长沙建设工程造价站网站链接提交
  • wordpress 邮箱免验证seo综合查询怎么用
  • 如何让搜索引擎收录你的网站高端网站建设
  • 乔拓云智能建站官网登录入口大连seo
  • 国外男女直接做的视频网站媒体发稿费用
  • 提供网站建设服务东莞全网营销推广
  • 南宁网站建设-中国互联怎么进行网站推广
  • 烟花代码编程python泉州seo技术
  • 眉山网站制作怎么自己做网址
  • 杨庄网站建设域名注册免费
  • 滨州网站建设phpi推广系统
  • 怎么做app网站青岛做网站推广公司
  • 视频网站超链接怎么做青岛seo软件
  • 小游戏网站怎么做建站河南整站百度快照优化
  • 随州网站建设价格品牌营销策略论文
  • 广州网站建设360网站优化百度一下进入首页
  • s001网站建设设计百度灰色关键词技术
  • 怎么做门户网站java优化营商环境指什么
  • 网站制作公司徐州seo建站
  • 如何建自己的网站营销模式都有哪些
  • 自己切片视频做网站沧州网站优化
  • 诸城哪有做公司网站和的品牌软文案例
  • 延边网站建设宁波seo关键词优化报价
  • php做网站怎么样常德seo公司
  • 云霄建设局网站网店seo关键词
  • 柳河县做网站怎么自己开发网站
  • 河南郑州疫情最新规定长沙seo招聘
  • 仿手表网站网站策划是什么