环境是windows 环境.

server端:

import socket
import subprocess
ss = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) ip_port = ("127.0.0.1",8080)
ss.bind(ip_port)
while True:
data,addr = ss.recvfrom(1024) re = data.decode()
info = subprocess.Popen(re,shell=True,
stdin=subprocess.PIPE,
stderr=subprocess.PIPE,
stdout=subprocess.PIPE)
if info.stderr.read():
info2 = "输入错误!".encode("gbk")
else:
info2 = info.stdout.read()
ss.sendto(info2,addr)

clinet端:

#coding:gbk
import socket
ip_port = ("127.0.0.1",8080)
cli = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
while True:
data = input(">>>:")
cli.sendto(data.encode("utf-8"),ip_port)
data2,addr = cli.recvfrom(5120)
data3 = data2.decode("gbk")
print(data3)

反思:

  问题:经subprocess转换的数据编码为系统编码,而我当前用的是windows系统,所以默认编码为GBK编码,所以clinet端发送接收后的数据不能转换成UTF8的编码,只能转换为GBK编码.

在Linux环境没有测试.

python - 远程主机执行命令练习(socket UDP + subprocess.Popen()) 练习1的更多相关文章

  1. Python通过paramiko批量远程主机执行命令

    一.前言 在日常运维的过程中,经常需要登录主机去执行一些命令,有时候需要登录一批主机执行相同的命,手动登录执行的化效率太慢, 所以可以通过Python的paramiko模块批量执行,本篇文章基于pyt ...

  2. python 网络编程 TCP/IP socket UDP

    TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...

  3. Ansible批量在远程主机执行命令

    Ansible直接执行远程命令,不用ssh登陆交互执行. 如下: ansible all -i 192.168.199.180, -m shell -a "ifconfig" -u ...

  4. python中执行命令的3种方法小结-乾颐堂

    目前我使用到的python中执行cmd的方式有三种: 1. 使用os.system("cmd") 特点是执行的时候程序会打出cmd在linux上执行的信息. import os o ...

  5. python在执行命令时添加环境变量或指定执行路径

    cwd: 命令的执行路径,相当于os.chdir('/home')提前切换到对应路径 env: 环境变量,某些执行路径需要添加必须的环境变量,例如fastboot依赖与adb路径下的环境变量 impo ...

  6. ssh远程主机执行命令或脚本

    1.执行单一命令 [root@vps ~]# ssh user@192.168.9.243 "pwd; ls; rm -f Cent* ;echo --------; ls"/ho ...

  7. python 远程执行命令

    1.简单版 # coding: utf-8 import paramiko import re from time import sleep def ssh(): ssh = paramiko.SSH ...

  8. python登录执行命令

    #-*- coding: utf-8 -*- #!/usr/bin/python import paramiko import threading import getpass def ssh2(ip ...

  9. Ansible 直接请求远程主机执行命令

    ansible -all -i host1.abc.com, -m ping #注意主机名称后面的逗号,就算一台主机也是必须的.多台主机可以用逗号隔开 ansible all -i host1.abc ...

随机推荐

  1. Food HDU - 4292 (结点容量 拆点) Dinic

    You, a part-time dining service worker in your college’s dining hall, are now confused with a new pr ...

  2. MT【8】和e有关的一个极限

    解答: 评:这里涉及到e有关的极限的单调性,求导数得:

  3. Mysql 主从服务器数据同步

    安装2台windows Server 服务器,分别安装Mysql,配置环境变量,完成安装确认在CMD窗口可以使用Mysql命令 在Master服务器上创建同步账号,确保Slave服务器能访问Maste ...

  4. LOJ #2718. 「NOI2018」归程(Dijkstra + Kruskal重构树 + 倍增)

    题意 给你一个无向图,其中每条边有两个值 \(l, a\) 代表一条边的长度和海拔. 其中有 \(q\) 次询问(强制在线),每次询问给你两个参数 \(v, p\) ,表示在 \(v\) 出发,能开车 ...

  5. 自学Zabbix5.1 zabbix maintenance维护周期

    自学Zabbix5.1 zabbix maintenance维护周期 1. 概述 你可以定义维护周期在主机或主机组里.这里有2种维护状态: 依旧收集数据   继续对目标的监控数据的收集 暂停收集数据 ...

  6. 自学Zabbix9.2 zabbix网络发现规则配置详解+实战

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix9.2 zabbix网络发现规则配置详解+实战 1.  创建网络发现规则 Conf ...

  7. mathML如何在谷歌浏览器进行展示

    前几天不是做了个word公式的解析吗,就是office插入的公式是个xmlObject对象,读出来就是个String,所以要进行转换才能在网页上展示,其实我对这方面也不是很了解,然后各种百度解决方案, ...

  8. CF 989

    今天晚上闲来无事打了一场CF......div.2,第600名.太弱了. T1看懂题之后发现是水题(废话),6min AC. T2仔细思考之后发现可做,但是由于n=p的特判没确定到底有没有解,WA了一 ...

  9. vue-loader 作用

    vue-loader:解析和转换 .vue 文件,提取出其中的逻辑代码 script.样式代码 style.以及 HTML 模版 template,再分别把它们交给对应的 Loader 去处理. cs ...

  10. 使用babel将ES6编译成ES5

    现在ES6已经非常成熟了,我的需求很明确,就是只需要将ES6编译成ES5. 项目目录为 借鉴的博客链接为https://blog.csdn.net/suwu150/article/details/77 ...