value1=ns1.abc.nl.
value2=ns2.abc.nl.
value3=ns3.abc.nl.
for domains in $(cat /home/carlito/Desktop/output.txt)
do
for nameserver in $(dig +short NS $domains)
do
if [[ ( $nameserver -eq $value1 ) || ( $nameserver -eq $value2 ) || ( $nameserve$
then
echo "$domains Namserver is local" >>/home/carlito/Desktop/resultaat.txt
break
else
echo "$domains namserver IS NOT local" >>/home/carlito/Desktop/resultaat.txt
fi
done
done
所以我在脚本的IF行遇到问题错误消息=“ nszero1.axc.nl。:语法错误:算术运算符无效(错误标记为”.axc.nl。“”。
此脚本的目的= '获取output.txt(域列表)''然后挖掘+短NS $域'然后检查它是否在我的首选名称服务器$ Value1,2,3 if true = good if false = bad
我已经尝试了类似的事情:
value="ns1.abc.nl./ns2.abc.nl/ns3.abc.nl."
for domains in $(cat /home/carlito/Desktop/output.txt)
do
if dig +short NS $domains == $value
then
echo "$domains is LOCAL"
else
echo"$domains Is NOT LOCAL"
fi
done
但是这样做的是如果domain.nl = ns1.abc.nl./ns2.abc.nl它仍然是echo:是非LOCAL。但我希望脚本能够Echo = true,如果它至少有一个值。
有人可以指出我正确的方向,我应该使用哪种功能,以及我对if行做错了什么?
提前致谢
答案 0 :(得分:0)
您正在将字符串与数值进行比较。以下if
条件中的语法是比较两个数值而不是字符串比较。您的if
条件也未使用]]
正确结束。我想你将字符串与数值进行比较。请参阅以下正确的if
条件: -
如果右手和左手值均为数字,则首先是正确的if条件: -
if [[ ( $nameserver -eq $value1 ) || ( $nameserver -eq $value2 ) ]]
正确的字符串比较: -
if [[ ( "$nameserver" == "$value1" ) || ( "$nameserver" == "$value2" ) ]]
希望这会对你有所帮助。