我的同事写了一个脚本来显示我需要记录的网络中IP地址的主机名。问题是我已经确认该脚本在CentOS上运行没有问题。我不能在这一刻访问一个不受限制的CentOS盒子,所以我在这里使用沙盒命令行Ubuntu。出于某种原因,同样的剧本不会工作,并想知道是否有人可以指出我正确的方向?
这是脚本:
#!/bin/sh
ipranges="
173.225.176
127.0.0
"
for r in $ipranges; do
for i in `seq 1 255`; do
host $r.$i|grep -vi 'not found'
done
done
我也尝试将shebang行更改为/ bin / bash,但没有运气。我目前获得的错误如下,使用Ubuntu:
输出:
$ sh script.sh
socket.cL1915: internal_send: 0.0.0.1#53: invalid argument
如果有人需要知道这是如此,我们可以注明使用哪些IP来向ARIN提交报告,以防需要这些知识。感谢任何人都可以提供给我的帮助!
答案 0 :(得分:0)
我认为问题是ipranges
变量中的空行。表达式host $r.$i
似乎已扩展为host .1
,您的主机实现似乎将其解释为0.0.0.1
。 (不幸的是,我无法在我的盒子上重现这一点,但它似乎是一个合理的解释。)
尝试省略空行或更好:将所有IP地址写入一个甚至更好:使用正确的bash array(但是你应明确地使用/bin/bash
作为shebang)。
答案 1 :(得分:0)
如果有人想知道问题是虽然单引号可能有效,但似乎背叛是真正需要的。我在这里遵循了这篇文章的建议:
https://answers.yahoo.com/question/index?qid=20130805103907AAQ5CGh
基本上,在我的for语句中交换单引号用于返回刻度并且像魅力一样工作。感谢所有那些尝试过帮助的人!