Alternar versões do Java através de script

Iniciado por JesseGaspar, 20 de Agosto de 2012, 11:59

tópico anterior - próximo tópico

JesseGaspar

Olá, pessoal. Bom dia!
Perdoem-me caso esteja postando na área errada, mas imagino que esta seja a que mais faz sentido.

Trabalho numa instituição de ensino, onde faço parte do suporte técnico.
Iniciei no Linux há pouco tempo e sinto algumas dificuldades(o que é normal), mas também tenho facilidade em aprender.

Minha dúvida é bem simples. Nos dias de hoje, os instrutores da empresa aplicam diversos cursos.
Alguns precisam do Java na versão 6, e outros na versão 7. Beleza. Ambos estão instados e configurados nas máquinas. Porém, para que possamos alterar/modificar as versões, o preciso executar o seguinte comando via terminal:
$ sudo update-alternatives --config java

Ele me retorna a seguinte mensagem:
Citar[sudo] password for jessegaspar:
Existem 2 escolhas para a alternativa java (disponibiliza /usr/bin/java).

  Selecção   Caminho                                  Prioridade Estado
------------------------------------------------------------
  0            /usr/lib/jvm/java-6-sun/jre/bin/java      63        modo automático
  1            /usr/lib/jvm/java-6-sun/jre/bin/java      63        modo manual
* 2            /usr/lib/jvm/java-7-oracle/jre/bin/java   2         modo manual

Pressione enter para manter a escolha actual
  • , ou digite o número da selecção:
Ou seja, se eu selecionar 0(zero), uso o Java na versão 6 em modo automático.
Se seleciono 1(um), uso o Java 6 em modo manual.
Caso eu escolha 2(dois/padrão), uso o Java na versão 7 em modo manual.

Preciso montar um script que faça a execução deste comando, e que selecione/troque a versão Java apenas ao digitar no terminal(sem que seja preciso pedir a senha do sudo):
changejava6
changejava7

É isso, galera. Acho que consegui explicar bem. rs
Muito obrigado.

Forte abraço.

Tota

Ola

Poste o que já fez no seu script ou cite os links que já visitou para o forum poder ajudar com mais certeza.

[]'s

JesseGaspar

Olá, Tota !
Obrigado pela atenção.
Então... Eu fiz algumas(várias) pesquisas, e acho que estou indo bem.
Aparentemente, o que quero fazer se chama"Alias".

Editei o arquivo /etc/bash.bashrc adicionando o seguinte trecho ao final dele:
if [ -f ~/.bash_alias ]; then
. ~/.bash_alias
fi


Criei o arquivo .bash_alias em /home/jessegaspar/, e nele contém o seguinte código:
alias changejava='sudo update-alternatives --config java'

Após isto, é preciso reiniciar a sessão para que o novo comando(change java) funcione.
O problema é que mesmo assim ele continua me pedindo a senha do sudo.
Eu gostaria de executar este novo comando, e que ele me retornasse o mensagem abaixo sem solicitar a senha do root:

Citar[sudo] password for jessegaspar:
Existem 2 escolhas para a alternativa java (disponibiliza /usr/bin/java).

  Selecção   Caminho                                  Prioridade Estado
------------------------------------------------------------
  0            /usr/lib/jvm/java-6-sun/jre/bin/java      63        modo automático
  1            /usr/lib/jvm/java-6-sun/jre/bin/java      63        modo manual
* 2            /usr/lib/jvm/java-7-oracle/jre/bin/java   2         modo manual

Pressione enter para manter a escolha actual

    , ou digite o número da selecção:

Eu já tentei tirar o "sudo" do .bash_alias em /home/jessegaspar/, mas mesmo assim não dá certo.
Grande abraço.

Tota

Para esta permissão de não utilizar o sudo, será necessário editar o arquivo sudoers.

http://linux.die.net/man/5/sudoers


JesseGaspar

#4
Obrigado, Tota. Funcionou !
Bastou adicionar a seguinte linha ao final de /etc/sudoers:
%sudo ALL=NOPASSWD: ALL

Tentei fazer uma pequena gambiarra para que os usuários não tivessem total privilégio de "sudo", mas não deu certo.
Por outro lado, isto já resolve o problema.
Acho que o tópico já pode ser marcado como "[Resolvido]".

Grande abraço.

--------------------------------------
Editando...
--------------------------------------

Parece que fazendo um chmod 777 em .bash_alias também resolve o problema.
Mas para isso, o conteúdo de .bash_alias precisa ser editado tendo o "sudo" removido.