當前位置:首頁 » 編程語言 » python獲取本機地址

python獲取本機地址

發布時間: 2022-08-24 05:13:26

『壹』 如何用python獲取本機ip

import socket
localIP = socket.gethostbyname(socket.gethostname())#得到本地ip
print "local ip:%s "%localIP

『貳』 Python怎麼取到本機所有安裝的軟體

windows系統會在兩個地方記錄軟體列表:
64位:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
32位:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
這兩個注冊表存儲的軟體會重復,所以我們還要去重
我們使用python的標准庫_winreg來獲取軟體安裝列表,並輸出到文件中,代碼如下:
#!/usr/bin/python

import os
import socket
import _winreg

#將軟體安裝列表輸出到網盤上
os.system(r'net use p: \\10.0.0.6\public password /user:Lc\tanjun')

#使用主機名命名軟體安裝列表
hostname = socket.gethostname()
file = open(r'P:\todo\temp\%s.txt' % hostname, 'a')

#需要遍歷的兩個注冊表
sub_key = [r'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall', r'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall']

software_name = []

for i in sub_key:
    key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, i, 0, _winreg.KEY_ALL_ACCESS)
    for j in range(0, _winreg.QueryInfoKey(key)[0]-1):
        try:
            key_name = _winreg.EnumKey(key, j)
            key_path = i + '\\' + key_name
            each_key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, key_path, 0, _winreg.KEY_ALL_ACCESS)
            DisplayName, REG_SZ = _winreg.QueryValueEx(each_key, 'DisplayName')
            DisplayName = DisplayName.encode('utf-8')
            software_name.append(DisplayName)
        except WindowsError:
            pass

#去重排序
software_name = list(set(software_name))
software_name = sorted(software_name)

for result in software_name:
    file.write(result + '\n')

『叄』 python 怎麼獲取本機的外網ip

>>> import socket
>>> hostname = socket.gethostname()
>>> print hostname
LuciferYang.local
>>> ip = socket.gethostbyname(hostname)
>>> print ip
10.101.8.171
>>> ipList = socket.gethostbyname_ex(hostname)
>>> print ipList
('luciferyang.local', [], ['10.101.8.171'])

理論上,不是伺服器的話不用有直接外網IP到機器,辦公室環境或者家庭環境都是區域網環境,外網IP都在路由器上面

『肆』 python flask 怎麼默認訪問地址是本機地址

1、方法

flask運行伺服器後,會發現只有你自己的電腦可以使用服務,而網路中的其他電腦卻不行。
預設設置就是這樣的,因為在調試模式下該應用的用戶可以執行你電腦中的任意
Python 代碼。

關閉調試或信任你網路中的用戶,那麼可以讓伺服器被公開訪問。只要像這樣改變 run() 方法的調用:

app.run(host='0.0.0.0', port=80)
2、說明

app.run(host='0.0.0.0', port=80)
此代碼可以讓主機通過本機IP和80埠訪問伺服器。
3、函數說明

run(host=None, port=None, debug=None, **options)
在本地開發伺服器上運行應用程序。 如果調試標志被設置,伺服器將自動重新載入代碼更改,並顯示一個調試器,以防發生異常。
如果要以調試模式運行應用程序,但禁用互動式調試器上的代碼執行,則可以將use_evalex = False作為參數傳遞。 這將使調試器的追溯屏幕保持活動,但禁用代碼執行。

『伍』 python怎麼獲取本機ip

importsocket
defget_ip():
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
try:
#doesn'tevenhavetobereachable
s.connect(('10.255.255.255',0))
IP=s.getsockname()[0]
except:
IP='127.0.0.1'
finally:
s.close()
returnIP

linux、windows均測試通過

『陸』 python怎麼獲取本機ip

第一種:
復制代碼代碼如下:
import
socket
import
fcntl
import
struct
def
get_ip_address(ifname):
s
=
socket.socket(socket.af_inet,
socket.sock_dgram)
return
socket.inet_ntoa(fcntl.ioctl(
s.fileno(),
0x8915,
#
siocgifaddr
struct.pack('256s',
ifname[:15])
)[20:24])
#get_ip_address('lo')環回地址
#get_ip_address('eth0')主機ip地址

『柒』 如何使用python獲取本機網關和dns伺服器

window環境下 沒有研究過 ubuntu 下 ,我試過的法子是: 網關: import netifaces as ni gws = ni.gateways() DNS: 直接在ubuntu的配置DNS文件取 /etc/resolvconf/ 下相關文件 格式類似: nameserver 144.144.144.144 nameserver 8.8.8.8

『捌』 python 為什麼是127.0.0.1

python不是127.0.0.1
127.0.0.1是默認的本機IP地址,換句話說,不管當前電腦是否聯網,實際IP如何,都可以用127.0.0.1表示本機地址。

『玖』 為什麼用python獲取mac地址會變動

首先聲明,我本人還沒有研究出來問題的究竟。此處只是寫下我本人的一點小心得,大家一起進步。

因為我發現,使用uuid庫得到的mac地址,總有最後一位不對。所以,我就查看了python官方的uuid文檔,找到了問題的關鍵是調用UUID()的時候,會調用getnode()函數以得到物理地址。

這個是getnode()函數的定義:

我把它摘出來,考到下面。

def getnode(*, getters=None):
"""Get the hardware address as a 48-bit positive integer.

The first time this runs, it may launch a separate program, which could
be quite slow. If all attempts to obtain the hardware address fail, we
choose a random 48-bit number with its eighth bit set to 1 as recommended
in RFC 4122.
"""
global _node
if _node is not None:
return _node

if sys.platform == 'win32':
getters = _NODE_GETTERS_WIN32
else:
getters = _NODE_GETTERS_UNIX

for getter in getters + [_random_getnode]:
try:
_node = getter()
except:
continue
if (_node is not None) and (0 <= _node < (1 << 48)):
return _node
assert False, '_random_getnode() returned invalid value: {}'.format(_node)


我正在試圖通過研究這個問題來試圖研究。但同樣,我覺得我們可以直接讓python調用系統庫,從而執行系統自帶的命令:(類似於windows下cmd裡面"ipconfig -all"命令,或者ubuntu下terminal中"ifconfig"命令)。實現物理地址。之後,根據「短時間內該機器的網卡不會出現過大的變動這個前提」,我們可以根據返回內容,切片出我們需要的部分即可。

熱點內容
設置js緩存時間 發布:2025-01-18 04:43:44 瀏覽:511
360路由怎麼改密碼 發布:2025-01-18 04:43:08 瀏覽:408
飛智手柄安卓手機如何 發布:2025-01-18 04:39:53 瀏覽:699
安卓手機收藏的東西在哪裡找 發布:2025-01-18 04:16:19 瀏覽:7
安卓手機網路無法使用怎麼辦 發布:2025-01-18 04:12:55 瀏覽:363
摩斯密碼的杠是什麼 發布:2025-01-18 04:06:52 瀏覽:808
winsock搜伺服器ip 發布:2025-01-18 03:49:32 瀏覽:393
安卓手機藍牙默認地址在哪裡 發布:2025-01-18 03:47:57 瀏覽:906
shell腳本文件路徑 發布:2025-01-18 03:40:31 瀏覽:483
sql語句執行錯誤 發布:2025-01-18 03:21:49 瀏覽:651