Iniciar script sempre que iniciar a sessão de trabalho do usuário [RESOLVIDO]

1. Iniciar script sempre que iniciar a sessão de trabalho do usuário [RESOLVIDO]

Markus Vinicius Branco
markusbranco

(usa Ubuntu)

Enviado em 26/12/2012 - 11:45h

Pessoal..

Uso o Ubunto 12.04, e estou tentando rodar um scrip sempre que sobe a sessão de trabalho de um usuário, entretando são vários usuários e o script deve rodar para todos, então o método de colocar o script no .profile do usuário não me serviria.
Outro ponto importante é que os usuários em questão não tem permissão de root, nem mesmo podem usar o sudo então o script deveria rodar independente disso.

Procurei em vários tópicos, entretando nenhum ajudou da forma que necessito, se alguém souber como resolver e puder dar uma força ai, agredeço desde já :)




  


2. MELHOR RESPOSTA

M4iir1c10
m4iir1c10

(usa Arch Linux)

Enviado em 30/12/2012 - 17:04h

Nao, deixa o cron... se o seu script tem que ser rodado como root ele tem que iniciar antes do usuario fazer o login... para isso voce tem que transformar esse programa em um servico do systema.

Para transformar esse programa em servico do sistema voce tem que criar um init script e colocar ele na pasta /etc/init.d/ e criar links simbolicos nas pastas correspondentes ao runlevel que esse programa vai rodar.

Digamos que ele vai rodar no runlevel 2, 3, 4 e 5

Como voce ja postou o caminho para a applicacao eu escrevi esse init script para voce, porem eu recomendo voce ler estudar e entender esse metodo, porque nao e todo dia que voce vai encontrar tudo de mao beijada.



#!/bin/bash
#
# chkconfig: 2345 90 12
# description: ocsinventory-agent init script
# /usr/bin/ocsinventory-agent &
# Get function from functions library
# . /etc/init.d/functions
# Inicia o servico ocsinventory-agent
start() {
initlog -c "echo -n Iniciando ocsinventory-agent: "
/usr/bin/ocsinventory-agent &
### Criar o arquivo de travamento ###
touch /var/lock/subsys/ocsinventory-agent
success $"ocsinventory-agent rodando"
echo
}
# parando o ocsinventory-agent
stop() {
initlog -c "echo -n Parando o ocsinventory-agent: "
killproc ocsinventory-agent
### Apague o arquivo de travamento ###
rm -f /var/lock/subsys/ocsinventory-agent
echo
}
### main logic ###
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status ocsinventory-agent
;;
restart|reload|condrestart)
stop
start
;;
*)
echo $"Uso correto: $0 {start|stop|restart|reload|status}"
exit 1
esac
exit 0


Salve esse script como root em /etc/init.d/ocsinventory-agent

Para iniciar durante a sessao e ver se esta funcionando

sudo /etc/init.d/ocsinventory-agent start

Agora a dura parte e que como esse script e para o init local, se voce tem ususarios em outros computadores em cada computador que voce tem o ocsinventory-agent cliente instalado voce deve fazer esse procedimento.

Eu nao conheco o ocsinventory-agent assim nao posso dizer se ele vai monitorar o login dos usuarios uma vez que ele ja esta rodando no background, porem se ele nao monitora ai voce vai ter que criar um script que contem o comando w e que cheque de tempo em tempo quais usuarios estao conectados, seria bom se esse script chame a funcao do ocsinventory-agent que faz um update nele... entendeu?
Compliquei?

3. Re: Iniciar script sempre que iniciar a sessão de trabalho do usuário [RESOLVIDO]

Danilo Josino
djosino

(usa Ubuntu)

Enviado em 26/12/2012 - 11:59h


A parte do comando com root, vc pode delegar permissão aos usuários no sudoers para que eles executem o que deseja sem logar com root, e a parte do .profile acho que seja o ideal..

Caso sejam muitos usuários e não queria alterar todos arquvios todas as vezes, talvez um link simbolico resolvesse (quem sabe)




4. Re: Iniciar script sempre que iniciar a sessão de trabalho do usuário [RESOLVIDO]

M4iir1c10
m4iir1c10

(usa Arch Linux)

Enviado em 26/12/2012 - 12:29h

De permissao ao script para ser executado por todos os usuarios.

sudo chmod +x script.sh

copie o script em /usr/local/bin

chame o script pelo .profile ou .xinitrc embora eu prefiro que vc use o .profile, depois de decidir qual vc vai usar copie o arquivo .profile ou .xinitrc para /etc/skel
Assim quando voce incluir um novo usuario no sistema ele ja vai ter isso incluido no .profile ou .xinitrc dele.

