Executar comando/serviço no Logon do usuário. [RESOLVIDO]

1. Executar comando/serviço no Logon do usuário. [RESOLVIDO]

Jackson
jckmsantos

(usa Ubuntu)

Enviado em 01/03/2013 - 15:30h

Fala galera.

Como faço para executar um comando ou iniciar um serviço quando um usuário fizer o logon no computador?!

Para ficar mais claro minha situação.

Tenho um Servidor com o OcsInventory instalado para começar a fazer o inventário de meus computadores, quando instalo o cliente nos desktops, logo após a instalação ele envia ao servidor o inventário da maquina, e depois não envia mais.

Não quero colocar isso na Crontab, pois não quero receber de hora em hora, ou diariamente o inventário.

Eu quero receber quando o usuário fizer o logon na maquina. Ou seja, cada vez que um usuário logar na maquina, o comando " ocsinventory-agent" é acionado como root, e o servidor recebe as informaçãoes.
Aqui em nossa rede o login é autenticado por um servidor LDAP, e um único computador pode ser acessado por diversos usuários ao longo do tempo.

Teria que inserir um Script... ou será que no /etc/skel/ eu poderia criar alguma coisa que me ajude neste sentido...??

Já testei inserindo o comando no rc.local e o servidor recebe a informação quando a maquina é ligada, mas o inventário vai sem o nome de usuário, pois a maquina foi ligada mas ainda não foi Logada.

Alguém?!!




  


2. MELHOR RESPOSTA

Wellington Felix
wellingtonfelix

(usa Outra)

Enviado em 04/03/2013 - 15:30h

Fiz aqui:

ALL ALL=NOPASSWD:/sbin/shutdown

Depois com um usuário comum rodei:

shutdown -r now

Funcionou, tente aí.

3. Re: Executar comando/serviço no Logon do usuário. [RESOLVIDO]

Wellington Felix
wellingtonfelix

(usa Outra)

Enviado em 01/03/2013 - 16:28h

Veja se te ajuda:

http://bash.cyberciti.biz/guide//etc/profile

Basta colocar o comando/script que deve ser executado no logon de todos os usuários. :)


4. Re: Executar comando/serviço no Logon do usuário. [RESOLVIDO]

Jackson
jckmsantos

(usa Ubuntu)

Enviado em 01/03/2013 - 17:20h

wellingtonfelix escreveu:

Veja se te ajuda:

http://bash.cyberciti.biz/guide//etc/profile

Basta colocar o comando/script que deve ser executado no logon de todos os usuários. :)


Olá Wellington obrigado pela resposta.

Mas como eu disse no post, os usuários farão login com autenticação no LDAP. Cada usuário que faz login é gerado uma nova Home pra ele.
Não sabemos a rotatividade de cada setor, portanto não temos usuários fixos por maquina.

Preciso rodar o serviço automaticamente no momento em que qualquer usuário que logar na máquina, ele execute e envie ao servidor.


5. Re: Executar comando/serviço no Logon do usuário. [RESOLVIDO]

Wellington Felix
wellingtonfelix

(usa Outra)

Enviado em 01/03/2013 - 21:56h

jckmsantos escreveu:

wellingtonfelix escreveu:

Veja se te ajuda:

http://bash.cyberciti.biz/guide//etc/profile

Basta colocar o comando/script que deve ser executado no logon de todos os usuários. :)


Olá Wellington obrigado pela resposta.

Mas como eu disse no post, os usuários farão login com autenticação no LDAP. Cada usuário que faz login é gerado uma nova Home pra ele.
Não sabemos a rotatividade de cada setor, portanto não temos usuários fixos por maquina.

Preciso rodar o serviço automaticamente no momento em que qualquer usuário que logar na máquina, ele execute e envie ao servidor.



@jckmsantos, exato, o objetivo do /etc/profile é exatamente este.

Na descrição da página que te mandei diz:

