婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > linux下使用perl獲取本機ip的幾種方法介紹

linux下使用perl獲取本機ip的幾種方法介紹

熱門標簽:打電話機器人接我是他的秘書 河南信譽好的不封卡電話外呼系統 如果做線上地圖標注 揭陽智能電話機器人推薦 客服外呼系統怎么樣 地圖標注員都是年輕人 華鋒e路航港口地圖標注 江蘇云電銷機器人公司 百度地圖標注錯了有責任嗎

在使用 Gearman 做分布式處理時,各機需要注冊一個獨立的 job 作為信息反饋,為求方便,Gearman::Worker 腳本 register_function 代碼又要通用,于是想到了使用各自的 ip 地址作為 job 命名。

那么怎么在 worker 腳本里獲取本機 ip 作為 func 呢?

第一種辦法,最簡單的,調用 shell:

復制代碼 代碼如下:

$ip = `ifconfig eth0|grep -oE '([0-9]{1,3}\.?){4}'|head -n 1`;

注:這里輸入是固定的,所以簡單的 [0-9]{1,3} 了,如果是在 web 程序等地方驗證 ip,需要更嚴謹!
或:
復制代碼 代碼如下:

$ip = `ifconfig eth0|awk -F: '/inet addr/{split($2,a," ");print a[1];exit}'`;

好吧,這樣顯得太不 perl 了,而且頻繁的調用外部 shell 不太好

第二種:
 

復制代碼 代碼如下:

  open FH,"ifconfig eth0|";
    while(FH>){
        last unless /inet addr:((\d{1,3}\.?){4})/;
        print $1;
}

看起來稍微 perl 了一些,雖然實質跟上面的調用 shell 和 grep 法是一樣的。

第三種,更 perl 一點,純粹讀文件:

復制代碼 代碼如下:

open FH,'','/etc/sysconfig/network-scripts/ifcfg-eth0';
    while(FH>){
        next unless /IPADDR\s*=\s*(\S+)/;
    print $1;
}

進一步的,如果不一定 rh 系,還要去讀 /etc/issue ,確定網絡配置文件到底是 /etc/sysconfig/network-script/ifcfg-eth0 還是 /etc/network/interfaces 還是其他,然后根據不同發行版寫不同的處理方法……額,這是打算自己寫模塊么?

好吧,大家來充分體會 CPAN 的魅力,去 search 一下,找到一把 Sys::HostIP、Sys::HostAddr、Net::Inetface 等模塊。

第四種:

復制代碼 代碼如下:

use Sys::HostAddr;
    my $interface = Sys::HostAddr->new(ipv => '4', interface => 'eth0');
    print $interface->main_ip;

不過進去看看pm文件,汗,這幾個模塊都是調用ifconfig命令,不過是根據發行版的不同進行封裝而已。

第五種:

復制代碼 代碼如下:

perl -MPOSIX -MSocket -e 'my $host = (uname)[1];print inet_ntoa(scalar gethostbyname($host))';

不過有童鞋說了,這個可能因為hostname的原因,導致獲取的都是127.0.0.1……

那么最后還有一招。通過 strace ifconfig 命令可以看到,linux 實質是通過 ioctl 命令完成的網絡接口 ip 獲取。那么,我們也用 ioctl 就是了!

第六種如下:

復制代碼 代碼如下:

 #!/usr/bin/perl
    use strict;
    use warnings;
    use Socket;
    require 'sys/ioctl.ph';
    sub get_ip_address($) {
        my $pack = pack("a*", shift);
        my $socket;
        socket($socket, AF_INET, SOCK_DGRAM, 0);
        ioctl($socket, SIOCGIFADDR(), $pack);
        return inet_ntoa(substr($pack,20,4));
    };
    print get_ip_address("eth0");

這樣的好處,就是只調用了核心模塊,在分發腳本時,不用連帶安裝其他模塊。

注:這個其實是根據網上有的一個 py 的腳本修改的

py版如下:

復制代碼 代碼如下:

#!/usr/bin/python
    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])
    print get_ip_address('eth0')

