私はシェルプログラミングには新しく、私のサーバーへの接続を開くスクリプトを作成しました。私は、このスクリプトがクライアントノードからの入力を待ち受け、それを使って関数を実行させたいと思っています。shスクリプトの関数呼び出しのためのnetcatデーモン
これは私のプロセスです。 >接続するための第2のコンピュータ利用のnetcat上>リスナーを開く 実行スクリプト>私は「4444」
ファイル名にコード化されたSERVER_PORTいるnodefunction
と呼ばれるサーバー上のスクリプトで関数を実行します。run_hangman
nc -l -k -v -p 4444 | bash hangman
ファイル名:絞首刑執行人
#!/bin/bash
msg_timeout=0
host_ows=1
server_port=4444
dubOws=xxx.xxx.xxx.xxx
initServer() {
hostIP=`ip -o addr show dev "eth0" | awk '$3 == "inet" {print $4}' | sed -r 's!/.*!!; s!.*\.!!'`
hostOws=`echo $hostIP | cut -d . -f 4`
}
servermsg(){ #message //if = --n, echos on same line
if [ "$1" != "--n" ]
then
echo `date +"%T"` "[SERVER] "$1
else
echo -n `date +"%T"` "[SERVER] "
fi
}
owsmsg(){ #message //if = --n, echos on same line
if [ "$1" != "--n" ]
then
echo `date +"%T"` "[OWS] "$1
else
echo -n `date +"%T"` "[OWS] "
fi
}
playermsg() {
if [ "$1" != "--n" ]
then
echo `date +"%T"` "[PLAYER] "$1
else
echo -n `date +"%T"` "[PLAYER] "
fi
}
question(){ #question, read, example
servermsg "$1"
if [ -n "$3" ]
then
servermsg "$3"
fi
read $2
echo ""
}
owsArray(){ #
for targetOws in $player_list
do
owsArray+=("OWS"$targetOws)
done
echo -n ${owsArray[*]}
echo
}
openSocket() {
servermsg "Starting the Game Listener"
servermsg "Opening Listener on port "$server_port
#nc -k -l $server_port |bash
#nc -kl -q 1 -p $server_port # This should create the listener & This is where everything stops.
servermsg "Now listening on port "$server_port
}
initServer
owsmsg "Starting server on OWS"$hostOws"..."
question "Enter all the OWSs that will play:" player_list "Example: 1 9 14 23"
echo $player_list
question "Type a category hint:" game_cat "Example: Type of Animal"
question "Type your word:" game_word "Example: zebra"
question "How many guesses:" game_guesses "Example: 7"
servermsg "OWS"$host_ows "has created a Hangman session"
servermsg "Players are:"; servermsg --n; owsArray
servermsg "Your word is "${#game_word}" letters long and players have "$game_guesses" guesses"
question "If this is all correct press enter, or CTRL+C to cancel"
openSocket
# I think I need a While script here to read the RAW input and run the playermsg function with the input?
私はrun_hangmanファイルを実行して、私は自分のノードコンピュータを経由して、それに接続します。私は次の行を入力して、 "1 2 3"をエコーします。なぜなら、それが私の必要なものだからです。また、 "run_hangman"を実行しているウィンドウに "1 2 3"を直接入力することはできません。入力を押すと、新しい行に移動します。
echo "1 2 3" >/dev/tcp/xxx.xxx.xxx.xxx/4444
サーバは、それはそれは私が1つの以上のエコーを送信することができますし、それがサーバー上で閉じopenSocketことを得るたら、それは今
Listening on [0.0.0.0] (family 0, port 4444)
14:52:24 [OWS] Starting server on OWS225...
14:52:24 [SERVER] Enter all the OWSs that will play:
14:52:24 [SERVER] Example: 1 9 14 23
Connection from [xxx.xxx.xxx.xxx] port 4444 [tcp/*] accepted (family 2, sport 41564)
Connection closed, listening again.
1 2 3
を接続することを示しています。私は、私が想定していることをwhile文で取得し、 "playermsg 'がゲームを開始したような入力を聞いて、実際にサーバー上でその関数を実行させる必要があります。
私はこれを実行することができますか、ほとんどバックグラウンドにあるように思われますか?私はnc(1)を参照のために使っていて、いくつかのウェブサイトは-d
を試してみると言いましたが、どちらもうまくいきませんでした。