SSH経由でコマンドを送信し、画面上のすべてを「話す」醜いbash機能です。もっと良い方法がありますか?

SSH経由でコマンドを送信し、画面上のすべてを「話す」醜いbash機能です。もっと良い方法がありますか?

私はうまくいきますが、見苦しい機能を開発しています。変更できるものの1つは、画面名を知る機能です。 screen -dmsminecraft java ....jarを使用すると、ランダムな数字に見える画面セッションが開始されます。ホスト名。以下は、screen -lsから名前を削除して使用するvoodooです。それからawkがあります。より良い方法が必要です。

say_this()
{
    REEN="$(ssh -p 8989 192.168.1.101 screen -ls)"
    echo $REEN > log/log.txt
    AWK="$(awk 'FNR == 1 { print $6 }' log/log.txt)"
    NAME="$(echo $AWK)"
    echo $1
    ssh -p 8989 192.168.1.101 screen -S $NAME -p 0 -X stuff \"$1^M\"
}

say_this "say test"
say_this "say !@#$%^&*()<>?This string should work!"

答え1

不必要に多くの変数とログファイルを使用しています。

それの後に何が来るのかわかりませんが、stuffもっと簡単にできると確信しています。

say_this()
{
    local name="$(ssh -p 8989 192.168.1.101 screen -ls | awk 'NR==2 {print $1}')"
    echo "$1"
    ssh -p 8989 192.168.1.101 screen -S "$name" -p 0 -X stuff "$1"
}

関連情報