相关疑难解决方法(0)

可靠地在Python中获取IPV6地址

目前我这样做:

def get_inet_ip():
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.connect(('mysite.com', 80))
    return s.getsockname()[0]
Run Code Online (Sandbox Code Playgroud)

这基于: 使用Python的stdlib查找本地IP地址

但是,这看起来有点可疑.据我所知,它打开一个到mysite.com:80的套接字,然后返回该套接字的第一个地址,假设它是一个IPv4地址.这似乎有点狡猾...我不认为我们可以保证这样的情况.

这是我的第一个问题,是否安全?在启用IPv6的服务器上,是否可能意外返回IPv6地址?

我的第二个问题是,我如何以类似的方式获取IPv6地址.我将修改函数以采用可选的ipv6参数.

python sockets ipv6

8
推荐指数
2
解决办法
7684
查看次数

如何在python中为接口分配IP地址?

我有python脚本,为我的无线和有线接口设置IP4地址.到目前为止,我使用的subprocess命令如下:

subprocess.call(["ip addr add local 192.168.1.2/24 broadcast 192.168.1.255 dev wlan0"])
Run Code Online (Sandbox Code Playgroud)

如何使用python库设置接口的IP4地址?如果有任何方法可以使用python库获取已有的IP配置?

python linux subprocess python-2.7 ubuntu-12.04

8
推荐指数
2
解决办法
2万
查看次数

Python - 在运行相同应用程序的网络上获取计算机的IP地址和主机名

需要明确的是:我刚刚在2周前开始使用Python,但我是C#,ASP,PHP,JavaScript开发人员.

我刚刚用Python和PyQt开始了一个新项目,我希望我的项目能够成为一台服务器,能够在其他计算机上与该服务器的其他实例进行通信.

所以,我需要获取计算机的IP地址和主机名.

首先,我考虑使用MSDOS"net view"命令,但这是在我的工作中尝试此命令之前,并且发现这可能需要大约15秒(我认为这太慢了).

我有这个想法:https://stackoverflow.com/a/15497083/1598891

此外,"net view"命令可以返回不再在网络上的计算机,并在尝试按主机名获取其IP地址时导致异常(每次无法访问计算机时也会减慢进程).

我的问题:是否有办法在本地网络上获取所有计算机IP和主机名而不net view在Windows上传递,因为这net view可能是一个缓慢的操作?

另外,有没有办法只获得运行我的应用程序的计算机?(所以它会更快)

提前致谢

python windows networking ip-address

7
推荐指数
2
解决办法
4万
查看次数

python中的端口转发允许套接字连接

我使用套接字启动服务器,并希望允许客户端连接到它.

self.sock.bind(('0.0.0.0',0)) # 0.0.0.0 will allow all connections and port 0 -> os chooses a open port.
stroke_port=self.sock.getsockname()[1]
self.sock.listen(75)
self.open_port_popup(stroke_port)
Run Code Online (Sandbox Code Playgroud)

现在,对于其他客户端连接,我有端口转发它手动,它工作正常. 在此输入图像描述

我想以自动化方式做到这一点. - >我试试upnp.

import miniupnpc

def open_port(port_no):
    '''this function opens a port using upnp'''
    upnp = miniupnpc.UPnP()

    upnp.discoverdelay = 10
    upnp.discover()

    upnp.selectigd()

    # addportmapping(external-port, protocol, internal-host, internal-port, description, remote-host)
    result=upnp.addportmapping(port_no, 'TCP', upnp.lanaddr, port_no, 'testing', '')
    return result
Run Code Online (Sandbox Code Playgroud)

它打开一个如下图所示的端口.但第一张图片中显示的端口转发列表为空.它不起作用,客户端无法连接.我怎样才能解决这个问题?我错过了什么? 在此输入图像描述

python sockets networking

7
推荐指数
1
解决办法
1987
查看次数

容器之间的连接被拒绝

我尝试将运行 spring boot 2 应用程序的容器链接到运行 mongo 的容器,但连接被拒绝

docker-compose 文件有一个 mongo 容器(稍后也会在此处添加另一个用于 spring boot 的容器)

version: '3.1'

services:
  mongo:
    image: mongo
    container_name: springboot-mongo
    ports:
      - 27017:27017
    volumes:
      - $HOME/data/springboot-mongo-data:/data/db
      - $HOME/data/springboot-mongo-bkp:/data/bkp
    restart: always
