经过多年的观看'我终于需要你的帮助! 我无法找到解决这个难题的方法。
我正在尝试创建一个脚本来检查服务器是否在我的ubuntu平台上运行,如果有echo" smthing"否则回声" other_thing"。
我在启动时被阻止,因为我需要检查我的localhost:端口是否有连接。
我正在使用" nc -zv localhost 80"用于测试目的。
我的想法:如果端口80是回声"是"如果不回应"否。"
我总是收到错误或错过结果,因为代码似乎不太好。
#! /bin/sh
cmd=`nc -zv localhost 80`
answer="Connection to localhost 80 port [tcp/http] succeeded!"
if [ "$cmd" = "$answer" ]; then
echo "Yes"
else
echo "No"
fi
exit 0
谢谢!
答案 0 :(得分:3)
如果您运行代码,则会看到消息打印到屏幕上,而您可能希望将其捕获。这是因为它被写入stderr。
您可以使用cmd=`nc -zv localhost 80 2>&1`
捕获此类输出,但更好更强大的方法是使用所有Unix工具都有退出代码的事实,该退出代码告诉您命令是成功还是失败,因此可以使用直接在if
语句中:
if nc -z localhost 80
then
echo "Port open"
else
echo "Port closed"
fi
答案 1 :(得分:0)
从nc
:
cmd=$(nc -zv localhost 80)
cmd=${cmd%$'\r'}
或在预期输出中包含回车符:
answer="Connection to localhost 80 port [tcp/http] succeeded!"$'\r'