【发布时间】:2015-02-07 05:05:51
【问题描述】:
在 Mac OS X 10.10 上使用 netcat,我想每分钟测试一次 Facilis TerraBlock 服务器上的侦听端口,以确认以太网侦听器正在运行。
我希望脚本输出一行表示成功,一行表示失败,并在前一行记录日期/时间戳。我目前不需要将任何这些记录到文件中。
像这些原生 nectat 输出这样的东西是理想的:
Wed Feb 4 10:49:09 EST 2015
Connection to 10.40.255.11 port 859 [tcp/*] succeeded!
nc: connectx to 10.40.255.12 port 859 (tcp) failed: Connection refused
这是我创建的脚本:
#!/bin/bash
date
nc -z 10.40.255.11 859 || nc -vz 10.40.255.11 859
nc -z 10.40.255.12 859 || nc -vz 10.40.255.12 859
while sleep 60; do date;nc -z 10.40.255.11 859 || nc -vz 10.40.255.11 859 & nc -z 10.40.255.12 859 || nc -vz 10.40.255.12 859; done
这个脚本的行为不可预测,我猜它是 ||操作员,但我找不到另一种方法来做到这一点。具体来说,当脚本运行时,终端输出在时间戳之后的第一个或第二个 .11 和 .12 测试之间交替,这让我想知道这是否只是 netcat 响应的连接超时导致回复偶尔出现顺序,或者如果有更大的问题并且我的脚本返回不可靠的数据。
这是我当前输出的一个示例:
Fri Feb 6 10:51:33 EST 2015
Connection to 10.40.255.11 port 859 [tcp/*] succeeded!
Connection to 10.40.255.12 port 859 [tcp/*] succeeded!
Fri Feb 6 10:51:34 EST 2015
Connection to 10.40.255.12 port 859 [tcp/*] succeeded!
Connection to 10.40.255.11 port 859 [tcp/*] succeeded!
Fri Feb 6 10:51:35 EST 2015
Connection to 10.40.255.12 port 859 [tcp/*] succeeded!
Connection to 10.40.255.11 port 859 [tcp/*] succeeded!
Fri Feb 6 10:51:36 EST 2015
Connection to 10.40.255.11 port 859 [tcp/*] succeeded!
Connection to 10.40.255.12 port 859 [tcp/*] succeeded!
我添加了 ||和 & 运算符,以及看似冗余的代码,因为我只想在连接失败时查看 netcat 的详细输出。
【问题讨论】:
-
在你的 while 循环中删除
&会发生什么?此评估将具有较少的“灵活性”,并且您应该获得更有序的列表。此外,它可能有助于编辑您的问题并包含您的首选输出以及您获得的当前输出。祝你好运。 -
庇护所,如果我删除 & 运算符,脚本将只查询 .11 地址。我已经添加了当前输出。谢谢。
-
哈,还有 1 个
&不少于 1 个;-)。 (我的错)。 ....nc ...11 || nc ...11 && nc ...12 || nc ....12应该强制评估至少 1 .11 addr 和 1. 12 addr?这有帮助吗?祝你好运。
标签: bash scripting osx-yosemite netcat