LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1634|回复: 12

[求助]如何取得本机IP并赋给某变量?

[复制链接]
发表于 2008-1-12 19:18:37 | 显示全部楼层 |阅读模式
我就想到ifconfig,但它的输出在第二行,要如何写grep呢?

我需要像 123.123.123.123 那样的(不含空格的)结果
发表于 2008-1-12 20:30:45 | 显示全部楼层
my_ip=`/sbin/ifconfig eth0 | awk '/inet addr/{print $2}' | cut -d: -f2`
回复 支持 反对

使用道具 举报

发表于 2008-1-12 20:38:21 | 显示全部楼层
[root@stu3 etc]# ip ad sh
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:0c:29:4f:a6:bd brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.4/24 brd 192.168.1.255 scope global eth0
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:0c:29:4f:a6:c7 brd ff:ff:ff:ff:ff:ff
    inet 10.10.10.10/8 brd 10.255.255.255 scope global eth1
[root@stu3 etc]#

[root@stu3 etc]# ipaddr=$(ip ad sh to 0/0 scope global | awk '/[[:space:]]inet / { print gensub("/.*","","g",$2) }')

[root@stu3 etc]# echo $ipaddr
192.168.1.4 10.10.10.10
[root@stu3 etc]#

[root@stu3 etc]# ip ad sh eth0 to 0/0 scope global | awk '/[[:space:]]inet / { print gensub("/.*","","g",$2) }'
192.168.1.4
[root@stu3 etc]#
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-12 21:19:54 | 显示全部楼层
awk那个看懂了.

3楼的ip是哪个软件包的?

我当然是用ifconfig,但对显示mtu的工具有些好奇.
回复 支持 反对

使用道具 举报

发表于 2008-1-12 21:27:19 | 显示全部楼层
Post by galaxy001;1806261
awk那个看懂了.

3楼的ip是哪个软件包的?

我当然是用ifconfig,但对显示mtu的工具有些好奇.

[root@stu3 245-124]# rpm -qf $(which ip)
iproute-2.6.18-4.el5
[root@stu3 245-124]#
回复 支持 反对

使用道具 举报

发表于 2008-1-13 00:42:28 | 显示全部楼层
不少发行版默认都没装iproute, 还是老实用ifconfig吧
回复 支持 反对

使用道具 举报

发表于 2008-1-25 22:41:40 | 显示全部楼层
myip=hostname -i
回复 支持 反对

使用道具 举报

发表于 2008-1-26 16:39:23 | 显示全部楼层
  1. ifconfig eth0 | sed -n '/inet/{s/.*addr:\([^ ]*\).*/\1/p}'
  2. 或者
  3. ifconfig eth0 | grep -o 'addr:[^ ]*' | grep -o '[0-9.]*'
复制代码
回复 支持 反对

使用道具 举报

发表于 2008-1-26 18:46:25 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2008-1-27 21:43:56 | 显示全部楼层
我的作法是ifconfig eth0 | awk '/inet addr/{print $2}' | sed 's/addr://g'
第一次看到还有cut这么个命令,以前只会sed
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表