# x1-cli
export BUTTERFLY_HANDLER_CLI_NAME="x1-cli"
export BUTTERFLY_HOME=/home/work/x1-cli
[[ -s "${BUTTERFLY_HOME}/bin/x1-bash-complete.sh" ]] && source ${BUTTERFLY_HOME}/bin/x1-bash-complete.sh
export PATH=${BUTTERFLY_HOME}/bin:$PATH
tcpdump tcp port 6379 and host 10.xx.xx.xx
-w 选项用来把数据报文输出到文件
文件需要使用 tcpdump -r 来读取
tcpdump -A -s 0 'tcp port 8585 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
21:27:06.995846 IP 192.168.1.106.56166 > 124.192.132.54.80: Flags [S], seq 992042666, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 663433143 ecr 0,sackOK,eol], length 0
21:27:07.030487 IP 124.192.132.54.80 > 192.168.1.106.56166: Flags [S.], seq 2147006684, ack 992042667, win 14600, options [mss 1440], length 0
21:27:07.030527 IP 192.168.1.106.56166 > 124.192.132.54.80: Flags [.], ack 2147006685, win 65535, length 0
import socket
def start_tcp_server(host='0.0.0.0', port=8003):
# 创建一个TCP/IP套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定套接字到地址
server_socket.bind((host, port))
# 监听传入连接
server_socket.listen(1)
print "Server listening on %s:%d" % (host, port)
try:
while True:
# 等待一个连接
client_socket, client_address = server_socket.accept()
print "Connected by", client_address
# 在这里可以添加处理客户端连接的代码
# 例如,接收数据
# data = client_socket.recv(1024)
# 如果需要,可以打印接收到的数据
# print "Received", data
# 注意:在实际应用中,你应该有一个机制来关闭client_socket,
# 例如,在接收到特定命令或发生错误时。
# 在这个简单示例中,我们没有实现关闭连接的逻辑。
# 为了演示目的,我们在这里不关闭client_socket,
# 但这在实际应用中是不推荐的,因为它会导致资源泄露。
# 在实际应用中,你应该在适当的时候关闭client_socket。
# 注意:由于Python 2的默认行为,未显式关闭的文件或套接字
# 可能会在程序结束时由垃圾回收器关闭,但这不应该被视为一种可靠的关闭机制。
# 在这个示例中,为了保持简单性,我们没有实现数据发送或接收的逻辑,
# 也没有实现错误处理或资源清理的代码。
# 在实际应用中,你应该添加这些必要的逻辑来确保程序的健壮性和可靠性。
finally:
# 确保套接字在程序结束时被关闭
server_socket.close()
if __name__ == "__main__":
start_tcp_server()
Connected by ('127.0.0.1', 15712)
Connected by ('xx.xx.xx.xx', 23783)