2016-11-24 5 views
0

netcatを使用してチャット用のshスクリプトを作成しています。 は、これはコードです:Netcat Chat bashスクリプトの問題

#!/bin/bash 

clear 

echo 
echo "-----------------------" 
echo "| handShaker Chat 2.0 |" 
echo "-----------------------" 
echo 

read -p 'Server or Client setUp? (s or c) > ' type 

if [ $type == 's' ] || [ $type == 'S' ] || [ $type == 'server' ] 
then 
    read -p 'Port (4321 Default) > ' port 
    if [ $port -gt 2000 ] && [ $port -lt 6500 ] 
    then 
     echo 
     echo "Started listening on port $port." 
     echo "Stream (Press ctrl + shift to end session) >" 
     echo 
     awk -W interactive '$0="Anonymous: "$0' | nc -l $port > /dev/null 
    else 
     echo "handShaker Error > The port $port is not a in the valid range (2000 ... 6500)." 
    fi 
elif [ $type == 'c' ] || [ $type == 'C' ] || [ $type == 'client' ] 
then 
    read -p 'Port (4321 Default) > ' port 
    if [ $port -gt 2000 ] && [ $port -lt 6500 ] 
    then 
     read -p 'Destination IP > ' ip 
     if [[ $ip =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]] 
     then 
      echo 
      echo "Started streaming $ip on port $port." 
      echo "Stream (Press ctrl + shift to end session) >" 
      echo 
      awk -W interactive '$0="Anonymous: "$0' | nc $ip $port > /dev/null 
     else 
      echo "handShaker Error > Invalid IP Address." 
     fi 
    else 
     echo "handShaker Error > The port $port is not a in the valid range (2000 ... 6500)." 
    fi 
else 
    echo "handShaker Error > $type is not a valid keyword." 
fi 

しかし、私は次のような問題がある:awkの-Wパラメータが存在していないようだ、とプログラムが実際にクライアントを実行した後に停止します。 私はmacOS端末を使用しています。

誰かがこのバグを修正してスクリプトを改善する手伝いをしてくれますか?

+0

スクリプトは 'awk'なしで実行されますか?誤った構文が使用されているようです。あなたはそれをコメントアウトしようとしましたか? 'nc $ ip $ port'の出力は何ですか?あなたは 'nc -l $ port>/dev/null'だけを使って' awk'部分のない行を修正できますか?私はそこにawkを使用して意味を参照してください - – Inian

+0

それはawkなしで完璧に動作します。私はその行にコメントして、代わりにnc -l $ portとnc $ ip $ portを入れました。今すぐawkを使いたいので、適切な出力を得るでしょう。 – Cristian

+0

'nc'コマンド出力から' awk'で必要な出力は? – Inian

答えて

2

スクリプトはawkの味のいずれかで定義されていないawk-W interactiveとフラグの間違った&不必要な使用方法があります。それを削除すると、問題が解決するはずです。

また、スクリプトにはbashの変数が定義され、二重引用符で囲まずに使用されています。忘れないでくださいdouble quote variables prevent globbing and word splitting.

関連する問題