- 안녕하세요. 외부 또는 적어도 기본이 있는지 확인해야 합니다.지적 재산권기계의 주소가 주어지면,장치 유형/이름에 관계 없음. 나는 그 목적을 위해 그 짧은 대본을 재빨리 작성했지만, 나는 그것을 알아야 했습니다.결점그런 스크립트입니다. 그리고 거기에 있는지 여부더 나은 시스템 호출외부 IP 주소를 결정합니다. 없는 경우 호스트의 기본 IP를 결정합니다. 또한 이를 달성할 수 있는 다른 도구가 있습니까?
- 테마 기계는 주로센트OS 5/6,젠투 1/2
#!/bin/bash
#!/bin/bash
#Author: Hanynowsky <[email protected]>
COM1=$(dig +short myip.opendns.com @resolver1.opendns.com)
COM2=$(hostname -i 2>/dev/null)
COM3=$(ip route show 2>/dev/null | grep src | grep -vE 'eth1.*|lo' | awk -Fsrc '{print $2}' | sed -e 's/ //g')
COM4=$(curl -s monip.org 2>/dev/null | grep -o -E '([0-9]+\.){3}[0-9]+')
COM5=$(host `hostname -f 2>/dev/null` | awk -F[aA]ddress '{print $2}' | sed 's/ //g')
COM6=$(for i in eth0 em1 bond0; do inf=`ip -4 addr show dev $i 2>/dev/null | grep inet -m1 | cut -d/ -f1 | awk '{ print $2}'`;if [[ "$inf" =~ [0-9][0-9]?* ]]; then echo "$inf";fi ;done)
if [[ "$1" =~ local ]] ;then
COM1=$COM3
fi
if [[ "$1" =~ private ]] ;then
COM1=$COM2
fi
if [[ "$1" =~ host ]] ;then
COM1=$COM5
fi
IP=''
validip()
{
local ip=$1
local stat=1
if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
OIFS=$IFS
IFS='.'
ip=($ip)
IFS=$OIFS
[[ ${ip[0]} -le 255 && ${ip[1]} -le 255 && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
stat=$?
fi
if [ "$stat" -eq 0 ]; then
echo $IP
else
echo $stat
fi
return $stat
}
if [ -n "${COM1}" ];then
IP=${COM1}
eval validip $IP
exit
fi
if [ -n "${COM2}" ];then
IP=${COM2}
eval validip $IP
exit
fi
if [ -n "${COM3}" ];then
IP=${COM3}
eval validip $IP
exit
fi
if [ -n "${COM4}" ];then
IP=${COM4}
eval validip $IP
exit
fi
if [ -n "${COM5}" ];then
IP=${COM5}
eval validip $IP
exit
fi
if [ -n "${COM6}" ];then
IP=${COM6}
eval validip $IP
exit
fi
exit