scipt內用eval無法執行特定指令 - Linux

Lily avatar
By Lily
at 2019-05-30T10:55

Table of Contents

我想寫一個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 是否活著?





--
Tags: Linux

All Comments

Yedda avatar
By Yedda
at 2019-06-03T09:11
nc -z 127.0.0.1 80
Rosalind avatar
By Rosalind
at 2019-06-07T11:06
我用nc測過 不管port有沒有開,都沒回傳錯誤
Noah avatar
By Noah
at 2019-06-08T04:31
然後他是說找不到檔案吧,加 escape 才是錯的
Zanna avatar
By Zanna
at 2019-06-08T23:19
啊,剛剛看了一下 回傳的數值似乎會不同
Oscar avatar
By Oscar
at 2019-06-09T20:39
你有抓 error code 出來看嗎?
Emma avatar
By Emma
at 2019-06-10T15:20
有 抓了 感謝你 http://i.imgur.com/UqypQxd.png
Faithe avatar
By Faithe
at 2019-06-15T12:17
如果你要看那個 node 是否存在直接用 [ -c 不是比較簡單
我在 debian 上是沒 /dev/tcp 這個資料夾啦
不確定它是 c 還是 b
Skylar DavisLinda avatar
By Skylar DavisLinda
at 2019-06-16T16:24
或者用 ss -tl | awk '{print $4}' | grep -q :5432
Lauren avatar
By Lauren
at 2019-06-20T16:49
bash才可以, sh不行
Catherine avatar
By Catherine
at 2019-06-22T19:22
/dev/tcp 是 bash 內建的特殊功能,系統上不需要真的存在
Zanna avatar
By Zanna
at 2019-06-27T01:40
這個資料夾。也因為它可能不存在,所以同樣的指令拿去其
他 shell 很可能就不會動。
Tom avatar
By Tom
at 2019-07-01T19:32
搞錯方向,keepalived 可以直接偵測 HTTP Protocol
不想用 keepalived 測試,也可以用 curl + exit code
Tracy avatar
By Tracy
at 2019-07-05T23:40
嗯,今天都在讀文件 tcp_check 似乎可以玩玩看

Robert avatar
By Robert
at 2019-05-30T07:34
分享linux32與linux64 小型boot image for rpi3b+ on qemu https://drive.google.com/folderview?id=1-8vBsO8gPF_xUvKmrYCLFwPsS8K66dgP rootfs 為bash + busybox 組成的簡約版 ...

sed取指定字串中的特定子字串

Noah avatar
By Noah
at 2019-05-30T00:07
test=and#34;[ro.serialno]: [D6GQHIOZTKMBOZJR]and#34; echo $test | sed and#39;s/.*\[\(.*\)\].*\[\(.*\)\].*/\2/gand#39; 後面的‘\2’表示取第二個括號的值 D6GQHIOZTKMBOZJR ...

雙硬碟雙系統 如何跳過grub?

Yuri avatar
By Yuri
at 2019-05-28T22:48
電腦裝有三顆硬碟 win10在dev/sdb ubuntu 19.04在dev/sda,切了三個分區(/,/home,swap) 用sdb的efi引導開機 按F11出現選單boot manager會出現兩個系統且皆可正常開機進桌面 問題是選了ubuntu之後又會出現grub 變成要按enter或多 ...

openSUSE Leap 15.1 Out Now!

Olga avatar
By Olga
at 2019-05-28T12:38
Hi,各位前輩好。 小小的推廣一下,openSUSE Leap 15.1 已經釋出囉。 歡迎各位一起來加入openSUSE的行列。 有興趣的可以來這邊參考、下載: https://www.opensuse.org/ 謝謝。 - ...

老電腦進桌面前要先亂按鍵盤

Leila avatar
By Leila
at 2019-05-26T21:01
家裡一臺很老的電腦放在客廳當 HTPC 來使用, 忘了從什麼時候開始,開機後都要亂按鍵盤才能進桌面, 之前用 Ubuntu 時就發現此現象,但在網上找到了解答, 必須要有安裝 haveged 或 rng-tools 才行, 但這方法現在在 Manjaro 又不管用了! 請問這到底是什麼現象呢? - ...