python獲取本機地址
『壹』 如何用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"命令)。實現物理地址。之後,根據「短時間內該機器的網卡不會出現過大的變動這個前提」,我們可以根據返回內容,切片出我們需要的部分即可。