Python Linuxホストipの簡単な実現方法
本明細書の例は、Pythonがlinuxホストipを取得するための簡単な実施方法を説明する。皆さんに参考にしてあげます。具体的には以下の通りです。
pythonにはホストのipアドレスを取得できるいくつかの方法があります。私がよく使うのはsocket.socket()を通してinet_ntoa()で実現して、とても便利です。しかし、この方法にはネットカード名(例えば、ETh 0)をパラメータとして送るという制限があります。以上の方法でip投げ異常を取得した場合、shellコマンドと配管を調整して、欲しいipをフィルタします。
ここで述べたように、皆様のPythonプログラムの設計に役に立ちます。
pythonにはホストのipアドレスを取得できるいくつかの方法があります。私がよく使うのはsocket.socket()を通してinet_ntoa()で実現して、とても便利です。しかし、この方法にはネットカード名(例えば、ETh 0)をパラメータとして送るという制限があります。以上の方法でip投げ異常を取得した場合、shellコマンドと配管を調整して、欲しいipをフィルタします。
import socket
import fcntl
import struct
"""
ip
ifname: 'lo' , 'eth0' ip
"""
def get_ip_address(ifname='eth0'):
try:
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])
except:
ips = os.popen("LANG=C ifconfig | grep \"inet addr\" | grep -v \"127.0.0.1\" | awk -F \":\" '{print $2}' | awk '{print $1}'").readlines()
if len(ips) > 0:
return ips[0]
return ''
Pythonに関する詳細について興味がある読者は、本駅のテーマを見てください。「Python関数使用テクニックのまとめ」「Python文字列操作テクニックのまとめ」「Python入門と階段の経典教程」「Pythonファイルとディレクトリ操作の概要」ここで述べたように、皆様のPythonプログラムの設計に役に立ちます。