python主機名
『壹』 關於python 不能返回我的主機名
socket.gethostbyname(),需要一個參數的,而且這個不是返回主機名,是返回主機名對應的ip地址
你想要用的可能是
socket.gethostname() 函數
『貳』 python selenium模塊使用出錯,這個怎麼改
s1.bind( address )
#由AF_INET所創建的套接字,address地址必須是一個雙元素元組,格式是(host,port)。host代表主機,port代表埠號。
#如果埠號正在使用、主機名不正確或埠已被保留,bind方法將引發socket.error異常。
#例: ('192.168.1.1',9999)!
『叄』 python中知道主機名和埠號怎麼打包為一個域名
例如
主機名:abc
埠號:8080
域名則是
ym = 'http://' + 'abc' + ':' + '8080'
『肆』 如何通過Python構造一個DNS查詢包
可以嘗試以下步驟:
ping一個域名,用wireshark抓一個DNS的query,看看各個欄位分別是什麼值;
用python的struct將這些欄位按順序pack成二進制數據;
用python的socket將構造好的數據發到DNS伺服器UDP的53號埠,本地埠可以自行指定;
用python的socket從buffer中讀取server返回的數據;
用python的struct將二進制數據中各個欄位按順序unpack回來;
列印顯示。
按照這個方法,同樣可以寫一個簡單的DNS伺服器,希望能有所幫助。
再具體點,可以參照The TCP/IP Guide 中的DNS message format來構造query的各個欄位:
Header部分
Identifier:16位的int,就是0-65535,可以用隨機數產生。
Flags:0x0100,其中:
#0... .... .... .... = Query/Response
Flag: query=0
#.000 0... .... .... = Opcode: standard query=0
#.... .0.. .... .... = Authoritative
Answer Flag
#.... ..0. .... .... = Truncated: not truncated=0
#.... ...1 .... .... = Recursion desired: recursively=1,如果想 iteratively就置1
#.... .... 0... .... = Recursion Available: response的東西,=0
#.... .... .000 .... = Zero: 保留欄位,=0
#.... .... .... 0000 = Response Code:=0
3.Question Count:16位的int,=0x0001
4.Answer Record Count:16位的int,=0x0000
5.Authority
Record Count:16位的int,=0x0000
6.Additional Record Count:16位的int,=0x0000
Question部分
QName:直接把域名打包進去;
QType:16位的int,我們要得到的是主機名,所以=0x0001,
QClass:16位的int,=0x0001
『伍』 python中gethostname得到的主機名是啥
importsocket
socket.gethostname()
#'hostname'
主機名就是計算機的名字(計算機名),網上鄰居就是根據主機名來識別的。這個名字可以隨時更改,在windows操作系統中,從我的電腦屬性的計算機名就可更改。
需要注意的是,主機名和用戶登錄名稱無關。
『陸』 用python實現secureCRT自動連接想要連接的主機
securecrt沒用過,一直都用的putty。
如果用putty的話可以
fromsubprocessimportPopen
args='/path/to/putty.exe','username@hostname','-pw','password'
Popen(args)
『柒』 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中os.path.gethostname 什麼意思
沒有這個os.path.gethostname
只有socket.gethostname() #hostname 主機名
『玖』 python怎麼獲取linux主機名
獲取主機名
import socket
hostName = socket.gethostname()
在 Python 語言環境下我們這樣連接資料庫。
In [1]: from mysql import connector
In [2]: cnx = connector.connect(host="172.16.192.100",port=3306,user="appuser",password="xxxxxx")
但是連接資料庫的背後發生了什麼呢?
答案
當我們通過驅動程序(mysql-connector-python,pymysql)連接 MySQL 服務端的時候,就是把連接參數傳遞給驅動程序,驅動程序再根據參數會發起到 MySQL 服務端的 TCP 連接。當 TCP 連接建立之後驅動程序與服務端之間會按特定的格式和次序交換數據包,數據包的格式和發送次序由MySQL 協議規定。MySQL 協議:https://dev.mysql.com/doc/internals/en/client-server-protocol.html整個連接的過程中 MySQL 服務端與驅動程序之間,按如下的次序發送了這些包。
MySQL 服務端向客戶端發送一個握手包,包里記錄了 MySQL-Server 的版本,默認的授權插件,密碼鹽值(auth-data)。
2. MySQL 客戶端發出 ssl 連接請求包(如果有必要的話)。
3. MySQL 客戶端發出握手包的響應包,這個包時記錄了用戶名,密碼加密後的串,客戶端屬性,等等其它信息。
4. MySQL 服務端發出響應包,這個包里記錄了登錄是否成功,如果沒有成功也會給出錯誤信息。