- IPV4服务端
import socket
import subprocess
ip_addr = (‘127.0.0.1’, 8000)
tcp_server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
tcp_server.bind(ip_addr)
tcp_server.listen(5)
while True:
conn, addr = tcp_server.accept()
while True:
cmd = conn.recv(1024)
if not cmd:
break
if cmd.decode('utf-8') == 'quit':
break
print(cmd.decode('utf-8'))
res = subprocess.Popen(cmd.decode('utf-8'), shell=True,
stdout=subprocess.PIPE, stdin=subprocess.PIPE,
stderr=subprocess.PIPE)
err = res.stderr.read()
out = res.stdout.read()
print(bool(res))
if err:
ref = err
elif not out:
ref = b'12'
else:
ref = out
conn.send(ref)
conn.close()
tcp_server.close()
- IPV6服务端
import socket
import subprocess
ipv6 = ‘ff15:7079:7468:6f6e:6465:6d6f:6d63:6173%eth0’
port = 8090
addrinfo = socket.getaddrinfo(ipv6, port, 0, 0)[0]
tcp_server = socket.socket(socket.AF_INET6,socket.SOCK_STREAM)
tcp_server.bind(addrinfo[-1])
tcp_server.listen(5)
while True:
conn, addr = tcp_server.accept()
while True:
cmd = conn.recv(1024)
if not cmd:
break
if cmd.decode('utf-8') == 'quit':
break
print(cmd.decode('utf-8'))
res = subprocess.Popen(cmd.decode('utf-8'), shell=True, stdout=subprocess.PIPE,
stdin =subprocess.PIPE, stderr=subprocess.PIPE)
err = res.stderr.read()
out = res.stdout.read()
print(bool(res))
if err:
ref = err
elif not out:
ref = b'12'
else:
ref = out
conn.send(ref)
conn.close()
tcp_server.close()
Linux/VMware环境下使用创建ipv6socket除了::1或者::0外,其他的需要绑定对应ipv6的端口号,不然会报错Cannot assign requested address
正文完
可以使用微信扫码关注公众号(ID:xzluomor)