2016-11-12 75 views
1

我不明白为什么我的脚本不起作用。当我在Linux中连接互联网时,它会显示在线短语。当我没有互联网连接时,仍然显示在线短语而不是离线。Ubuntu - 如果命令似乎不提供其他结果

#!/bin/bash 
# system_page - A script to monitor various connections and produce 
# system information in HTML file 

##### Constants 
TITLE="Monitor Information for $HOSTNAME" 
RIGHT_NOW=$(date +"%x %r %Z") 
TIME_STAMP="Updated on $RIGHT_NOW by $USER" 
# clear the screen 
clear 

echo -e "GET http://google.com HTTP/1.0\n\n" | nc google.com 80 > /dev/null 2>&1 



function net_info 
{ 
if [ $? -eq 0 ]; then 
echo "Online" 
echo "<h2 style="background-color:#00FF00"><font size="6"> INTERNET IS CONNECTED</h2>" 
else 
echo "Offline" 
echo "<h2 style="background-color:#FF0000"><font size="6"> INTERNET IS NOT CONNECTED</h2>" 
fi 
} 
##### Main 
cat <<- _EOF_ 
<html> 
<head> 
<title style="background-color:#0000FF">$TITLE</title> 
</head> 
<body> 
<h1>$TITLE</h1> 
<p>$TIME_STAMP</p> 
$(net_info) 
</body> 
</html> 
_EOF_ 
+2

这是因为几乎所有在bash是一个命令,做你的支票后,你定义一个函数的函数里面的线 - 这是成功的,因此状态代码为0.您应该在检查状态之前将检查移入该函数,或将状态保存在变量中并检查net_info函数中的变量。 – jszakmeister

+0

非常感谢,它有效。 –

回答

0

由于Jszameister帮助它工作的,当我提出这样的

function net_info 
{ 
echo -e "GET http://google.com HTTP/1.0\n\n" | nc google.com 80 > /dev/null 2>&1 
if [ $? -eq 0 ]; then 
echo "Online" 
echo "<h2 style="background-color:#00FF00"><font size="6"> INTERNET IS CONNECTED</h2>" 
else 
echo "Offline" 
echo "<h2 style="background-color:#FF0000"><font size="6"> INTERNET IS NOT CONNECTED</h2>" 
fi 
}