2013-12-18 112 views
2

我遇到以下問題。替代貓出bash腳本?

exec 3<>/dev/tcp/$1/37491 

echo -ne 060e2b3 00$hexdec$cmdhex | perl -pe 's/([0-9a-f]{2})/chr hex $1/gie' >&3 

cat <&3 

我有一個服務器,我發送一個十六進制字符串與端口/ TCP連接。但由於我通過終端使用膩子,我的第一個問題是XML迴應總是說PuTTY,它不能逃脫。我也需要把來回復,有時在數組中,我曾嘗試

array=`cat <&3` 

echo "Array items:" 
for item in ${array[*]} 
do 
    printf " %s\n" $item 
done 

,我相信,因爲貓不退出正確它只是停留打開陣列不這樣做?

感謝您的高級幫助

+0

也許你想嘗試'讀陣列<&3'相反,在一個循環,來處理行由行(假定反應是行終止,反正)... – twalberg

+0

@twalberg謝謝。你能幫助我嗎?在回答中,我不能回覆直接的人。我不知道他要我放置exec 3>& - – user3100345

+0

我試着添加這個。同時讀取行<&3 do { echo「$ line」 ((Lines ++)); } done exec 3>& - – user3100345

回答

0

也許您需要關閉TCP/IP套接字?

exec 3>&- 
+0

我試過以上。我終於看到了如何使用它,因爲我研究了它。 (DUH),但即使是在貓後<&3之後,即使我在貓後面關閉,也能保持會話開啓。 – user3100345

2

您是否需要指定超時時間?

while read -t 5 line <&3; do 
    echo "$line" 
    ((Lines++)) 
done 
exec 3>&- 
+0

謝謝!終於奏效了。給了它2秒鐘的時間,並工作。 – user3100345