获取Linux IP地址的六种方法总结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取Linux IP地址的六种方法总结相关的知识,希望对你有一定的参考价值。
参考技术A 本文总结六种查看Linux IP地址的方法,方便以后的运维开发工作。在介绍前先学习一下三个命令行筛选的主要的指令,也是频繁使用到的命令。
1、head。 head 命令可用于查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10。
运行head --help查看说明信息:
-q 隐藏文件名
-v 显示文件名
-c<数目> 显示的字节数。
-n<行数> 显示的行数。
2、grep。 grep 命令用于查找文件里符合条件的字符串。运行grep --help查看说明信息,参数太多主要有以下几种:
grep -r递归选择。
grep -v反选,显示不包含匹配文本的所有行。
grep -n显示符合样式的那一行之前。
grep -A显示符合范本样式的那一列之外,并显示该行之后的内容。
3、awk。 强大的文本分析工具,命令使用过于复杂(awk --help),只需要知道 awk 'print$2'为打印第二行数据。
4、tail 。tail命令可用于查看文件的结束部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10。tail --help查看主要的参数:
tail -n显示最后多少行
tail -c显示最后十个字符
tail -f 循环读取,跟踪显示最后十行
5、cut。 显示每行从开头算起的文字。
cut -b :以字节为单位进行分割。
cut -c :以字符为单位进行分割
cut -d :自定义分隔符,默认为制表符
cut -f :与-d一起使用,指定显示哪个区域
无线网卡地址:
echo wlan0=`ifconfig wlan0 | head -n2 | grep inet | awk 'print$2'`
有线网卡地址:
echo eth0=`ifconfig eth0 | head -n2 | grep inet | awk 'print$2'`
或者命令:
ifconfig | grep "inet " | cut -d: -f2 | awk 'print $1' | grep -v "^127."
无线网卡地址:
ip address | grep wlan0 | awk 'print$2'
有线网卡地址:
ip address | grep eth0 | awk 'print$2'
或者
echo eth0=`ip address show eth0 | head -n4 | grep inet | awk 'print$2'
echo wlan0=`ip address show wlan0 | head -n4 | grep inet | awk 'print$2'
运行hostname -help命令查看说明信息:
Program options:
-a, --alias alias names
-A, --all-fqdns all long host names (FQDNs)
-b, --boot set default hostname if none available
-d, --domain DNS domain name
-f, --fqdn, --long long host name (FQDN)
-F, --file read host name or NIS domain name from given file
-i, --ip-address addresses for the host name
-I, --all-ip-addresses all addresses for the host
-s, --short short host name
-y, --yp, --nis NIS/YP domain name
hostname -i得到环回地址127.0.1.1, hostname -I得到具体的网卡信息192.168.31.82 。
php语言查看ip就是使用函数shell_exec来执行shell命令。
比如:
<?php
echo shell_exec("echo wlan0=`ifconfig wlan0 | head -n2 | grep inet | awk 'print$2'`");
?>
然后执行php ip.php 。shell_exec()里面可以放置任何shell命令。这个方法的意义在于php可以通过网页对外提供服务。
#!/usr/bin/env 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])
Local_wlan0=get_ip_address("wlan0")
Local_lo=get_ip_address("lo")
#Local_eth0=get_ip_address("eth0")
print Local_wlan0
print Local_lo
#print Local_eth0
利用socket包,然后执行python ip.py 得到wlan0信息。
#!/usr/bin/env python
import os
def get_ip():
out = os.popen("echo wlan0=`ifconfig wlan0 | head -n2 | grep inet | awk 'print$2'`").read()
print out
if __name__ == '__main__':
get_ip()
和php的shell_exec函数类似,os.popen()里面可以放置任何shell命令。注意有个函数os.system的结果只是命令执行结果的返回值,执行成功为0;os.popen()可以读出执行的内容,输出的结果比较特殊,带换行符\n 。
Java Array.sort的六种常用方法总结
Arrays.sort()的六种用法
一:直接用,升序排序
/**
* 用法一,升序排序
*/
int[] nums1 = new int[]4, 6, 8, 0, 5, 9, 7, 2, 1, 3;
Arrays.sort(nums1);
二:传入参数 fromIndex、toIndex,部分升序排序
/**
* 用法二,部分升序排序
*/
int[] nums2 = new int[]4, 6, 8, 0, 5, 9, 7, 2, 1, 3;
Arrays.sort(nums2, 0, 3);
三:重写比较器Comparator,降序排序
/**
* 用法三,降序排序
*/
Integer[] nums3 = new Integer[]4, 6, 8, 0, 5, 9, 7, 2, 1, 3;
Arrays.sort(nums3, new Comparator<Integer>()
@Override
public int compare(Integer o1, Integer o2)
return o2 - o1;
);
四:结合二和三(传参 + 重写),部分降序排序
/**
* 用法四,部分降序排序
*/
Integer[] nums4 = new Integer[]4, 6, 8, 0, 5, 9, 7, 2, 1, 3;
Arrays.sort(nums4, 0, 3, new Comparator<Integer>()
@Override
public int compare(Integer o1, Integer o2)
return o2 - o1;
);
五:二维数组的特殊排序
/**
* 用法五,二维数组排序
* 根据nums5[i][0]排序, 若num5[i][0]相同,则根据nums5[i][1]排序
*/
int[][] nums5 = new int[][]1, 3, 1, 2, 4, 5, 3, 7;
Arrays.sort(nums5, new Comparator<int[]>()
public int compare(int[] a, int[] b)
if(a[0]==b[0])
return a[1] - b[1];
else
return a[0] - b[0];
);
六:与五一样,写法不同
/**
* 用法六,与用法五一样,写法不同
*/
int[][] nums6 = new int[][]1, 3, 1, 2, 4, 5, 3, 7;
Arrays.sort(nums6, (a,b) -> (a[0]==b[0] ? a[1] - b[1] : a[0] - b[0]));
输出结果
待补充
以上是关于获取Linux IP地址的六种方法总结的主要内容,如果未能解决你的问题,请参考以下文章