[問題] 有關 nc 的執行結果

看板Linux作者 (...)時間10年前 (2014/02/27 01:21), 編輯推噓1(105)
留言6則, 4人參與, 最新討論串1/1
各位好, 不知道有沒有哪位大大同時在 CentOS 和 RHEL3 上面使用過 nc 這個指令的? 我主要是想要用這個指令對其他機器進行監控, 然後利用監控的結果來發檢查信。 但無奈地光是使用這個指令就會有不同的結果發生。 以下 xxx.xxx.xxx.xxx 和 yyyy 分別代表我要監控的 Host IP 和 Port RHEL3: 指令:nc -v -w 1 xxx.xxx.xxx.xxx -z yyyy 結果:xxx-xxx-xxx-xxx.com.tw [xxx.xxx.xxx.xxx] yyyy open 而且這個結果不能直接用指令抓來用, 原因是他如果在 nc 的執行指令最後面加上 2>/dev/null 就不會有這行結果了。 CentOS: 指令:nc -v -w 1 xxx.xxx.xxx.xxx -z yyyy 結果:Connection to xxx.xxx.xxx.xxx yyyy port [tcp] succeeded! 這行可以直接以指令抓來用,所以可以直接用來判定監控結果是否正確。 所以想請問一下,nc 這個指令是否可以在 RHEL3 上面使用? 或是有什麼其他的執行結果可供抓取?感謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.24.141.18

02/27 01:37, , 1F
2>&1 把stderr導到stdout就好了
02/27 01:37, 1F

02/27 02:01, , 2F
了解,明天去公司試試。感謝提供方向。
02/27 02:01, 2F
直接下指令:echo $(nc -v -w 1 xxx.xxx.xxx.xxx -z yyyy) | grep open | wc -1 可以正確抓到 1 的數值 但是,如果把他寫成條件式就抓不到,不清楚為啥 @@ 條件式寫法: (前面省略) result=$(nc -v -w 1 $ip -z $port 2>&1) if "[ "$(echo $result | grep "open" | wc -1)" == 1 ]; then echo -e "connection succeeded." elif "[ "$(echo $result | grep "refused" | wc -l)" == 1 ]; then echo -e "connection failed." else echo -e "connection data error!" fi (後面省略) ※ 編輯: pizzahut 來自: 60.248.152.80 (02/27 10:05)

02/27 10:26, , 3F
我記得 nc 好像有兩個實作耶
02/27 10:26, 3F

02/27 11:05, , 4F
找到問題了,跟雙引號有關... @@~
02/27 11:05, 4F

02/27 20:03, , 5F
那個if對吧
02/27 20:03, 5F

03/01 21:47, , 6F
嗯,第一個if這樣標雙引號好像會讓系統判別錯誤@@
03/01 21:47, 6F
文章代碼(AID): #1J3YALrV (Linux)