SSH를 통해 명령을 보내고 화면에 있는 모든 것을 "말"하는 추악한 bash 기능입니다. 더 좋은 방법이 있나요?

SSH를 통해 명령을 보내고 화면에 있는 모든 것을 "말"하는 추악한 bash 기능입니다. 더 좋은 방법이 있나요?

저는 작동하지만 보기 흉한 기능을 개발 중입니다. 변경할 수 있는 것 중 하나는 화면 이름을 아는 기능입니다. 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"
}

관련 정보