Shell Script - Instalador de firefox e java. Dicas e críticas

1. Shell Script - Instalador de firefox e java. Dicas e críticas

Patrick Costa da Silva
patrickpcs

(usa Nenhuma)

Enviado em 29/07/2017 - 22:39h

Olá, boa noite.
Brincadeira de fim de semana para praticar um pouco de ShellScript no bash.

Bolei esse script para facilitar a instalação de várias versões do firefox e do java no sistema sem remover as atualmente instaladas. Pode ser interessante para quem tem que acessar algumas aplicações legado no seu ambiente corporativo.
Ele instala o firefox a partir de um arquivo tar.bz2 baixado do site da mozilla https://ftp.mozilla.org/pub/firefox/releases/ e edita o lançador.desktop do firefox já existente no sistema de tal forma que, ao clicar com o botão direito em cima do lançador, seja exibida entre as opções "nova aba", "nova janela", uma opção dedicada para lançar a versão específica do firefox.
Obs: Para que funcione, não deve ter nenhuma instancia aberta do firefox.
Obs2: Logo após a instalação, você deve reiniciar sua DE. Se for gnome-shell basta apertar alt+f2 e digitar "restart" na caixa.
Se não fizer isso provavelmente não será exibida a nova opção no lançador do firefox.

O script também instala o java a partir de um arquivo baixado do site da oracle http://www.oracle.com/technetwork/java/archive-139210.html e configura o link simbólico para que o firefox reconheça a instalação do plugin.
Se você tiver mais de uma versão do java instalada, você deve executar o jcontrol (/opt/java/jre*/bin/jcontrol). Dessa forma você irá abrir o painel de control do java, mas o mais importante é que ao fazer isso, o java verifica a pasta ~/.cache/java onde fica armazenada as configurações de java para o usuário, inclusive se tem outras versões do java instalada e quais devem estar habilitadas.

Mas a real intenção é compartilhar e receber dicas a respeito dos seguintes itens;
Quais são as outras maneiras interessantes de se exibir mensagens em vários idiomas de acordo com o LC do usuário?
Outras maneiras de trabalhar os parâmetros posicionais de modo a funcionarem como switches ou flags para comandos (scripts)?
Está mal comentado o código? Quais dicas tens para melhorar o modo de comentar?
Correções de inglês e português são bem vindas também :)


#!/bin/bash
# Script by Patrick Costa da Silva

# Vars
callifirefox=0
callijava=0
pwdscript=$PWD

# Functions
validroot(){
if [ $UID != 0 ]; then
msgrootpriv #Message Function
exit
fi
}

ijava() {
if mkdir /opt/java &> /dev/null || test -d /opt/java ; then
cd /opt/java
if ! tar -xvf "$javatar" >> temp.txt ; then
msgtarfail $javatar #Message Function
return 1
fi
fjava=$(head -n1 temp.txt | sed "s/\///")
rm temp.txt
if ! ./$fjava/bin/java -version ; then # Test if the binary works
msgrunfail "/opt/java/$fjava/bin/java" #Message Function
return 1
fi
if ! ln -sf /opt/java/$fjava/lib/*/libnpjp2.so /usr/lib/mozilla/plugins/libnpjp2.$(./$fjava/bin/java -version 2>&1 | grep "version" | sed "s/java version //;s/\"//g").so &> /dev/null ; then
msgunsymlink '"/usr/lib/mozilla/plugins/"' #Message Function
return 1
fi
else
msgundir '"/opt/java"' #Message Function
return 1
fi
}

ifirefox() {
if mkdir /opt/firefox &> /dev/null || test -d /opt/firefox ; then
cd /opt/firefox
if ! tar -xvf "$firefoxtar" >> temp.txt ; then
msgtarfail $firefoxtar #Message Function
return 1
fi
ffirefox=$(head -n1 temp.txt)
rm temp.txt
if ! /opt/firefox/$ffirefox/firefox -V ; then # Test if the binary works
msgrunfail "/opt/firefox/$ffirefox/firefox" #Message Function
return 1
fi
vfirefox=$(/opt/firefox/$ffirefox/firefox -V | cut -d" " -f3)
mv /opt/firefox/$ffirefox /opt/firefox/Firefox$vfirefox
if [ -f /usr/share/applications/firefox.desktop ] ; then # Check the gnome launcher and tune it.
sed -i "s/Actions=.*/&Firefox$vfirefox\;/" /usr/share/applications/firefox.desktop
echo -e "\n[Desktop Action Firefox$vfirefox]\nName=Firefox$vfirefox\nExec=/opt/firefox/Firefox$vfirefox/firefox" >> /usr/share/applications/firefox.desktop
fi
else
msgundir '"/opt/firefox"' #Message Function
return 1
fi
}

