验证和搜索IP地址



我正在尝试做两件事:1。测试有效性的IP地址。2.在具有许多IP地址的文件中搜索IP地址。" IPS"是文件。这就是我到目前为止的。每次运行脚本时,我都会得到这个:如果IP地址在文件中,我总是会找到" IP地址并保存"。请帮忙。谢谢您的高级

$ ./test1
 IP address: 202
 Not Valid. Please re-enter the ip address
 IP address: 202.124.64.0
 IP address NOT found, and saved
 IP address: 109.234..232.0
 Not Valid. Please re-enter the ip address
 IP address: 109.234.232.0
 IP address NOT found, and saved

脚本:

 #!/bin/bash
 while true; do
 echo -e "IP address: c"
 read ip
 function valid_ip()
 {
   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
     return $stat
 }
 if valid_ip $ip; then
    if grep 'valid_ip $ip' ips; then
       echo "IP address found, and saved"
      else
       echo "IP address NOT found, and saved"
    fi
   else
    echo "Not Valid. Please re-enter the ip address"
 fi
 done

保持您的功能:

valid_ip() {
   local stat=1
   ip="$1"
   if [[ $ip =~ [0-9]{1,3}.[0-9{1,3}.[0-9]{1,3}.[0-9]{1,3}$ ]]; then
        OIFS=$IFS
        IFS='.'
        a=($ip)
        IFS=$OIFS
        [[ ${a[0]} -le 255 && ${a[1]} -le 255 && ${a[2]} -le 255 && ${a[3]} -le 255 ]]
        stat=$?
   fi
   return $stat
}

然后称其为:

 while true; do
 reap -p "Enter an IP address: " ip
 if valid_ip $ip; then
     echo "IP address found, and valid"
     break;
 else
    echo "Not Valid. Please re-enter the ip address"
 fi
 done

您的引号关闭。$变量不会在bash中的单个引号中展开,因此它正在搜索字符串$ip,而不是变量中包含的IP地址。所以

if grep 'valid_ip $ip' ips; then

应该是

if grep $(valid_ip "$ip") ips; then

相关内容

  • 没有找到相关文章

最新更新