/etc/profile contains Linux system wide environment and startup programs. It is used by all users


Este link explica melhor como funciona:

http://pt.wikibooks.org/wiki/Guia_do_Linux/Iniciante+Intermedi%C3%A1rio/Personaliza%C3%A7%C3%A3o_do_...


6. Re: Executar comando/serviço no Logon do usuário. [RESOLVIDO]

Jackson
jckmsantos

(usa Ubuntu)

Enviado em 04/03/2013 - 12:09h

wellingtonfelix escreveu:

jckmsantos escreveu:

wellingtonfelix escreveu:

Veja se te ajuda:

http://bash.cyberciti.biz/guide//etc/profile

Basta colocar o comando/script que deve ser executado no logon de todos os usuários. :)


Olá Wellington obrigado pela resposta.

Mas como eu disse no post, os usuários farão login com autenticação no LDAP. Cada usuário que faz login é gerado uma nova Home pra ele.
Não sabemos a rotatividade de cada setor, portanto não temos usuários fixos por maquina.

Preciso rodar o serviço automaticamente no momento em que qualquer usuário que logar na máquina, ele execute e envie ao servidor.



@jckmsantos, exato, o objetivo do /etc/profile é exatamente este.

Na descrição da página que te mandei diz:

/etc/profile contains Linux system wide environment and startup programs. It is used by all users


Este link explica melhor como funciona:

http://pt.wikibooks.org/wiki/Guia_do_Linux/Iniciante+Intermedi%C3%A1rio/Personaliza%C3%A7%C3%A3o_do_...


@wellingtonfelix

Então, fiz alguns testes aqui inserindo o comando no /etc/profile...
mas ai começaram a aparecer alguns erros.
Quando eu logo na maquina com o usuário root, ele lê o /etc/profile e executa o comando da forma como eu preciso.
Porém quando logo com outro usuário, o comando não é executado.
Como faço para dar permissão de Root para o comando fazendo com que ele seja executado por qualquer usuário sem precisar da senha?!

Tentei também alterar as permissões em /etc/sudoers, mas não sei como colocar para que qualquer usuário execute.


7. Re: Executar comando/serviço no Logon do usuário. [RESOLVIDO]

8. Re: Executar comando/serviço no Logon do usuário. [RESOLVIDO]

Jackson
jckmsantos

(usa Ubuntu)

Enviado em 04/03/2013 - 15:18h



Ola novamente wellingtonfelix...
Então, já havia pesquisado sobre essas permissões do /sudoers...

Veja este exemplo:
rodrigo ALL=NOPASSWD:/sbin/shutdown

É exatamente isso que preciso, mas ao invés do nome de um usuário, preciso que seja qualquer usuário que logar. Visto que aqui teremos o login das maquinas sendo autenticado por LDAP, e pode haver uma grande rotatividade de usuários por maquina.
O que eu poderia colocar no lugar do nome do usuário?! Pra que ele permita qualquer usuário executar o comando...


9. Re: Executar comando/serviço no Logon do usuário. [RESOLVIDO]

Jackson
jckmsantos

(usa Ubuntu)

Enviado em 04/03/2013 - 16:09h

wellingtonfelix escreveu:

Fiz aqui:

ALL ALL=NOPASSWD:/sbin/shutdown

Depois com um usuário comum rodei:

shutdown -r now

Funcionou, tente aí.


Inseri a linha conforme você falou, e quando executo ela como um usuário que não é root ele gera o seguinte erro:


teste@ubuntu:/etc/ocsinventory$ ocsinventory-agent
Config: Failed to open /etc/ocsinventory/ocsinventory-agent.cfg
[info] You should run this program as super-user.
[error] Failed to create /var/lib/ocsinventory-agent/http:__ocsinventory-ng_ocsinventory directory: Permissão negada

O problema é que eu tento das as permissões e mesmo assim não funciona...