## Messages functions
msgsyntaxerror() {
echo $LANG | grep pt_BR > /dev/null && echo "Erro de sintaxe. Use $0 -h para obter ajuda." && return
echo "Syntax error. Use $0 -h for help."; return
}

msghelp() {
echo $LANG | grep pt_BR > /dev/null && echo "Aqui está sua ajuda"
echo $LANG | grep pt_BR > /dev/null && echo "-f | --firefox caminho/para/arquivo.tar Instala o firefox usando o arquivo informado"
echo $LANG | grep pt_BR > /dev/null && echo "-j | --java caminho/para/arquivo.tar Instala o java usando o arquivo informado"
echo $LANG | grep pt_BR > /dev/null && echo "-J | --download-java | -F | --download-firefox Abre seu navegador padrão na página de download do Java ou Firefox"
echo $LANG | grep pt_BR > /dev/null && echo -e "\nExemplos\n"
echo $LANG | grep pt_BR > /dev/null && echo "$0 -f $HOME/Download/firefox.tar.bz2 -j Download/jre-8u141-linux-i586.tar.gz" && return

echo "Here is your help..."
echo "-f | --firefox path/to/file.tar Install firefox using the given file"
echo "-j | --java path/to/file.tar Install java using the given file"
echo "-J | --download-java | -F | --download-firefox Open your default browser at the download page of Java or Firefox"
echo -e "\nExamples\n"
echo "$0 -f $HOME/Download/firefox.tar.bz2 -j Download/jre-8u141-linux-i586.tar.gz"
}

msgunsymlink() {
echo $LANG | grep pt_BR > /dev/null && echo "Nao foi possivel criar um link simbolico em $@" && return
echo "Unable to create a symlink at $@"
}

msgundir() {
echo $LANG | grep pt_BR > /dev/null && echo "Nao foi possivel criar um diretorio em $@" && return
echo "Unable to create a directory at $@"
}

msgrootpriv() {
echo $LANG | grep pt_BR > /dev/null && echo "Você precisa de privilégios de root para executar esse script" && return
echo "You need root privileges to run this script"
}

msgsuccess() {
echo $LANG | grep pt_BR > /dev/null && echo "$1 - instalado com sucesso!" && return
echo "$1 - successfully installed!"
}

msgfailure() {
echo $LANG | grep pt_BR > /dev/null && echo "$1 - falha na instalação!" && return
echo "$1 - installation failure!"
}

msgfnexist() {
echo $LANG | grep pt_BR > /dev/null && echo "$1 - Não foi possível acessar esse arquivo" && return
echo "$1 - Can't reach that file"
}

msgtarfail() {
echo $LANG | grep pt_BR > /dev/null && echo "Tar falho ao tentar descompactar $1" && return
echo "Tar has failed to uncompress the $1"
}

msgrunfail() {
echo $LANG | grep pt_BR > /dev/null && echo "Falha ao tentar executar o binário $1" && return
echo "Fail while trying to run the exec $1"
}

###############
### MAIN
###############
if [ $# -ne 1 -a $# -ne 2 -a $# -ne 4 ]; then
msgsyntaxerror #Message Function
exit 1
fi

while true; do
[ $# -eq 0 ] && break
case $1 in
-f|--firefox)
validroot #Function
echo $2 | grep -e "^/" > /dev/null && firefoxtar=$2 || firefoxtar="$pwdscript/$2" #Absolute or relativ path
if test -r "$firefoxtar" ; then
callifirefox=1 # to do list
shift 2
else
msgfnexist $firefoxtar; exit #Message Function
fi
;;
-F|--download-firefox)
browse https://ftp.mozilla.org/pub/firefox/releases/ &
shift 1
;;
-j|--java)
validroot #Function
echo $2 | grep -e "^/" > /dev/null && javatar=$2 || javatar="$pwdscript/$2" # Absolute or relative path
if test -r "$javatar" ; then
callijava=1 # to do list
shift 2
else
msgfnexist $javatar; exit #Message Function
fi
;;
-J|--download-java)
browse http://www.oracle.com/technetwork/java/archive-139210.html &
shift 1
;;
-h|--help)
msghelp #Message Function
exit
;;
*)
msgsyntaxerror #Message Function
exit 1
;;
esac
done

# to do list

if [ $callifirefox = 1 ]; then
ifirefox && msgsuccess firefox || msgfailure firefox
fi

if [ $callijava = 1 ]; then
ijava && msgsuccess java || msgfailure java
fi