OBS: o script nao pode ter nada que precise autorizacao do su, se o script vai instalar algo ou modificar a configuracao global do sistema esse metodo nao e o melhor...

Caso voce vai usar uma caixa de dialogo desejando boas vindas ao usuario e uns recados de boa conduta, ou se esse script altera arquivos que estao dentro da pasta do usuario ou a pasta /tmp vc pode usar esse metodo sem problema, Lembrando que voce nao pode alterar arquivos em pasta de dois usuarios que nao sao root, por exemplo eu tenho os usuarios root, mauricio e andreia o root pode alterar todos os arquivos porem mauricio altera os arquivo dele e andreia os arquivos dela, mauricio nao pode alterar os arquivos de andreia e vice-versa.

Oque esse script faz? se vc nao se importa que eu pergunte :)


5. Re: Iniciar script sempre que iniciar a sessão de trabalho do usuário [RESOLVIDO]

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 26/12/2012 - 12:43h

m4iir1c10 escreveu:

De permissao ao script para ser executado por todos os usuarios.

sudo chmod +x script.sh

copie o script em /usr/local/bin

chame o script pelo .profile ou .xinitrc embora eu prefiro que vc use o .profile, depois de decidir qual vc vai usar copie o arquivo .profile ou .xinitrc para /etc/skel
Assim quando voce incluir um novo usuario no sistema ele ja vai ter isso incluido no .profile ou .xinitrc dele.

OBS: o script nao pode ter nada que precise autorizacao do su, se o script vai instalar algo ou modificar a configuracao global do sistema esse metodo nao e o melhor...

Caso voce vai usar uma caixa de dialogo desejando boas vindas ao usuario e uns recados de boa conduta, ou se esse script altera arquivos que estao dentro da pasta do usuario ou a pasta /tmp vc pode usar esse metodo sem problema, Lembrando que voce nao pode alterar arquivos em pasta de dois usuarios que nao sao root, por exemplo eu tenho os usuarios root, mauricio e andreia o root pode alterar todos os arquivos porem mauricio altera os arquivo dele e andreia os arquivos dela, mauricio nao pode alterar os arquivos de andreia e vice-versa.

Oque esse script faz? se vc nao se importa que eu pergunte :)


+1 o skel ficara padrão para os novos users



6. Re: Iniciar script sempre que iniciar a sessão de trabalho do usuário [RESOLVIDO]

Markus Vinicius Branco
markusbranco

(usa Ubuntu)

Enviado em 26/12/2012 - 13:13h

m4iir1c10 escreveu:

De permissao ao script para ser executado por todos os usuarios.

sudo chmod +x script.sh

copie o script em /usr/local/bin

chame o script pelo .profile ou .xinitrc embora eu prefiro que vc use o .profile, depois de decidir qual vc vai usar copie o arquivo .profile ou .xinitrc para /etc/skel
Assim quando voce incluir um novo usuario no sistema ele ja vai ter isso incluido no .profile ou .xinitrc dele.

OBS: o script nao pode ter nada que precise autorizacao do su, se o script vai instalar algo ou modificar a configuracao global do sistema esse metodo nao e o melhor...

Caso voce vai usar uma caixa de dialogo desejando boas vindas ao usuario e uns recados de boa conduta, ou se esse script altera arquivos que estao dentro da pasta do usuario ou a pasta /tmp vc pode usar esse metodo sem problema, Lembrando que voce nao pode alterar arquivos em pasta de dois usuarios que nao sao root, por exemplo eu tenho os usuarios root, mauricio e andreia o root pode alterar todos os arquivos porem mauricio altera os arquivo dele e andreia os arquivos dela, mauricio nao pode alterar os arquivos de andreia e vice-versa.

Oque esse script faz? se vc nao se importa que eu pergunte :)


O script vai invetariar todas as máquinas da rede no servidor "OCS", para que as informações da máquina fiquem disponiveis para os administradores da rede.
O scrip é bem simples, ele só vai fazer a chamada de um programa (ocsinventory-agent), mas isso, quando o usuário logar (precisa ser quando logar, porque também deve aparecer quem está logado na máquina naquele momento). E não posso usar o .profile justamente porque são muitos usuários e o pessoal aqui não achou boa idéia.

Mas boa idéia, vou tentar jogar no skel, e posto de volta se funcionar!!



7. Re: Iniciar script sempre que iniciar a sessão de trabalho do usuário [RESOLVIDO]

Danilo Josino
djosino

(usa Ubuntu)

