python - socket练习(输入系统命令)
socket_server端代码:
#!/usr/bin/env python # -*- coding:utf-8 -*- # Auther: pangguoping import socket import subprocess ip_port=('127.0.0.1',9990) #买手机 s=socket.socket() s.bind(ip_port) s.listen(5) while True: conn,addr=s.accept() while True: try: recv_data=conn.recv(1024) if len(recv_data) == 0:break #发消息 p=subprocess.Popen(str(recv_data,encoding='utf-8'),shell=True,stdout=subprocess.PIPE) res=p.stdout.read() if len(res) == 0: send_data='cmd err' else: send_data=str(res,encoding='gbk') print(send_data) conn.send(bytes(send_data,encoding='utf-8')) except Exception: break #挂电话 conn.close()
socket_client代码
#!/usr/bin/env python # -*- coding:utf-8 -*- # Auther: pangguoping import socket ip_port=('127.0.0.1',9990) #买手机 s=socket.socket() #拨号 s.connect(ip_port) #发送消息 while True: send_data=input(">>:").strip() if send_data == 'exit':break if len(send_data) == 0:continue s.send(bytes(send_data,encoding='utf-8')) #收消息 recv_data=s.recv(1024) print(str(recv_data,encoding='utf-8')) #挂电话 s.close()
首先,运行socket_server端程序,然后才能执行客户端程序
这里执行socket_client.py
>>:dir 驱动器 D 中的卷没有标签。 卷的序列号是 626C-277F D:\PycharmProjects\s13\day9\SOCKET_TEST2 的目录 2016/07/03 15:16 <DIR> . 2016/07/03 15:16 <DIR> .. 2016/07/03 15:15 470 socket_client.py 2016/07/03 15:16 810 socket_server.py 2016/07/03 14:54 70 __init__.py 3 个文件 1,350 字节 2 个目录 90,986,483,712 可用字节
如果输入错误的命令,输出:
>>:sdkflsdfds
cmd err
UnixFBI 运维特工
www.unixfbi.com