PS1: No momento só oferece suporte a português BR, e se o usuário estiver usando outro idioma será automaticamente exibido mensagens em inglês.

PS2: Acho que seria muito bom colocar um bloqueio nas opções -J e -F para que não executem o navegador como root.



  


2. Re: Shell Script - Instalador de firefox e java. Dicas e críticas

Alberto Federman Neto.
albfneto

(usa openSUSE)

Enviado em 07/08/2017 - 18:57h

não é igual, o seu é script, mas a ideia e correlata ao que uso para testar os Firefox Nightly:

https://edpsblog.wordpress.com/2017/05/15/firefox-novo-em-toda-e-qualquer-distro/
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Albfneto,
Ribeirão Preto, S.P., Brasil.
Usuário Linux, Linux Counter: #479903.
Distros Favoritas: Sabayon, Gentoo, openSUSE, Mageia e OpenMandriva.


3. Re: Shell Script - Instalador de firefox e java. Dicas e críticas

Marcos Moraes
mamp

(usa Fedora)

Enviado em 07/11/2017 - 16:51h

Patrcik tentei rodar seu script conforme sua sugestao.
Nao deu certo aqui nao.
Fiz de duas maneiras
1. rodei o scripts no terminal todas as linhas
2. criei um arquivo sera.sh e rodei,

tambem nao deu certo.

O que me sugere?



4. Re: Shell Script - Instalador de firefox e java. Dicas e críticas

Patrick Costa da Silva
patrickpcs

(usa Nenhuma)

Enviado em 07/11/2017 - 19:25h

Qual distro você rodou o script?
Você pode postar uma cópia dos comandos usados e saída no terminal?

Essa é uma cópia da que eu uso atualmente, funciona sem problemas no Ubuntu GNOME 16.04.3 LTS. Testado pelo menos 50 vezes. E sempre está sendo chamado por outro script pelo seguinte comando;
./legacybrowser.sh -f firefox-52.3.0esr.tar.bz2 -j jre-8u91-linux-x64.tar.gz 


#!/bin/bash
# Script by Patrick Costa da Silva

# Vars
callifirefox=0
callijava=0
pwdscript=$PWD

# Functions
validroot(){
[ $UID != 0 ] && return 1 || return 0
}

