检查IP是否存在于/etc/hosts文件中。

8

我正在尝试创建一个.sh脚本,检查/etc/hosts中是否存在像"teamspeak.com"这样的IP /域名,如果不存在,则希望向hosts文件添加一些内容。

现在我正在尝试使用以下方式:

if ! grep -q "teamspeak.com == teamspeak.com" /etc/hosts; then
    echo "Exists"
else
    echo "Add to etc host ting here" >> /etc/hosts;

fi

1
你知道的,问题应该有问题。 - karthik manchala
抱歉,IPS 在这里是什么意思?我不明白你想要什么! - Am_I_Helpful
我认为他指的是将IP地址解析到未解决的域名上。 - karthik manchala
是的,它应该查找IP/域名。 - JonathanNet
1个回答

13
grep -q 

如果找到任何匹配项,则以 0 退出,否则以 1 退出,因此您需要删除 ! 和 == 比较符号:

if grep -q "teamspeak.com" /etc/hosts; then
    echo "Exists"
else
    echo "Add to etc host ting here" >> /etc/hosts;
fi
注意,这不是基于单词的搜索,因此它也会找到myteamspeak.com或teamspeak.com.us等网址。要获取完整的主机名,您需要使用带有分隔符的cut命令。
要添加新主机,请使用:
echo "127.0.0.1 teamspeak.com" >> /etc/hosts

做得好,提供了一个相关的脚本答案,当问题的意图可能是不相关的时候(我认为他在问应该放什么在“添加到等”占位符中...这与编程无关)。 - Ben Voigt
看起来很不错,但如果它不存在,我该如何添加它?http://nopaste.linux-dev.org/?450741 还有选项卡怎么办? - JonathanNet
如果在/etc/hosts文件中有一个带有grep术语(teamspeak.com)的注释条目,则此操作将失败。 - Anuruddha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接