100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Shell脚本中获取本机ip地址

Shell脚本中获取本机ip地址

时间:2024-06-20 22:07:31

相关推荐

Shell脚本中获取本机ip地址

1.单网卡

方法1:

#!/bin/sh

local_ip=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"​`

echo "${local_ip}"

命令解释:

ifconfig -a//和window下执行此命令一样道理,返回本机所有ip信息

grep inet//截取包含ip的行

grep -v 127.0.0.1 //去掉本地指向的那行

grep -v inet6 //去掉包含inet6的行

awk { print $2} //$2 表示默认以空格分割的第二组 同理 $1表示第一组​

tr -d "addr:" //删除"addr:"这个字符串

方法2:

ip addr | awk '/^[0-9]+: / {}; /inet.*global/ {print gensub(/(.*)\/(.*)/, "\\1", "g", $2)}'

2. 多网卡

当多网卡时,会出现多个不同网段的IP

例如:服务器器有172.17.0.1和172.24.7.44网段的IP,根据不同网段的IP地址打印不同的输出,shell脚本如下:

#!/bin/sh

local_ip=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"​`

echo "${local_ip}"

for var in ${local_ip[@]}

do

echo "多网卡IP:$var"

done

array=(`echo $local_ip | tr '\n' ' '` )

num=${#array[@]} #获取数组元素的个数。

echo "IP数目:$num"

for var in ${array[@]}

do

echo "ip:$var"

done

功能:多网卡时,根据序号选择对应的IP地址

#!/bin/sh

function getIpAddr(){

# 获取IP命令

ipaddr=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"​`

array=(`echo $ipaddr | tr '\n' ' '` ) # IP地址分割,区分是否多网卡

#array=(172.20.32.214 192.168.1.10);

num=${#array[@]} #获取数组元素的个数

# 选择安装的IP地址

if [ $num -eq 1 ]; then

#echo "*单网卡"

local_ip=${array[*]}

elif [ $num -gt 1 ];then

echo -e "\033[035m******************************\033[0m"

echo -e "\033[036m* 请选择安装的IP地址 \033[0m"

echo -e "\033[032m* 1 : ${array[0]} \033[0m"

echo -e "\033[034m* 2 : ${array[1]} \033[0m"

echo -e "\033[035m******************************\033[0m"

#选择需要安装的服务类型

input=""

while :

do

read -r -p "*请选择安装的IP地址(序号): " input

case $input in

1)

local_ip=${array[0]}

#echo "选择网段1的IP为:${local_ip}"

break

;;

2)

local_ip=${array[1]}

#echo "选择网段2的IP为:${local_ip}"

break

;;

*)

echo "*请输入有效的数字:"

;;

esac

done

else

echo -e "\033[31m*未设置网卡IP,请检查服务器环境! \033[0m"

exit 1

fi

}

# 校验IP地址合法性

function isValidIp() {

local ip=$1

local ret=1

if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then

ip=(${ip//\./ }) # 按.分割,转成数组,方便下面的判断

[[ ${ip[0]} -le 255 && ${ip[1]} -le 255 && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]

ret=$?

fi

return $ret

}

local_ip=''

getIpAddr #自动获取IP

isValidIp ${local_ip} # IP校验

if [ $? -ne 0 ]; then

echo -e "\033[31m*自动获取的IP地址无效,请重试! \033[0m"

exit 1

fi

echo "*选择安装的IP地址为:${local_ip}"

获取IP地址:

代码如下:

ifconfigeth0|grep"inetaddr:"|awk'{print$2}'|cut-c6-

shell常用命令有哪些

1.rm指删除文件;2.echo是指显示指定文本;3.cat 文件名,输出文件内容到基本输出;4.cb,格式化源代码;5.date,当前的时间和日期

————————————————

版权声明:本文为CSDN博主「Word哥」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:/finghting321/article/details/108476650

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。