python -- TCP "远程控制" 指:先建立连接,再通过命令进行远程控制服务器。
在虚拟机的代码程序
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import socket
import os
HOST = "192.168.1.185"
POST = 5000
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
addr = (HOST,POST)
s.bind(addr)
s.listen(1)
conn,addr = s.accept()
def getwinfile():
conn.send("我准备好接收了")
filename = conn.recv(1024)
fdata = conn.recv(20480)
with open(filename,"wb") as f:
f.write(fdata)
conn.send("finsh")
def putlinuxfile():
conn.send("我准备好传输了")
file = conn.recv(1024)
with open(file,"rb") as f:
fdata = f.read()
conn.send(fdata)
conn.send("finsh")
def main(addr):
print(addr)
while True:
data = conn.recv(1024)
print(data)
if data == "byebye":
break
if data == "wycf":
getwinfile()
continue
if data == "wysf":
putlinuxfile()
continue
f = os.popen(data)
ret = f.read()
if ret:
conn.send(ret)
else:
conn.send("finish")
conn.close()
s.close()
if __name__ =="__main__":
main(addr)
在真实机里面的代码程序
import socket
HOST = "192.168.1.185"
PORT = 5000
addr = (HOST,PORT)
c = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
c.connect(addr) #连接服务器
def putfile():
data = c.recv(1024)
print(str(data,encoding="utf8"))
file = input("请输入文件和路径:")
filename = file.split("\\")[-1]
c.send(bytes(filename,encoding="gbk"))
with open(file,"rb") as f:
fdata = f.read()
c.send(fdata)
data2 = c.recv(1024)
print(str(data2,encoding="utf8"))
def getfile():
data = c.recv(1024) #接收对方的准备信息
print(str(data,encoding="utf8")) #打印
file = input("请输入对方的文件和路径:")
c.send(bytes(file,encoding="gbk")) #发送文件名和路径
filename = file.split("/")[-1] #获取文件名
fdata = c.recv(20480) #准备接收文件数据
with open(filename,"wb") as f:
f.write(fdata) #建立文件
data2 = c.recv(1024) #接收完成回应消息
print(str(data2,encoding="utf8"))
def main(addr):
while True:
cmd = input("请输入命令:")
c.send(bytes(cmd,encoding="gbk")) #将命令转换后发送
if cmd == "byebye": #如果发送byby就退出连接
break
if cmd == "wycf":
putfile()
continue
if cmd == "wysf":
getfile()
continue
ret = c.recv(20480)
#print(str(ret,encoding="gbk"))
print(str(ret,encoding="utf8")) #收到的信息显示
c.close()
if __name__ == "__main__":
main(addr)