[問題] scipt內用eval無法執行特定指令

看板Linux作者 (Eric Chang)時間6年前 (2019/05/30 10:55), 編輯推噓6(6011)
留言17則, 5人參與, 6年前最新討論串1/1
我想寫一個script 偵測某台機器的5432 port 搭配 keepalived 使用 指令長這樣 </dev/tcp/127.0.0.1/80 對,就這樣而已,如果直接在shell 底下執行,正常的話就不會有輸出 但是我直接加到 keepalived.conf 裡面,會說找不到這指令 Script </dev/tcp/192.168.11.34/5432 cannot be accessed - No such file or directory 所以我想說用script 來跑 script 也很簡單,就是跑上面那行指令 #!/bin/sh COMMAND="</dev/tcp/127.0.0.1/80" echo "$COMMAND" eval "</dev/tcp/127.0.0.1/80" 執行結果 /tmp/check_psql.sh </dev/tcp/127.0.0.1/80 /tmp/check_psql.sh: 1: eval: cannot open /dev/tcp/127.0.0.1/80: No such file 指令格式應該沒有錯,可是eval 少了一個 "<" 所以我改了一下,加入escape "\" 變成這樣 /tmp/check_psql.sh </dev/tcp/127.0.0.1/80 /tmp/check_psql.sh: 1: eval: </dev/tcp/127.0.0.1/80: not found 所以指令格式正確了,可是還是沒辦法順利執行 不曉得該怎麼修正呢? 或者是有其他指令可以偵測特定port 是否活著? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.85.234.104 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1559184946.A.5F8.html

05/30 11:08, 6年前 , 1F
nc -z 127.0.0.1 80
05/30 11:08, 1F

05/30 11:13, 6年前 , 2F
我用nc測過 不管port有沒有開,都沒回傳錯誤
05/30 11:13, 2F

05/30 11:15, 6年前 , 3F
然後他是說找不到檔案吧,加 escape 才是錯的
05/30 11:15, 3F

05/30 11:15, 6年前 , 4F
啊,剛剛看了一下 回傳的數值似乎會不同
05/30 11:15, 4F

05/30 11:16, 6年前 , 5F
你有抓 error code 出來看嗎?
05/30 11:16, 5F

05/30 11:17, 6年前 , 6F
有 抓了 感謝你 http://i.imgur.com/UqypQxd.png
05/30 11:17, 6F

05/30 11:19, 6年前 , 7F
如果你要看那個 node 是否存在直接用 [ -c 不是比較簡單
05/30 11:19, 7F

05/30 11:19, 6年前 , 8F
我在 debian 上是沒 /dev/tcp 這個資料夾啦
05/30 11:19, 8F

05/30 11:19, 6年前 , 9F
不確定它是 c 還是 b
05/30 11:19, 9F

05/30 11:22, 6年前 , 10F
或者用 ss -tl | awk '{print $4}' | grep -q :5432
05/30 11:22, 10F

05/30 11:26, 6年前 , 11F
bash才可以, sh不行
05/30 11:26, 11F

05/30 16:38, 6年前 , 12F
/dev/tcp 是 bash 內建的特殊功能,系統上不需要真的存在
05/30 16:38, 12F

05/30 16:39, 6年前 , 13F
這個資料夾。也因為它可能不存在,所以同樣的指令拿去其
05/30 16:39, 13F

05/30 16:39, 6年前 , 14F
他 shell 很可能就不會動。
05/30 16:39, 14F

05/30 16:46, 6年前 , 15F
搞錯方向,keepalived 可以直接偵測 HTTP Protocol
05/30 16:46, 15F

05/30 16:46, 6年前 , 16F
不想用 keepalived 測試,也可以用 curl + exit code
05/30 16:46, 16F

05/30 17:41, 6年前 , 17F
嗯,今天都在讀文件 tcp_check 似乎可以玩玩看
05/30 17:41, 17F
文章代碼(AID): #1SxqOoNu (Linux)
文章代碼(AID): #1SxqOoNu (Linux)