Função bash Ugly para enviar comandos e “dizer” qualquer coisa na tela sobre o ssh. Existe uma maneira melhor?

0

Estou trabalhando em uma função que funciona, mas é feia. Uma coisa que pode ser mudada é saber o nome da tela. Usando a tela -dms minecraft java… .jar agora inicia uma sessão de tela nomeada com o que parece ser números aleatórios..hostname. O próximo é o vodu que tira o nome da tela -ls e o usa. Então há o awk. Tem que haver uma maneira melhor.

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!"
    
por fuzzyfreak 26.12.2014 / 21:51

1 resposta

1

Você está usando muitas variáveis e um arquivo de log desnecessariamente.

Não tenho certeza sobre o material depois de stuff , mas aposto que pode ser mais simples:

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"
}
    
por 26.12.2014 / 22:38