丑陋的 bash 函数通过 ssh 发送命令并在屏幕上“说出”任何内容。有没有更好的办法?

丑陋的 bash 函数通过 ssh 发送命令并在屏幕上“说出”任何内容。有没有更好的办法?

我正在研究一个可以工作但很丑陋的功能。可以改变的一件事是能够知道屏幕的名称。使用 screen -dms minecraft java ….jar 现在启动一个屏幕会话,其名称似乎是随机数..主机名。接下来是巫毒,它恰好从 screen -ls 中删除名称并使用它。然后是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"
}

相关内容