Python Linuxホストipの簡単な実現方法

1575 ワード

本明細書の例は、Pythonがlinuxホストipを取得するための簡単な実施方法を説明する。皆さんに参考にしてあげます。具体的には以下の通りです。
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プログラムの設計に役に立ちます。