10. Re: Executar comando/serviço no Logon do usuário. [RESOLVIDO]

Wellington Felix
wellingtonfelix

(usa Outra)

Enviado em 04/03/2013 - 16:11h

jckmsantos escreveu:

wellingtonfelix escreveu:

Fiz aqui:

ALL ALL=NOPASSWD:/sbin/shutdown

Depois com um usuário comum rodei:

shutdown -r now

Funcionou, tente aí.


Inseri a linha conforme você falou, e quando executo ela como um usuário que não é root ele gera o seguinte erro:


teste@ubuntu:/etc/ocsinventory$ ocsinventory-agent
Config: Failed to open /etc/ocsinventory/ocsinventory-agent.cfg
[info] You should run this program as super-user.
[error] Failed to create /var/lib/ocsinventory-agent/http:__ocsinventory-ng_ocsinventory directory: Permissão negada

O problema é que eu tento das as permissões e mesmo assim não funciona...


Bacana, teste com "sudo" na frente do comando:

sudo ocsinventory-agent 


Me esqueci deste detalhe muito importante. :)


11. Re: Executar comando/serviço no Logon do usuário. [RESOLVIDO]

Jackson
jckmsantos

(usa Ubuntu)

Enviado em 04/03/2013 - 16:44h

wellingtonfelix escreveu:

jckmsantos escreveu:

wellingtonfelix escreveu:

Fiz aqui:

ALL ALL=NOPASSWD:/sbin/shutdown

Depois com um usuário comum rodei:

shutdown -r now

Funcionou, tente aí.


Inseri a linha conforme você falou, e quando executo ela como um usuário que não é root ele gera o seguinte erro:


teste@ubuntu:/etc/ocsinventory$ ocsinventory-agent
Config: Failed to open /etc/ocsinventory/ocsinventory-agent.cfg
[info] You should run this program as super-user.
[error] Failed to create /var/lib/ocsinventory-agent/http:__ocsinventory-ng_ocsinventory directory: Permissão negada

O problema é que eu tento das as permissões e mesmo assim não funciona...


Bacana, teste com "sudo" na frente do comando:

sudo ocsinventory-agent 


Me esqueci deste detalhe muito importante. :)


Ae Wellington!
Funcionou aqui, mas ainda não foi o ideal.
Inseri a linha la no /etc/sudoers e depois tambem coloquei no /etc/profile para que seja executado no momento do login.

Porém, ele funcionou quando eu crio um usuário local na maquina... mas quando faço o login autenticado pelo LDAP ele pede a senha.
Pelo que entendi, quando logo por LDAP ele não lê o arquivo /etc/sudoers.
Alguma outra idéia ai pra me ajudar?


12. Re: Executar comando/serviço no Logon do usuário. [RESOLVIDO]

Wellington Felix
wellingtonfelix

(usa Outra)

Enviado em 04/03/2013 - 17:00h

@jckmsantos, infelizmente não consigo reproduzir um ambiente similar ao seu para realizar testes agora.

Fiz uma pesquisa e encontrei algo que pode te ajudar. Os caras usam um Active Directory, mas creio que o princípio seja o mesmo.

Veja o que eles fizeram:


1 Answer activeoldestvotes
up vote
2
down vote
accepted
Per Hadyman5's comment, I ran the following:

id MYDOMAIN\\djsumdog
...and saw that my group was actually MYDOMAIN\linuxadmins, all lower case. I then added the following to my sudo configuration:

%MYDOMAIN\\linuxadmins ALL=(ALL) ALL
And sudo works fine now with the users in that group.

Fonte: http://serverfault.com/questions/306127/having-users-su-sudo-in-linux-based-on-active-directory-grou...


Pelo que deu pra entender, você é obrigado a informar um grupo após informar o nome do domínio. Veja se o "ALL" funciona nesse caso. Se não funcionar, estude a possibilidade de criar um grupo em seu LDAP para todos os usuários




01 02