iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python 利用socket 实现 s
  • 172
分享到

Python 利用socket 实现 s

Pythonsocket 2023-01-31 06:01:09 172人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

1.场景描述:主机A主机B主机C10.13.170.76172.28.117.156(squid)10.95.113.131    主机A---->主机B(80)--->主机C(22), A通过B的80访问主机C131 2.py

1.场景描述:


主机A主机B主机C

10.13.170.76

172.28.117.156(squid)10.95.113.131

    主机A---->主机B(80)--->主机C(22), A通过B的80访问主机C131 


2.python代码;

import paramiko
import Socket
import logging
from base64 import b64encode
import time

logging.basicConfig(loglevel=logging.DEBUG)
LOG = logging.getLogger("squid")


def Http_proxy(proxy,target,auth=None, timeout=None):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.settimeout(timeout)
    sock.connect(proxy)
    LOG.debug("connected")
    cmd_connect = "CONNECT %s:%d HTTP/1.1\r\n" % target
    if auth is not None:
        cmd_connect += " : basic %s\r\n" % b64encode('%s:%s' % auth)
    cmd_connect += "\r\n"
    LOG.debug("--> %s" % str(cmd_connect))
    sock.sendall(cmd_connect)
    response = []
    sock.settimeout(2)  
    try:
        # in worst case this loop will take 2 seconds if not response was received (sock.timeout)
        while True:
            chunk = sock.recv(1024)
            if not chunk: 
                break
            response.append(chunk)
            if "\r\n\r\n" in chunk: 
                break
    except socket.error,se:
        if "timed out" not in se:
            response = [se]
    response = ''.join(response)
    LOG.debug("<-- %s" % str(response))
    if "200 connection established" not in response.lower():
        raise Exception("Unable to establish HTTP-Tunnel: %s" % str(response))
    return sock


if __name__ == "__main__":
    LOG.setLevel(logging.DEBUG)
    LOG.debug("--start--")
    sock = http_proxy(proxy=("172.28.117.157", 80),
                      target=("10.95.113.131", 22),
                      auth=('germany', 'germany'),
                      timeout=50)
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(hostname="10.95.113.131", sock=sock, username="root", passWord="123")
    # time.sleep(100)
    print "#> login users \n%s" % ssh.exec_command("w")[1].read()

运行结果:

/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 /Users/germany/workspace/python2_study/python_squid.py
DEBUG:squid:--start--
DEBUG:squid:connected
DEBUG:squid:--> CONNECT 10.95.113.131:22 HTTP/1.1
proxy-authorization: basic Z2VybWFueTpnZXJtYW55


DEBUG:squid:<-- HTTP/1.0 200 Connection established


#> login user 
 15:23:01 up 102 days,  7:57,  1 user,  load average: 0.04, 0.09, 0.14
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    172.28.117.157   15:03   11:20   0.01s  0.01s -bash


Process finished with exit code 0

3.总结

    主要在于生成paramiko中connect连接中需要的代理sock,其中连接squid是采用http tunnel,http tunnel 有connect报文,socket中拼接相对应的报文格式  就能与squid建立连接。由于squid使用的是Basic auth 因此需要使用 b64encode对用户名和密码编码。

--结束END--

本文标题: Python 利用socket 实现 s