2012年12月19日增:
為logstash的input/file.rb找到。
ruby版本的:

復制代碼 代碼如下:

#!/usr/bin/ruby
    require 'socket' 
    SIOCGIFADDR    = 0x8915          # get PA address           
    def get_ip_address(iface) 
      begin 
        sock = UDPSocket.new 
        buf = [iface,""].pack('a16h16') 
        sock.ioctl(SIOCGIFADDR, buf); 
        sock.close 
        buf[20..24].unpack("CCCC").join(".") 
      rescue 
        nil 
      end 
    end 
    if $0 == __FILE__ 
      puts get_ip_address('eth0') 
    end

不過看puppet里還是用ifconfig的方法,大家有時間可以搜索下相關內容。

標簽:金昌 巴彥淖爾 邵陽 淘寶邀評 婁底 馬鞍山 赤峰 許昌

巨人網絡通訊聲明:本文標題《linux下使用perl獲取本機ip的幾種方法介紹》,本文關鍵詞  linux,下,使用,perl,獲取,本機,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《linux下使用perl獲取本機ip的幾種方法介紹》相關的同類信息!
  • 本頁收集關于linux下使用perl獲取本機ip的幾種方法介紹的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    麻豆精品一区二区综合av| 福利一区二区在线| 成人看片黄a免费看在线| 色综合中文字幕| 国产露脸91国语对白| 亚洲免费观看视频| 日韩精品一二三区| 成人a级免费电影| 91精品国产乱| 国产精品二三区| 日韩国产一二三区| 在线精品视频一区二区| 中文字幕av一区二区三区免费看| 亚洲国产精品一区二区www在线 | 伊人婷婷欧美激情| 久久99精品久久久久久久久久久久 | 午夜视频在线观看一区二区| 播五月开心婷婷综合| 精品国产免费久久| 亚洲第一搞黄网站| 日本精品一区二区三区四区的功能| 久久久亚洲精品一区二区三区 | 成人激情黄色小说| 久久久久99精品国产片| 婷婷亚洲久悠悠色悠在线播放 | 欧美电影免费观看高清完整版| 一区二区三区欧美日| 99久久久无码国产精品| 欧美国产丝袜视频| 狠狠色综合色综合网络| 精品va天堂亚洲国产| 另类中文字幕网| 日韩欧美国产电影| 国产一区二三区好的| 久久久精品日韩欧美| 激情久久五月天| 久久久久久久久免费| 国产成人午夜精品影院观看视频| 久久综合九色综合97婷婷女人| 韩国女主播成人在线| 久久影院电视剧免费观看| 国产一二三精品| 1区2区3区欧美| 99精品国产热久久91蜜凸| 亚洲免费色视频| 欧美日韩国产免费| 麻豆精品一区二区综合av| 久久久亚洲欧洲日产国码αv| 成人少妇影院yyyy| 亚洲欧洲成人自拍| 欧美日韩精品一区二区三区蜜桃| 秋霞午夜av一区二区三区| 精品三级av在线| 粉嫩一区二区三区性色av| 亚洲三级在线免费| 欧美精品乱码久久久久久按摩 | 精品国产百合女同互慰| 日本一区二区三级电影在线观看| 中文字幕一区二区三区色视频| 欧美午夜精品免费| 国产激情视频一区二区在线观看 | 夜夜嗨av一区二区三区网页| 欧美美女一区二区在线观看| 日本不卡123| 国产香蕉久久精品综合网| eeuss鲁一区二区三区| 亚洲综合色网站| 欧美精品一区二区三区蜜桃| 成人av网站大全| 天堂一区二区在线免费观看| 久久欧美一区二区| 色综合天天综合给合国产| 肉色丝袜一区二区| 日韩一区日韩二区| 精品视频一区三区九区| 91麻豆国产福利在线观看| 日韩影院免费视频| 国产精品美女久久久久久久久久久| 欧洲亚洲国产日韩| 国产aⅴ综合色| 天天av天天翘天天综合网 | 国产宾馆实践打屁股91| 亚洲成人久久影院| 国产精品不卡一区| 日韩女优电影在线观看| 色一情一伦一子一伦一区| 国产一区二区三区四区五区入口| 亚洲香肠在线观看| 亚洲国产精品t66y| 精品久久国产老人久久综合| 欧美日韩一卡二卡| 一本到三区不卡视频| 国产成人精品综合在线观看| 日本一不卡视频| 亚洲一区在线观看视频| 国产精品国产三级国产有无不卡| 精品久久国产97色综合| 欧美美女网站色| 在线观看91视频| 99re成人在线| 97se亚洲国产综合自在线不卡| 国产精品性做久久久久久| 狠狠色狠狠色合久久伊人| 日日摸夜夜添夜夜添精品视频| 一区二区三国产精华液| 亚洲欧美日韩中文播放 | 欧洲精品中文字幕| 色婷婷综合激情| 色综合久久久久综合| 成人毛片老司机大片| 岛国一区二区在线观看| 国产一区91精品张津瑜| 精品午夜久久福利影院| 精品亚洲国内自在自线福利| 久久国产精品免费| 韩国成人在线视频| 国产成人亚洲综合a∨婷婷| 国产一区二区三区观看| 国产一区亚洲一区| 国产成人超碰人人澡人人澡| 国产精品一区久久久久| 国产成人精品综合在线观看 | 亚洲免费观看在线视频| 一区二区欧美视频| 日韩激情视频网站| 久草精品在线观看| 国产成人精品aa毛片| 99久久久国产精品| 欧美性色综合网| 在线不卡免费av| 日韩精品综合一本久道在线视频| 久久综合九色综合97婷婷| 国产欧美一区二区精品性色| 国产精品久久久久永久免费观看| 亚洲视频精选在线| 亚洲五月六月丁香激情| 欧美a级理论片| 国产一区二三区| 91热门视频在线观看| 欧美日韩国产成人在线91| 欧美变态tickle挠乳网站| 久久精品一区二区三区不卡牛牛| 亚洲视频资源在线| 免费看日韩精品| 国产精品夜夜嗨| 色婷婷精品大视频在线蜜桃视频| 欧美一区二区视频在线观看2022| 欧美激情综合五月色丁香小说| 亚洲美女在线一区| 韩国欧美一区二区| 91久久精品一区二区二区| 欧美v亚洲v综合ⅴ国产v| 亚洲精品国产第一综合99久久| 麻豆久久一区二区| 91小视频在线免费看| 欧美成人一区二区三区| 亚洲欧美日韩国产综合| 久久99久久精品| 欧美日韩一区二区三区高清| 欧美激情综合网| 午夜精彩视频在线观看不卡| 岛国精品在线播放| 日韩欧美一区电影| 一区二区在线观看视频| 国产在线精品国自产拍免费| 欧洲国产伦久久久久久久| 国产无遮挡一区二区三区毛片日本 | 韩国精品主播一区二区在线观看| 欧美亚洲一区二区在线观看| 欧美精品一区二区精品网| 亚洲午夜电影在线观看| av网站一区二区三区| 久久久久久免费| 毛片一区二区三区| 欧美日韩三级在线| 亚洲精品第1页| 不卡的电影网站| 国产喂奶挤奶一区二区三区| 久久99精品久久久| 日韩一区二区不卡| 亚洲成人精品在线观看| 欧美视频三区在线播放| 亚洲乱码国产乱码精品精的特点| 成人午夜电影小说| 中文字幕欧美日本乱码一线二线| 经典三级视频一区| 精品国产一区二区三区av性色| 日本午夜精品一区二区三区电影| 欧美日韩一区二区欧美激情| 国产精品久久久久久久久免费桃花| 精品一区二区三区日韩| 欧美卡1卡2卡| 日本欧美大码aⅴ在线播放| 91婷婷韩国欧美一区二区| 亚洲欧美成人一区二区三区| 国产一区二区三区在线观看免费| 91精品国产综合久久福利软件 | 美腿丝袜亚洲一区| 国产自产2019最新不卡| 国产午夜精品美女毛片视频|