无法在ubuntu上运行bash主机脚本

时间:2014-09-07 19:32:11

标签: linux bash shell scripting

我的同事写了一个脚本来显示我需要记录的网络中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提交报告,以防需要这些知识。感谢任何人都可以提供给我的帮助!

2 个答案:

答案 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语句中交换单引号用于返回刻度并且像魅力一样工作。感谢所有那些尝试过帮助的人!