本文链接: https://www.lsjlt.com/news/190633.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python 利用socket 实现 s
    1.场景描述:主机A主机B主机C10.13.170.76172.28.117.156(squid)10.95.113.131    主机A---->主机B(80)--->主机C(22), A通过B的80访问主机C131 2.Py...
    99+
    2023-01-31
    Python socket
  • python socket 网络编程s
    Server端: import socketimport selectors class Server(object):def init(self,sel,sock):self.sel = selself.sock = sock def r...
    99+
    2023-01-31
    网络编程 python socket
  • Python利用tkinter和socket实现端口扫描
    目录题目参考code题目 请设计并实现一款主机端口扫描程序。程序根据用户输入的域名或IP地址,可以查询该主机的开放的端口号。 例如: 并有一定的异常处理 参考code impor...
    99+
    2022-12-08
    Python tkinter socket端口扫描 Python socket端口扫描 Python 端口扫描
  • python利用socket实现udp文件传输功能
    本文实例为大家分享了UDP实现文件传输的具体代码,供大家参考,具体内容如下 tcp进行文件传输看这里–python实现TCP文件接发 这里实现的接收方一直接收,发送方每次发送一个文件...
    99+
    2024-04-02
  • python 实现socket
    socketserver   client服务器端  监听socket  IP+端口   网络通信本地  网络stream  tcp  dgram udp ftp服务器   传文件  传命令socket.server  多线程-执行impo...
    99+
    2023-01-31
    python socket
  • Python进阶---python实现s
    python中没有substring的定义,但是有更轻巧的实现,可以通过数组的slice来截取字符串 例如,在java中我们这样截取字符串: String s = "Hello OutOfMemory.CN"; String small ...
    99+
    2023-01-31
    进阶 Python python
  • Python -- socket 实现服
      现在需要做一个分布式课程设计(简单小游戏),三个人小组合作完成。   我需要设计一个登录注册服务器,接收来自网关服务器(消息中间件)的用户登录注册消息请求,然后生成访问数据库服务器的消息,发送给数据库服务器,接收并处理其返回信息,发送...
    99+
    2023-01-31
    Python socket
  • Python利用socket实现多进程的端口扫描器
    作为开发人员经常需要查看服务的端口开启状态判断服务是否宕机。 特别是部署的服务比较多的情况下,可能存在几个甚至几十个服务端口的占用,于是我利用socket不断向服务发送请求的方式来判...
    99+
    2022-12-08
    Python socket多进程端口扫描 Python socket 端口扫描 Python 端口扫描
  • 利用PHP实现Socket通信的实用指南
    利用PHP实现Socket通信的实用指南 在网络编程领域中,Socket通信是一种非常常见且强大的通信方式,它可以实现不同计算机之间的数据传输和交互。PHP作为一种流行的服务器端脚本语...
    99+
    2024-03-08
    php 通信 socket 网络编程
  • Silverlight中怎么利用Socket实现通信
    这篇文章将为大家详细讲解有关Silverlight中怎么利用Socket实现通信,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一.Silverlight的Socket通信和控制台、WinFo...
    99+
    2023-06-17
  • Python——用socket和线程实现
      1.基础知识   Socket(套接字) 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。由此知道套接字是全双工的。 线程(thread) 线程是操作系统能够进行运...
    99+
    2023-01-31
    线程 Python socket
  • 利用python socket管理服务器
    一.socketserver的handle方法处理请求二.实例化socketserver的handle方法def funzioneDemo():     server = ThreadingServer((HOST,PORT),Handle...
    99+
    2023-01-31
    服务器 python socket
  • C#中怎么利用Socket实现异步通讯
    这篇文章将为大家详细讲解有关C#中怎么利用Socket实现异步通讯,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C# Socket异步通讯客户端之主程序:using System;using...
    99+
    2023-06-17
  • Java 中怎么利用Socket实现网络传输
    今天就跟大家聊聊有关Java 中怎么利用Socket实现网络传输,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。采用Java Socket网络传输的序列化机制,将对象“压扁”成二进制字...
    99+
    2023-06-17
  • Python使用socket实现简单的文
           因为工作需要,要在两台设备之间进行压力测试。即A设备不断往B设备发送文件,B设备接收文件后校验文件是否正确接收。       用Python的socket模块写了简单的Server和Client脚本。Server负责监听端口,...
    99+
    2023-01-31
    简单 Python socket
  • Python实现局域网(Socket)通
    这学期课很多,加上学校就业办这边事情也不少,所以零散时间琢磨了很多天,开始想用进程的并发实现一个收,一个发,但ide无法实现同时print和input,所以暂时只实现了一个类似对讲机一样的程序,就是A说B听,然后B说A听,如此循环。 先看程...
    99+
    2023-01-31
    局域网 Python Socket
  • python利用socket实现客户端和服务端之间进行通信
    目录一、socketsocket通信的条件:IP和端口形象比喻二、客户端实现过程三、服务器实现过程四、演示五、实现持续通信过程前言: 今天教大家通过Python进行Socket网络编...
    99+
    2024-04-02
  • Python socket 实现进程间通
    Python socket 使用方法如下 socket = socket.socket(family, type[, protocal]) family代表地址家族,一般为AF_UNIX,AF_INET和AF_INET6。A...
    99+
    2023-01-31
    进程 Python socket
  • 利用virtualenv实现Python
    由于开发需求,需要Python2和Python3共存,利用当下最流行的虚拟环境工具virtualenv实现。#安装virtualenv pip install virtualenv #使用virtualenv创建虚拟环境 virtualen...
    99+
    2023-01-31
    virtualenv Python
  • python用c/s实现服务器简单管理
    由于有大量的windows虚拟机用来做一些任务。这些windows上的机器程序要经常更新。每次部署升级,需要一台台的远程桌面上去操作,进行简单升级操作。这样讲花费大量时间。并且伴随windows机器的增加,将更加难管理。 无需远程桌面,...
    99+
    2023-01-31
    简单 服务器 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作