Run Code Online (Sandbox Code Playgroud)

用于 Spring Boot 的 dockerfile

FROM openjdk:11
RUN apt-get update && apt-get install bash
RUN mkdir -p /opt/app
ENV PROJECT_HOME /opt/app
COPY build/libs/recipe-book.jar $PROJECT_HOME/recipe-book.jar
WORKDIR $PROJECT_HOME
CMD ["java", "-Dspring.data.mongodb.uri=mongodb://springboot-mongo:27017/recipes", "-jar","./recipe-book.jar"]
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的方式发送命令行 mongo uri:使用 localhost 而不是 springboot-mongo,我还尝试了这里的描述https://www.baeldung.com/spring-boot-command-line-arguments,更多具体来说-Dspring-boot.run.arguments=--spring.data.mongodb.uri=mongodb://springboot-mongo:27017/recipes。每次似乎都会遇到连接被拒绝的情况。

如何让 spring 容器连接到 mongo?

谢谢

更新,我还尝试将第二个容器添加到 docker-compose 文件中,如此 …

docker docker-compose

7
推荐指数
2
解决办法
2万
查看次数

连接两个docker-compose实例

我有一个dockerized应用程序,其中一些服务使用docker-compose运行.我想使用另一个搬运工-撰写应用,来连接与ElasticSearch/Logstash/Kibana(ELK)本申请搬运工-麋鹿.它们都在开发中的同一个docker机器上运行.在生产中,情况可能并非如此.

如何配置我的应用程序docker-compose.yml以链接到ELK堆栈?

docker docker-compose elastic-stack

6
推荐指数
2
解决办法
8616
查看次数

在连接了会议点服务器之后,如何使2个客户端直接相互连接?

我正在写一个玩具会议点/中继服务器,在端口5555上监听两个客户端"A"和"B".

它的工作原理如下:服务器从第一个连接的客户端A接收的每个字节都将被发送到第二个连接的客户端B,即使A和B不知道它们各自的IP:

A -----------> server <----------- B     # they both connect the server first
A --"hello"--> server                    # A sends a message to server
               server --"hello"--> B     # the server sends the message to B
Run Code Online (Sandbox Code Playgroud)

此代码目前正在运行:

# server.py
import socket, time
from threading import Thread
socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.bind(('', 5555))
socket.listen(5)
buf = ''
i = 0

def handler(client, i):
    global buf
    print 'Hello!', client, i 
    if i == 0:  # client A, who sends data to …
Run Code Online (Sandbox Code Playgroud)

python sockets networking nat hole-punching

6
推荐指数
1
解决办法
340
查看次数

如何发现正在运行的 AWS lambda 的本地 IP 地址或 ENI?

我正在尝试发现当前正在执行的 AWS Lambda 的 VPC IP 地址或 AWS ENI,以便我可以使用该 IP 地址来过滤 VPC 日志以查找匹配的记录。Lambda 在 VPC 中运行,没有公共 IP 地址。

我尝试过这里建议的各种技术:

使用 Python 的 stdlib 查找本地 IP 地址

但这些对我不起作用,因为我认为它们是从容器的角度而不是 VPC 的角度显示容器的 IP 地址。

python ip-address discovery amazon-web-services aws-lambda

6
推荐指数
1
解决办法
7075
查看次数

在python中找到我的IP地址

可能重复:
使用Python的stdlib查找本地IP地址

我怎样才能得到我的IP地址?

socket.gethostbyname( socket.gethostname() )  
Run Code Online (Sandbox Code Playgroud)

这是返回127.0.1.1,但我怎样才能获得真正的IP?

python ip networking

5
推荐指数
0
解决办法
1803
查看次数

使用Python在LAN上查找实时节点

我正在创建一个与Python 2.7和Windows中的IP Messenger相同的Messenger.

我想要与IP Messenger用于查找通过LAN运行相同软件的系统相同的功能,但我无法理解该技术.

有人可以帮我解决使用Python 2.7和套接字库在LAN查找运行相同软件的计算机IP地址或主机名问题.

请提出一些可以在Windows上实现的内容,而不是像Nmap(仅限于Linux),如果解决方案是Python的套接字库代码,那将非常有用.

python ip networking lan python-sockets

5
推荐指数
1
解决办法
2万
查看次数