Enviado em 26/12/2012 - 13:24h

no meu entendimento no script dele tinham comandos que só poderiam ser executados como root.. por isso falei do sudoers, mas posso estar errado


8. Re: Iniciar script sempre que iniciar a sessão de trabalho do usuário [RESOLVIDO]

Markus Vinicius Branco
markusbranco

(usa Ubuntu)

Enviado em 26/12/2012 - 13:51h

Vixii não deu certo, justamente pelo motivo que me informaram!!
O programa em si só pode ser executado como root mesmo :( Tem alguma outra forma de fazer isso?
Não tem algum algum arquivo de configuração dentro do /etc/X11 que posso colocar esse script? afinal ele não o responsável por subir a interface gráfica??

vlww


9. Re: Iniciar script sempre que iniciar a sessão de trabalho do usuário [RESOLVIDO]

Ricardo Fabiano Silva
madrugada

(usa Gentoo)

Enviado em 26/12/2012 - 14:19h

markusbranco escreveu:

Vixii não deu certo, justamente pelo motivo que me informaram!!
O programa em si só pode ser executado como root mesmo :( Tem alguma outra forma de fazer isso?
Não tem algum algum arquivo de configuração dentro do /etc/X11 que posso colocar esse script? afinal ele não o responsável por subir a interface gráfica??

vlww


Posso estar errado, mas creio que o diretório correto para colocar este script e executar junto com o "X" seja /etc/xdg/autostart/!!
Detalhe, além de ser executável, tem que ter a extensão ".desktop";)


10. Re: Iniciar script sempre que iniciar a sessão de trabalho do usuário [RESOLVIDO]

Markus Vinicius Branco
markusbranco

(usa Ubuntu)

Enviado em 26/12/2012 - 14:56h

madrugada escreveu:

markusbranco escreveu:

Vixii não deu certo, justamente pelo motivo que me informaram!!
O programa em si só pode ser executado como root mesmo :( Tem alguma outra forma de fazer isso?
Não tem algum algum arquivo de configuração dentro do /etc/X11 que posso colocar esse script? afinal ele não o responsável por subir a interface gráfica??

vlww


Posso estar errado, mas creio que o diretório correto para colocar este script e executar junto com o "X" seja /etc/xdg/autostart/!!
Detalhe, além de ser executável, tem que ter a extensão ".desktop";)



Então cara, também não funcionou.
Na primeira vez, a interface nem subia mais, tive até que restaurar o sistema.
Já nos outros testes que fiz, até estava subindo a inteface gráfica, mas o script não funcionou, rodei então o script na mão para saber se era um problema nele, porém na mão executa normalmente :(

vlw a ajuda :)




11. Re: Iniciar script sempre que iniciar a sessão de trabalho do usuário [RESOLVIDO]

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 26/12/2012 - 15:00h

Achei algo no debian que usa o gdm3 é executdo após o login e pelo que traduzi se devidamente configurado é executado como root:

# cat /etc/gdm3/PostLogin/Default.sample :

#!/bin/sh
#
# Note: this is a sample and will not be run as is. Change the name of this
# file to <gdmconfdir>/PostLogin/Default for this script to be run. This
# script will be run before any setup is run on behalf of the user and is
# useful if you for example need to do some setup to create a home directory
# for the user or something like that. $HOME, $LOGIN and such will all be
# set appropriately and this script is run as root.
~


Veja se tem algo similar no ligthdm que é usado pelo ubuntu no lugar do gdm3


12. Re: Iniciar script sempre que iniciar a sessão de trabalho do usuário [RESOLVIDO]

Markus Vinicius Branco
markusbranco

(usa Ubuntu)

Enviado em 26/12/2012 - 15:17h

andrecanhadas escreveu:

Achei algo no debian que usa o gdm3 é executdo após o login e pelo que traduzi se devidamente configurado é executado como root:

# cat /etc/gdm3/PostLogin/Default.sample :

#!/bin/sh
#
# Note: this is a sample and will not be run as is. Change the name of this
# file to <gdmconfdir>/PostLogin/Default for this script to be run. This
# script will be run before any setup is run on behalf of the user and is
# useful if you for example need to do some setup to create a home directory
# for the user or something like that. $HOME, $LOGIN and such will all be
# set appropriately and this script is run as root.
~


Veja se tem algo similar no ligthdm que é usado pelo ubuntu no lugar do gdm3



Então cara já tinha dado uma pesquisada nisso ae!!
Até achei uma forma de rodar script com lightdm, mas ele roda quando aparece a tela de login e teria que ser depois disso (quando o usuário loga). :(




01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts