0

私はこれで完全に初心者です。 if elseif else チュートリアルをグーグルで検索し、このスクリプトの作成を開始しました。PHPスクリプトからバルブソースサーバーを管理するオプションを提供する.shスクリプトを作成しようとしています。これは私が現在持っているものです:

#!/bin/sh
# CONFIG
LOGFILE="/var/www/management/ifacelog"
NEWDATE=`TZ=GMT-3 date +%d.%m.%Y" "%H:%M:%S`
# END OF CONFIG
SCRIPTCOMMAND=$1
CSGOCOMMAND=$2
if [ $SCRIPTCOMMAND = "START" ] ; then
        echo $NEWDATE  "SERVER STARTED! connect cs.kask.fi; password gd | rcon_password tuksu" >> test
        touch lockfile
        screen -A -m -d -S csgo -L /home/csgo/server/srcds_run -game csgo -console -usercon -tickrate 128 +net_public_adr 46.246.93.192 +ip 46.246.93.192 +tv_port 27010 -maxplayers_override 11 +game_type 0 +game_mode 1 +host_worksh$
elif [ $SCRIPTCOMMAND = "RESTART" ] ; then
        echo $NEWDATE  "STOPPING THE SERVER" >> test
        echo $NEWDATE  "Passing command tv_stoprecord and waiting 10sec." >> test
        screen -S csgo -X stuff "tv_stoprecord"
        screen -S csgo -X stuff "
"
sleep 10
        echo $NEWDATE  "Passing command: quit" >> test
        screen -S csgo -X stuff "quit"
        screen -S csgo -X stuff "
"
        echo $NEWDATE  "SERVER RESTARTED!" >> test
elif [ $SCRIPTCOMMAND = "KILL" ]; then
        echo $NEWDATE  "KILLING SERVER!" >> test
        pkill srcds_run
        rm lockfile
        rm screenlog.0
elif [ $SCRIPTCOMMAND = "RCON" ]; then
        echo $NEWDATE  "REMOTE RCON! Passing value: " $2 $3 >> test
        screen -X -S csgo -p 0 stuff $2 $3
        screen -S csgo -X stuff "
"
elif [ $SCRIPTCOMMAND = "RESET" ]; then
        rm lockfile
        rm screenlog.0
else
        echo "UNKNOWN COMMAND WAS PASSED!"
fi

画面セッション自体にコマンドを渡すことを除いて、すべてが機能しています (scriptcommand = RCON の場合)。shell と入力screen -X -S csgo -p 0 stuff say testすると、正しく screen セッションに渡されます。script を実行すると./csgo.sh RCON say test、 screen に error と表示されます-X: stuff: invalid option "say"。私も試してみましscreen -X -S csgo -p 0 stuff \"$2\"たが、違いはありませんでした。

これは手動で入力すると問題なく機能するため、スクリプトで機能しない理由がわかりません。なぜそれが機能しないのか、それを修正する方法はありますか?

4

0 に答える 0