Enviando um texto do script para uma tela

2

Toda a minha tarefa soa assim: "Mostrar quantos usuários estão trabalhando agora, sempre que alguém fez logout ou logou, imprima a nova quantidade de usuários. Crie uma nova tela e imprima o resultado do texto". Com a primeira parte eu lidei muito bem com isso. Aqui está o código:

#!/bin/bash

updateusers(){
    log=$( who | grep "st" | awk '{print $1}' | wc -l);
}

updateusers
temp=$log
echo "Now logged users: $lrn"
while true
do
    updateusers
    if [ $temp -lt $log ]; then
        temp=$log
        echo "User has logged in : $log"
        fi
    if [ $temp -gt $log ]; then
        temp=$log
        echo "User has logged out: $log"
        fi
    sleep 1
done

A segunda tarefa é criar uma segunda tela dentro do script e imprimir o texto desse script para ele. Eu usei screen -S name -p 0 -X stuff "text here/echo command with text" e echo text > screen -S name -p 0 . Nada disso funcionou para mim.

    
por user174080 08.06.2016 / 10:57

1 resposta

0

Você teria que redirecionar a saída do seu script (os vários comandos echo ) para um arquivo temporário e, em seguida, executar um comando cat dentro da tela usando esse nome de arquivo temporário como argumento. Algo como

myreport >foo
screen -S name -X stuff "cat foo"
rm foo

(embora existam maneiras mais elegantes de criar um arquivo temporário, como mktemp ). Como primeiro passo, tornar seu script de relatório uma função (ou arquivo separado) permitiria redirecionar sua saída.

    
por 08.06.2016 / 11:06