ijava() {
if mkdir /opt/java &> /dev/null || test -d /opt/java ; then
chmod -R 755 /opt/java
cd /opt/java
if ! tar -xvf "$javatar" >> temp.txt ; then
msgtarfail $javatar #Message Function
return 1
fi
fjava=$(head -n1 temp.txt | sed "s/\///")
rm temp.txt
if ! ./$fjava/bin/java -version ; then # Test if the binary works
msgrunfail "/opt/java/$fjava/bin/java" #Message Function
return 1
fi
if ! ln -sf /opt/java/$fjava/lib/*/libnpjp2.so /usr/lib/mozilla/plugins/libnpjp2.$(./$fjava/bin/java -version 2>&1 | grep "version" | sed "s/java version //;s/\"//g").so &> /dev/null ; then
msgunsymlink '"/usr/lib/mozilla/plugins/"' #Message Function
return 1
fi
else
msgundir '"/opt/java"' #Message Function
return 1
fi
}

ifirefox() {
if mkdir /opt/firefox &> /dev/null || test -d /opt/firefox ; then
chmod -R 755 /opt/firefox
cd /opt/firefox
if ! tar -xvf "$firefoxtar" >> temp.txt ; then
msgtarfail $firefoxtar #Message Function
return 1
fi
ffirefox=$(head -n1 temp.txt)
rm temp.txt
if ! /opt/firefox/$ffirefox/firefox -V ; then # Test if the binary works
msgrunfail "/opt/firefox/$ffirefox/firefox" #Message Function
return 1
fi
vfirefox=$(/opt/firefox/$ffirefox/firefox -V | cut -d" " -f3)
mv /opt/firefox/$ffirefox /opt/firefox/Firefox$vfirefox
if [ -f /usr/share/applications/firefox.desktop ] ; then # Check the gnome launcher and tune it.
## Modificado para atender as necessidades do --------. O comportamento padrão do lançador sera iniciar o firefox instalado pelo script.
sed -i "s/Exec=firefox/Exec=\/opt\/firefox\/Firefox$vfirefox\/firefox/" /usr/share/applications/firefox.desktop
sed -i "s/Actions=.*/&FirefoxCurrent\;/" /usr/share/applications/firefox.desktop
echo -e "\n[Desktop Action FirefoxCurrent]\nName=Firefox Versão mais recente\nExec=firefox %u" >> /usr/share/applications/firefox.desktop
#DEs like gnomeshell will use the launcher at the user applications folder instead of the system wide folder if it have the same filename.
#So that way we prevent firefox updates of cleaning up or changes at the launcher...actualy not, but the launcher at each user will not be touched.. ^^'.
mkdir -p /etc/skel/.local/share/applications #Making a directory at skel for the new users.
cp -p /usr/share/applications/firefox.desktop /etc/skel/.local/share/applications/
ls -d /home/*/.local/share/applications/ | xargs -n 1 cp -p /usr/share/applications/firefox.desktop #Making a copy of the launcher for each current users
fi
else
msgundir '"/opt/firefox"' #Message Function
return 1
fi
}

## Messages functions
msgsyntaxerror() {
echo $LANG | grep pt_BR > /dev/null && echo "Erro de sintaxe. Use $0 -h para obter ajuda." && return
echo "Syntax error. Use $0 -h for help."; return
}

msghelp() {
echo $LANG | grep pt_BR > /dev/null && echo "Aqui está sua ajuda"
echo $LANG | grep pt_BR > /dev/null && echo "-f | --firefox caminho/para/arquivo.tar Instala o firefox usando o arquivo informado"
echo $LANG | grep pt_BR > /dev/null && echo "-j | --java caminho/para/arquivo.tar Instala o java usando o arquivo informado"
echo $LANG | grep pt_BR > /dev/null && echo "-J | --download-java | -F | --download-firefox Abre seu navegador padrão na página de download do Java ou Firefox"
echo $LANG | grep pt_BR > /dev/null && echo -e "\nExemplos\n"
echo $LANG | grep pt_BR > /dev/null && echo "$0 -f $HOME/Download/firefox.tar.bz2 -j Download/jre-8u141-linux-i586.tar.gz" && return

echo "Here is your help..."
echo "-f | --firefox path/to/file.tar Install firefox using the given file"
echo "-j | --java path/to/file.tar Install java using the given file"
echo "-J | --download-java | -F | --download-firefox Open your default browser at the download page of Java or Firefox"
echo -e "\nExamples\n"
echo "$0 -f $HOME/Download/firefox.tar.bz2 -j Download/jre-8u141-linux-i586.tar.gz"
}

msgunsymlink() {
echo $LANG | grep pt_BR > /dev/null && echo "Nao foi possivel criar um link simbolico em $@" && return
echo "Unable to create a symlink at $@"
}

msgundir() {
echo $LANG | grep pt_BR > /dev/null && echo "Nao foi possivel criar um diretorio em $@" && return
echo "Unable to create a directory at $@"
}

msgrootpriv() {
echo $LANG | grep pt_BR > /dev/null && echo "Você precisa de privilégios de root para executar esse script" && return
echo "You need root privileges to run this script"
}

msgsuccess() {
echo $LANG | grep pt_BR > /dev/null && echo "$1 - instalado com sucesso!" && return
echo "$1 - successfully installed!"
}

msgfailure() {
echo $LANG | grep pt_BR > /dev/null && echo "$1 - falha na instalação!" && return
echo "$1 - installation failure!"
}

msgfnexist() {
echo $LANG | grep pt_BR > /dev/null && echo "$1 - Não foi possível acessar esse arquivo" && return
echo "$1 - Can't reach that file"
}

msgtarfail() {
echo $LANG | grep pt_BR > /dev/null && echo "Tar falho ao tentar descompactar $1" && return
echo "Tar has failed to uncompress the $1"
}

msgrunfail() {
echo $LANG | grep pt_BR > /dev/null && echo "Falha ao tentar executar o binário $1" && return
echo "Fail while trying to run the exec $1"
}

msgbrowser() {
echo $LANG | grep pt_BR > /dev/null && echo "Não é uma boa ideia iniciar o navegador como root" && return
echo "Isn't a good idea to run a browser as root"
}

###############
### MAIN
###############
if [ $# -ne 1 -a $# -ne 2 -a $# -ne 4 ]; then
msgsyntaxerror #Message Function
exit 1
fi

while true; do
[ $# -eq 0 ] && break
case $1 in
-f|--firefox)
if ! validroot; then msgrootpriv; exit; fi # Validate if is the root user
echo $2 | grep -e "^/" > /dev/null && firefoxtar=$2 || firefoxtar="$pwdscript/$2" #Absolute or relativ path
if test -r "$firefoxtar" ; then
callifirefox=1 # to do list
shift 2
else
msgfnexist $firefoxtar; exit #Message Function
fi
;;
-F|--download-firefox)
validroot && msgbrowser || browse https://ftp.mozilla.org/pub/firefox/releases/ & #If root, dont run the feature
shift 1
;;
-j|--java)
if ! validroot; then msgrootpriv; exit; fi # Validate if is the root user
echo $2 | grep -e "^/" > /dev/null && javatar=$2 || javatar="$pwdscript/$2" # Absolute or relative path
if test -r "$javatar" ; then
callijava=1 # to do list
shift 2
else
msgfnexist $javatar; exit #Message Function
fi
;;
-J|--download-java)
validroot && msgbrowser || browse http://www.oracle.com/technetwork/java/archive-139210.html & #If root, dont run the feature
shift 1
;;
-h|--help)
msghelp #Message Function
exit
;;
*)
msgsyntaxerror #Message Function
exit 1
;;
esac
done

# to do list

if [ $callifirefox = 1 ]; then
ifirefox && msgsuccess firefox || msgfailure firefox
fi

if [ $callijava = 1 ]; then
ijava && msgsuccess java || msgfailure java
fi



5. Re: Shell Script - Instalador de firefox e java. Dicas e críticas

Marcos Moraes
mamp

(usa Fedora)

Enviado em 09/11/2017 - 01:11h

Vou tentar entender as linhas que fez.
Mas preciso usar firefox 38esr

e java 7
qual as linhas de codigos que vc aponta para baixar o firefox e java especifcio por favor?

patrickpcs escreveu:

Qual distro você rodou o script?
Você pode postar uma cópia dos comandos usados e saída no terminal?

Essa é uma cópia da que eu uso atualmente, funciona sem problemas no Ubuntu GNOME 16.04.3 LTS. Testado pelo menos 50 vezes. E sempre está sendo chamado por outro script pelo seguinte comando;
./legacybrowser.sh -f firefox-52.3.0esr.tar.bz2 -j jre-8u91-linux-x64.tar.gz 


#!/bin/bash
# Script by Patrick Costa da Silva

# Vars
callifirefox=0
callijava=0
pwdscript=$PWD

# Functions
validroot(){
[ $UID != 0 ] && return 1 || return 0
}

ijava() {
if mkdir /opt/java &> /dev/null || test -d /opt/java ; then
chmod -R 755 /opt/java
cd /opt/java
if ! tar -xvf "$javatar" >> temp.txt ; then
msgtarfail $javatar #Message Function
return 1
fi
fjava=$(head -n1 temp.txt | sed "s/\///")
rm temp.txt
if ! ./$fjava/bin/java -version ; then # Test if the binary works
msgrunfail "/opt/java/$fjava/bin/java" #Message Function
return 1
fi
if ! ln -sf /opt/java/$fjava/lib/*/libnpjp2.so /usr/lib/mozilla/plugins/libnpjp2.$(./$fjava/bin/java -version 2>&1 | grep "version" | sed "s/java version //;s/\"//g").so &> /dev/null ; then
msgunsymlink '"/usr/lib/mozilla/plugins/"' #Message Function
return 1
fi
else
msgundir '"/opt/java"' #Message Function
return 1
fi
}

