Envie o comando para o terminal de tela de outro usuário

3

Eu tenho dois usuários; user1 e user2. Eu tenho um script bash executado pelo user1, que precisa executar um comando em um terminal de tela iniciado pelo user2. Sugestões? obrigado Max

    
por Ben 22.03.2011 / 02:42

1 resposta

4

Você quer que pareça que user2 digitou o comando?

No caso de screen , você pode usar

screen -S user2/sessionname -p windowname -X stuff "~user1/somescript.sh
"

Isto irá digitar o texto ~user1/somescript.sh (referindo-se a um arquivo no diretório pessoal do usuário1) para uma janela específica da sessão de tela especificada e enviar um caractere de nova linha.

(Sim, o segundo " deve estar em uma nova linha, caso contrário você enviaria o texto e teria que pressionar voltar na sessão de tela. Como alternativa, use $'stuff blah\n' )

Para fazer isso, você precisará ter acesso de gravação a user2/sessionname ; leia a página de manual da tela para descrição de multiuser e acladd .

No caso genérico "executar coisas em outro tty", você pode usar writevt /dev/pts/X sometext ; a ferramenta writevt faz parte do pacote console-tools . Se sua distro usar kbd , obtenha writevt.c . Isso é específico para o Linux.

Ou você quer que o user2 veja a saída ?

./somescript.sh >& /dev/pts/X

onde /dev/pts/X é o dispositivo tty que pertence à tela do usuário2.

Você precisará de acesso de gravação; isso pode ser dado pelo user2 com chmod / setfacl, ou você pode usar sudo .

( >& file é equivalente a > file 2>&1 , que redireciona stdout e stderr para o arquivo fornecido.)

    
por 22.03.2011 / 07:03