Python10行代码制作企业内网IP地址查询网站

企业内部您是否遇到过IP无法定位和查询的情况,而网络和运维的部分平台不便开放给其他用户。所以本次搭建简单的IP查询网站给普通用户使用,

环境:
1.mongodb(可使用其他数据库),数据库安装可自行查询其他网站
2.streamlit
实现简单网站查询IP地址归属,简单方便。

streamlit安装可以参考

代码如下:

#coding:utf-8

import streamlit as st
import pymongo

@st.cache   # 开启缓存,如果不缓存,每次刷新都要请求,缓存可以减少搜索时间
def mongodb():
    # build connection
    conn = pymongo.MongoClient('192.168.100.100', 27017)  
    # connect dataBase
    mydb = conn.cmdb_data
    # get collection
    myCollect = mydb.cmdb_dns_list
    # myCollect.insert_one(data_dict)
    # print(myCollect)
    return myCollect

db = mongodb()
# a = db.find()  # 查询所有的数据库,无法直接查看,使用for循环可以打印出来
# a = db.find_one({"IP":"192.168.1.1"}) # 查询单条数据
# print(a)
# for i in a:
#     print(i)

st.header("IP地址查询")

title = st.text_input('请输入IP', '192.168.1.1')
st.write('输入的内容为', db.find_one({"IP":title}))

# df = a
# st.dataframe(df)

展示结果:
在这里插入图片描述

代码过于简单,可能存在注入等漏洞情况(虽然已经限制只查询IP),建议生产环境需要对输入的内容进行限制。避免出现被提权的情况,那就得不偿失啦

问题:

安装streamlit 可能遇到下列错误
在这里插入图片描述
解决方案:

1、升级setuptools
pip3 install --upgrade setuptools

2、升级pip工具
pip3 install --upgrade pip

再安装streamlit 已经成功
在这里插入图片描述

============================================================================

内网搭建公网IP查询页面

#coding:utf-8

import streamlit as st
import requests

@st.cache
def ip(ipaddress):
    url = "http://ip-api.com/json/{ip}?lang=zh-CN".format(ip=ipaddress)
    res = requests.get(url).json()
   # return res
    if res["status"] == "success":
        return {"状态": "成功" if res["status"] in "success" else "失败","国家": res["country"],"国家代码": res["countryCode"],"区域": res["region"],"省份": res["regionName"],"城市": res["city"],"邮政编码": res["zip"],"经度": res["lat"],"纬度": res["lon"],"时区": res["timezone"],"运营商": res["isp"],"企业或组织":res["org"],"AS": res["as"],"查询IP": res["query"]}
    else:
       return ["输入错误,请输入公网IP地址"]
st.header("IP地址查询")

title = st.text_input('请输入IP', '1.1.1.1')
# st.write('输入的内容为', db.find_one({"IP":title}))
st.write('输入的内容为', ip(title))

页面展示
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 Python 的 `socket` 模块来获取内网 IP。以下是一个示例代码: ```python import socket def get_internal_ip(): # 创建 UDP 套接字 sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) try: # 连接到公共 DNS 服务器 sock.connect(('8.8.8.8', 80)) # 获取本地 IP 地址 ip_address = sock.getsockname()[0] except socket.error: ip_address = '127.0.0.1' finally: # 关闭套接字连接 sock.close() return ip_address ``` 该函数通过创建一个 UDP 套接字,然后连接到公共 DNS 服务器来获取本地 IP 地址。如果连接失败,函数将返回默认的本地回环地址 `127.0.0.1`。 ### 回答2: Python可以通过获取本机的网络接口信息来获取内网IP地址。可以使用`socket`模块和`netifaces`模块来实现。以下是一个简单的示例代码: ```python import socket import netifaces def get_internal_ip(): interfaces = netifaces.interfaces() for interface in interfaces: if interface == 'lo': continue addresses = netifaces.ifaddresses(interface) if socket.AF_INET in addresses: for address in addresses[socket.AF_INET]: ip = address['addr'] if not ip.startswith('127.'): return ip return None internal_ip = get_internal_ip() if internal_ip: print(f"内网IP地址为:{internal_ip}") else: print("无法获取内网IP地址。") ``` 以上代码中,`get_internal_ip`函数会遍历所有网络接口,然后查找第一个非`localhost(lo)`接口的IPv4地址,并返回该地址作为内网IP地址。 需要注意的是,此方法只能获取到主机的内网IP地址,如果主机有多个网络接口或配置了多个虚拟网络,可能会返回多个内网IP地址。 ### 回答3: 在Python中,可以通过socket库来获取本机的内网IP地址。 首先,需要导入socket库: ```python import socket ``` 然后,可以使用socket库中的gethostbyname函数来获取本机的主机名,再通过gethostbyname函数来获取主机名对应的IP地址: ```python hostname = socket.gethostname() ip_address = socket.gethostbyname(hostname) ``` 最后,可以打印出获取到的IP地址: ```python print("本机内网IP地址为:" + ip_address) ``` 或者直接返回获取到的IP地址: ```python return ip_address ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值