ifirefox() {
if mkdir /opt/firefox &> /dev/null || test -d /opt/firefox ; then
chmod -R 755 /opt/firefox
cd /opt/firefox
if ! tar -xvf "$firefoxtar" >> temp.txt ; then
msgtarfail $firefoxtar #Message Function
return 1
fi
ffirefox=$(head -n1 temp.txt)
rm temp.txt
if ! /opt/firefox/$ffirefox/firefox -V ; then # Test if the binary works
msgrunfail "/opt/firefox/$ffirefox/firefox" #Message Function
return 1
fi
vfirefox=$(/opt/firefox/$ffirefox/firefox -V | cut -d" " -f3)
mv /opt/firefox/$ffirefox /opt/firefox/Firefox$vfirefox
if [ -f /usr/share/applications/firefox.desktop ] ; then # Check the gnome launcher and tune it.
## Modificado para atender as necessidades do --------. O comportamento padrão do lançador sera iniciar o firefox instalado pelo script.
sed -i "s/Exec=firefox/Exec=\/opt\/firefox\/Firefox$vfirefox\/firefox/" /usr/share/applications/firefox.desktop
sed -i "s/Actions=.*/&FirefoxCurrent\;/" /usr/share/applications/firefox.desktop
echo -e "\n[Desktop Action FirefoxCurrent]\nName=Firefox Versão mais recente\nExec=firefox %u" >> /usr/share/applications/firefox.desktop
#DEs like gnomeshell will use the launcher at the user applications folder instead of the system wide folder if it have the same filename.
#So that way we prevent firefox updates of cleaning up or changes at the launcher...actualy not, but the launcher at each user will not be touched.. ^^'.
mkdir -p /etc/skel/.local/share/applications #Making a directory at skel for the new users.
cp -p /usr/share/applications/firefox.desktop /etc/skel/.local/share/applications/
ls -d /home/*/.local/share/applications/ | xargs -n 1 cp -p /usr/share/applications/firefox.desktop #Making a copy of the launcher for each current users
fi
else
msgundir '"/opt/firefox"' #Message Function
return 1
fi
}

## Messages functions
msgsyntaxerror() {
echo $LANG | grep pt_BR > /dev/null && echo "Erro de sintaxe. Use $0 -h para obter ajuda." && return
echo "Syntax error. Use $0 -h for help."; return
}

msghelp() {
echo $LANG | grep pt_BR > /dev/null && echo "Aqui está sua ajuda"
echo $LANG | grep pt_BR > /dev/null && echo "-f | --firefox caminho/para/arquivo.tar Instala o firefox usando o arquivo informado"
echo $LANG | grep pt_BR > /dev/null && echo "-j | --java caminho/para/arquivo.tar Instala o java usando o arquivo informado"
echo $LANG | grep pt_BR > /dev/null && echo "-J | --download-java | -F | --download-firefox Abre seu navegador padrão na página de download do Java ou Firefox"
echo $LANG | grep pt_BR > /dev/null && echo -e "\nExemplos\n"
echo $LANG | grep pt_BR > /dev/null && echo "$0 -f $HOME/Download/firefox.tar.bz2 -j Download/jre-8u141-linux-i586.tar.gz" && return

echo "Here is your help..."
echo "-f | --firefox path/to/file.tar Install firefox using the given file"
echo "-j | --java path/to/file.tar Install java using the given file"
echo "-J | --download-java | -F | --download-firefox Open your default browser at the download page of Java or Firefox"
echo -e "\nExamples\n"
echo "$0 -f $HOME/Download/firefox.tar.bz2 -j Download/jre-8u141-linux-i586.tar.gz"
}

msgunsymlink() {
echo $LANG | grep pt_BR > /dev/null && echo "Nao foi possivel criar um link simbolico em $@" && return
echo "Unable to create a symlink at $@"
}

msgundir() {
echo $LANG | grep pt_BR > /dev/null && echo "Nao foi possivel criar um diretorio em $@" && return
echo "Unable to create a directory at $@"
}

msgrootpriv() {
echo $LANG | grep pt_BR > /dev/null && echo "Você precisa de privilégios de root para executar esse script" && return
echo "You need root privileges to run this script"
}

msgsuccess() {
echo $LANG | grep pt_BR > /dev/null && echo "$1 - instalado com sucesso!" && return
echo "$1 - successfully installed!"
}

msgfailure() {
echo $LANG | grep pt_BR > /dev/null && echo "$1 - falha na instalação!" && return
echo "$1 - installation failure!"
}

msgfnexist() {
echo $LANG | grep pt_BR > /dev/null && echo "$1 - Não foi possível acessar esse arquivo" && return
echo "$1 - Can't reach that file"
}

msgtarfail() {
echo $LANG | grep pt_BR > /dev/null && echo "Tar falho ao tentar descompactar $1" && return
echo "Tar has failed to uncompress the $1"
}

msgrunfail() {
echo $LANG | grep pt_BR > /dev/null && echo "Falha ao tentar executar o binário $1" && return
echo "Fail while trying to run the exec $1"
}

msgbrowser() {
echo $LANG | grep pt_BR > /dev/null && echo "Não é uma boa ideia iniciar o navegador como root" && return
echo "Isn't a good idea to run a browser as root"
}

###############
### MAIN
###############
if [ $# -ne 1 -a $# -ne 2 -a $# -ne 4 ]; then
msgsyntaxerror #Message Function
exit 1
fi

while true; do
[ $# -eq 0 ] && break
case $1 in
-f|--firefox)
if ! validroot; then msgrootpriv; exit; fi # Validate if is the root user
echo $2 | grep -e "^/" > /dev/null && firefoxtar=$2 || firefoxtar="$pwdscript/$2" #Absolute or relativ path
if test -r "$firefoxtar" ; then
callifirefox=1 # to do list
shift 2
else
msgfnexist $firefoxtar; exit #Message Function
fi
;;
-F|--download-firefox)
validroot && msgbrowser || browse https://ftp.mozilla.org/pub/firefox/releases/ & #If root, dont run the feature
shift 1
;;
-j|--java)
if ! validroot; then msgrootpriv; exit; fi # Validate if is the root user
echo $2 | grep -e "^/" > /dev/null && javatar=$2 || javatar="$pwdscript/$2" # Absolute or relative path
if test -r "$javatar" ; then
callijava=1 # to do list
shift 2
else
msgfnexist $javatar; exit #Message Function
fi
;;
-J|--download-java)
validroot && msgbrowser || browse http://www.oracle.com/technetwork/java/archive-139210.html & #If root, dont run the feature
shift 1
;;
-h|--help)
msghelp #Message Function
exit
;;
*)
msgsyntaxerror #Message Function
exit 1
;;
esac
done

# to do list

if [ $callifirefox = 1 ]; then
ifirefox && msgsuccess firefox || msgfailure firefox
fi

if [ $callijava = 1 ]; then
ijava && msgsuccess java || msgfailure java
fi





6. Re: Shell Script - Instalador de firefox e java. Dicas e críticas

Patrick Costa da Silva
patrickpcs

(usa Nenhuma)

Enviado em 09/11/2017 - 06:33h

Nenhuma amigo. O script não baixa o Firefox nem o Java. Ele apenas abre o navegador na página de download da Mozilla e Oracle. Você que tem que baixar.

Você leu as instruções do script? ./script.sh -h
Construí um help dentro dele.

./script.sh -J deve abrir a página da Oracle para download do Java.


./script.sh -F deve abrir o FTP da Mozilla com todas as versões do Firefox.



-F|--download-firefox)
validroot && msgbrowser || browse https://ftp.mozilla.org/pub/firefox/releases/ & #If root, dont run the feature
shift 1
;;
-j|--java)
if ! validroot; then msgrootpriv; exit; fi # Validate if is the root user
echo $2 | grep -e "^/" > /dev/null && javatar=$2 || javatar="$pwdscript/$2" # Absolute or relative path
if test -r "$javatar" ; then
callijava=1 # to do list
shift 2
else
msgfnexist $javatar; exit #Message Function
fi
;;
-J|--download-java)
validroot && msgbrowser || browse http://www.oracle.com/technetwork/java/archive-139210.html & #If root, dont run the feature
shift 1



7. Re: Shell Script - Instalador de firefox e java. Dicas e críticas

Patrick Costa da Silva
patrickpcs

(usa Nenhuma)

Enviado em 09/11/2017 - 06:40h

Eu gostaria de colocar pra baixar automaticamente, mas já tem uns anos que a Oracle exige um cadastro no site deles para baixar as antigas versões do Java. Depois que vc baixar, basta usar o script para instalar usando os parâmetros -f e -j.

script.sh -f caminho/para/Firefox.tar.gz -j caminho/para/Java.tar.gz




8. Re: Shell Script - Instalador de firefox e java. Dicas e críticas

Marcos Moraes
mamp

(usa Fedora)

Enviado em 09/11/2017 - 16:41h

Patrick.
Não consegui rodar o script seja via terminal ou criando um arquivo texto com .sh

o comando que enviou

./legacybrowser.sh -f firefox-52.3.0esr.tar.bz2 -j jre-8u91-linux-x64.tar.gz

eu nao entendi:
1. tenho que nomear o script como legacybrowser.sh?
2. Firefox meu ja baixei seria firefox-38
3. e Java seria jre-7u80
ambos arquivos compacatados. ficaria o scripts assim?

./legacybrowser.sh -f firefox-38.tar.bz2 -j jre-7u80-linux-x64.tar.gz

sendo o seu script nomeado como legacybrowser.sh ?

patrickpcs escreveu:

Nenhuma amigo. O script não baixa o Firefox nem o Java. Ele apenas abre o navegador na página de download da Mozilla e Oracle. Você que tem que baixar.

Você leu as instruções do script? ./script.sh -h
Construí um help dentro dele.

./script.sh -J deve abrir a página da Oracle para download do Java.


./script.sh -F deve abrir o FTP da Mozilla com todas as versões do Firefox.



-F|--download-firefox)
validroot && msgbrowser || browse https://ftp.mozilla.org/pub/firefox/releases/ & #If root, dont run the feature
shift 1
;;
-j|--java)
if ! validroot; then msgrootpriv; exit; fi # Validate if is the root user
echo $2 | grep -e "^/" > /dev/null && javatar=$2 || javatar="$pwdscript/$2" # Absolute or relative path
if test -r "$javatar" ; then
callijava=1 # to do list
shift 2
else
msgfnexist $javatar; exit #Message Function
fi
;;
-J|--download-java)
validroot && msgbrowser || browse http://www.oracle.com/technetwork/java/archive-139210.html & #If root, dont run the feature
shift 1





9. Re: Shell Script - Instalador de firefox e java. Dicas e críticas

Patrick Costa da Silva
patrickpcs

(usa Nenhuma)

Enviado em 09/11/2017 - 19:41h

mamp escreveu:

o comando que enviou

./legacybrowser.sh -f firefox-52.3.0esr.tar.bz2 -j jre-8u91-linux-x64.tar.gz

eu nao entendi:
1. tenho que nomear o script como legacybrowser.sh?
2. Firefox meu ja baixei seria firefox-38
3. e Java seria jre-7u80
ambos arquivos compacatados. ficaria o scripts assim?

./legacybrowser.sh -f firefox-38.tar.bz2 -j jre-7u80-linux-x64.tar.gz

sendo o seu script nomeado como legacybrowser.sh ?


"1. tenho que nomear o script como legacybrowser.sh?"
- Apenas se você quiser, mas obviamente que quando você for executar o script você deverá chama-lo pelo nome que você definir.
- Não se esqueça de dar permissão de execução
chmod +x script.sh 
ou legacybrowser.sh se assim estiver nomeado o script.



"4. ambos arquivos compacatados. ficaria o scripts assim?"
./legacybrowser.sh -f firefox-38.tar.bz2 -j jre-7u80-linux-x64.tar.gz

Exatamente amigo! Desde que os arquivos compactados estejam dentro da mesma pasta que o script e que você também esteja na mesma pasta.

O script deve ser executado como root.





10. Consegui java e firefox, agora tenho que reinstalar certificacao digital

Marcos Moraes
mamp

(usa Fedora)

Enviado em 11/11/2017 - 23:59h

Patrick,

Puxa fantastico, depois de muito tentar fiz o seguinte.
criei o arquivo com seu script sera.sh (kkk será que vai dar certo?)

chmod +x sera.sh
cp /home/mamp/Downloads/vasco/sera.sh /usr/local/bin

coloquei todos os arquivos que queria instalar no mesmo diretorio
/home/mamp/Downloads/vasco/

Digitei
/home/mamp/Downloads/vasco/sera.sh -f /home/mamp/Downloads/vasco/firefox-41.0.tar.bz2 -j /home/mamp/Downloads/vasco/jre-7u80-linux-x64.tar.gz


Ufa para rodar
./opt/firefox/Firefox41.0/firefox.bin


Tive que reinstalar ubuntu e perdi meu certificado digital, estou reinstalando e aviso se tudo deu certinho.

Fantastico, vou tentar com varios versoes de firefox, desta forma vou combinar versoes diferentes de firefox com java.
volto a lhe reportar.
Muito legal. obrigado


11. Re: Shell Script - Instalador de firefox e java. Dicas e críticas

Marcos Moraes
mamp

(usa Fedora)

Enviado em 13/11/2017 - 10:13h

Patrick, estou tentando testar a aplicação depois do script.
Tenho que adicionar excessoes no java, tenho que instalar o java tradicional na maquina para adicioonar excecoes, ou como faco para ativar e alterar o java local?



12. Re: Shell Script - Instalador de firefox e java. Dicas e críticas

Patrick Costa da Silva
patrickpcs

(usa Nenhuma)

Enviado em 13/11/2017 - 20:01h

Basta executar o painel de controle do java.
O executável do painel de controle do java fica dentro da pasta bin do java, é o arquivo ControlPanel (Se não me engano é um link simbólico).
Basta executar ele que será aberto a janela do painel de controle do java.

Caso queira acessar sempre de maneira mais fácil, basta criar um lançador conforme o exemplo abaixo lembrando que terás que alterar o caminho do executável e do ícone para o caminho correspondente da sua instalação. Salve o lançador.desktop no seguinte caminho /usr/share/applications/paineljava.desktop

Após isso deve aparecer como mais uma aplicação disponível na sua GUI.

[Desktop Entry]
Name=Java
GenericName=Painel de controle do java
Comment=Permite algumas configurações do java
Exec=/opt/java/jre1.8.0_91/bin/ControlPanel
Terminal=false
Type=Application
Icon=/opt/java/jre1.8.0_91/lib/deploy/java-icon.ico
Keywords=java;configurações;controle;painel;



Irei atualizar o script assim que possível para que configure as variáveis globais também para que funcione para o restante do sistema e não apenas no navegador. A criação do lançador para acessar o painel de controle também está na lista de metas, mas ainda estou explorando como funciona a publicação de artigos/dicas/scripts entre outras coisas do VOL.




01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts