Skip to content

Instantly share code, notes, and snippets.

@carlosanders
Last active July 21, 2018 03:11
Show Gist options
  • Select an option

  • Save carlosanders/547c7da77bb1f258911ea8b35926e9ca to your computer and use it in GitHub Desktop.

Select an option

Save carlosanders/547c7da77bb1f258911ea8b35926e9ca to your computer and use it in GitHub Desktop.
Adiciona proxy no bash do Oracle Linux 7+ (Modo Interativo, não precisar editar o arquivo)
#!/bin/bash
# Script Autor: 1T (T) Anders
###########################################################################
###########################################################################
################## ARQUIVOS QUE NÃO PODEM MEXER ###########################
bash_profile_root_file="/root/.bash_profile"
wgetrc_config_file="/etc/wgetrc"
yum_config_file="/etc/yum.conf"
up2date_file="/etc/sysconfig/rhn/up2date"
bashrc_profile_root_file="/root/.bashrc"
git_root_config_file="/root/.gitconfig"
################## FIM ARQUIVOS QUE PODEM SER PERSONALIZADOS ##################
###########################################################################
################## ARQUIVOS QUE NÃO PODEM MEXER ###########################
# ou assim caso nao esteja com o root logado
# retorna a versao do Oracle Linux
ver_so=`cat /etc/oracle-release`
### cores ###
c_red_b_white="\033[01;47;31m"
c_red_white="\033[00;47;31m"
c_amarelo="\033[01;33m"
c_azul="\033[00;36m"
c_fechamento="\033[00m"
###########################################################################
###########################################################################
# Rotina principal do script e chamada na ordem abaixo do arquivo
main() {
echo -e "${c_red_white}----- Servidor: ${ver_so} ----- ${c_fechamento}"
menu
echo -e "${c_red_white}----- Provisionamento Concluído ----- ${c_fechamento}"
}
menu(){
echo -e "${c_azul}------------------------------------------${c_fechamento}"
echo -e "${c_azul} Configurar Proxy no Sistema ${c_fechamento}"
echo -e "${c_azul}------------------------------------------${c_fechamento}"
echo
echo -e "${c_amarelo} [ 1 ] Adicionar Proxy root ${c_fechamento}"
echo -e "${c_amarelo} [ 2 ] Deletar Proxy root ${c_fechamento}"
echo -e "${c_amarelo} [ 3 ] Adicionar Proxy usuário logado ${c_fechamento}"
echo -e "${c_amarelo} [ 4 ] Deletar Proxy usuário logado ${c_fechamento}"
echo -e "${c_amarelo} [ 5 ] Sair ${c_fechamento}"
echo
echo -n "Qual a Opção desejada ? "
read opcao
case $opcao in
1) vrf_proxy_root_go ;;
2) deleta_proxy_root_go ;;
3) vrf_proxy_user_go ;;
4) deleta_proxy_user_go ;;
5) exit ;;
*) "Opção desconhecida." ; echo ; Principal ;;
esac
}
#sub-rotina que verifica se existe proxy no sistema
#se sim chama as outras sub-rotinas, evitando duplicidade de proxy no sistema
vrf_proxy_root_go() {
echo -e "${c_amarelo}>>>>>>>> Verficando o proxy no Servidor <<<<<<<<${c_fechamento}"
if ! grep -in "proxy" ${bash_profile_root_file}; then
echo -e "${c_azul}O proxy não está presente! ${c_fechamento}"
insere_root_proxy_go
else
echo -e "${c_azul}O proxy está presente! ${c_fechamento}"
deleta_proxy_root_go
insere_root_proxy_go
fi
echo -e "${c_azul}Verificações de Proxy Concluídas ${c_fechamento}"
}
vrf_proxy_user_go() {
echo -e "${c_amarelo}>>>>>>>> Verficando o proxy no Servidor <<<<<<<<${c_fechamento}"
read -p "Digite o usuário do Linux que deseja add o proxy: " user_logado
bash_profile_file="/home/${user_logado}/.bash_profile"
bashrc_profile_file="/home/${user_logado}/.bashrc"
git_profile_file_user="/home/${user_logado}/.gitconfig"
if ! grep -in "proxy" ${bash_profile_file}; then
echo -e "${c_azul}O proxy não está presente! ${c_fechamento}"
insere_proxy_user_go
else
echo -e "${c_azul}O proxy está presente! ${c_fechamento}"
deleta_proxy_user_go
insere_proxy_user_go
fi
echo -e "${c_azul}Verificações de Proxy Concluídas ${c_fechamento}"
}
#sub-rotina chamada quando existe proxy no sistema
deleta_proxy_user_go() {
echo -e "${c_amarelo}>>>>>>>> Deletando o proxy no Servidor <<<<<<<<${c_fechamento}"
read -p "Digite o usuário do Linux que deseja deletar o proxy: " user_logado
bash_profile_file="/home/${user_logado}/.bash_profile"
bashrc_profile_file="/home/${user_logado}/.bashrc"
git_profile_file_user="/home/${user_logado}/.gitconfig"
[ "$user_logado" ] || { echo "ERRO: Usuário inválido";exit; }
if [ -n $user_logado ]
then
# revomendo do usuario logado
sudo sed -i '/proxy/d' ${bash_profile_file}
sudo sed -i '/proxy-user/d' ${bashrc_profile_file}
sudo sed -i '/umask 022/d' ${bashrc_profile_file}
# removendo do git
# remove proxy
sudo sed -i '/proxy/d' ${git_profile_file_user}
sudo sed -i '/http/d' ${git_profile_file_user}
sudo sed -i '/sslverify/d' ${git_profile_file_user}
fi
#deleta proxy sistema
deleta_proxy_sistema_go
echo -e "${c_azul}----- Concluído ----- ${c_fechamento}"
}
#sub-rotina chamada quando existe proxy no sistema
deleta_proxy_root_go() {
echo -e "${c_amarelo}>>>>>>>> Deletando o proxy do root <<<<<<<<${c_fechamento}"
#removendo do usuario root
# remove umask 022
sudo sed -i '/proxy/d' ${bash_profile_root_file}
sudo sed -i '/proxy-user/d' ${bashrc_profile_root_file}
sudo sed -i '/umask 022/d' ${bashrc_profile_root_file}
sudo sed -i '/proxy/d' ${git_root_config_file}
sudo sed -i '/sslverify/d' ${git_root_config_file}
sudo sed -i '/http/d' ${git_root_config_file}
#deleta proxy sistema
deleta_proxy_sistema_go
echo -e "${c_azul} ----- Concluído ----- ${c_fechamento}"
}
#sub-rotina chamada quando existe proxy no sistema
deleta_proxy_sistema_go() {
echo -e "${c_amarelo}>>>>>>>> Deletando o proxy do SO <<<<<<<<${c_fechamento}"
#apaga ocorrencias de proxy nos arquivos de sistema
sudo sed -i '/proxy/d' ${wgetrc_config_file}
sudo sed -i '/proxy/d' ${yum_config_file}
#Disable /etc/sysconfig/rhn/up2date
sudo sed -i "s/enableProxy=1/enableProxy=0/g" ${up2date_file}
sudo sed -i "s/proxyPassword=/proxyPassword= /g" ${up2date_file}
sudo sed -i "s/proxyUser= /proxyUser= /g" ${up2date_file}
sudo sed -i "s/httpProxy= /httpProxy= /g" ${up2date_file}
sudo sed -i "s/enableProxyAuth=/enableProxyAuth= /g" ${up2date_file}
echo -e "${c_azul} ----- Concluído ----- ${c_fechamento}"
}
#sud-rotina chamada para inserir proxy no sistema
insere_root_proxy_go(){
echo -e "${c_amarelo}>>>>>>>> Inserindo o proxy no root <<<<<<<<${c_fechamento}"
read -p "Digite o usuário do Proxy: " user_proxy
read -p "Digite a senha do usuário do Proxy: " user_passwd
read -p "Digite a URL do Proxy: " url_proxy
read -p "Digite a Porta do Proxy: " port_proxy
[ "$user_proxy" ] || { echo "ERRO: Usuário inválido";exit; }
[ "$user_passwd" ] || { echo "ERRO: Uenha inválida";exit; }
[ "$url_proxy" ] || { echo "ERRO: URL inválida";exit; }
[ "$port_proxy" ] || { echo "ERRO: Porta inválida";exit; }
# configurando o sistema
insere_proxy_sistema
#Habilita .bash_profile do root/vagrant
cat << EOF >> ${bash_profile_root_file}
export http_proxy="http://${user_proxy}:${user_passwd}@${url_proxy}:${port_proxy}"
export ftp_proxy="ftp://${user_proxy}:${user_passwd}@${url_proxy}:${port_proxy}"
export https_proxy="http://${user_proxy}:${user_passwd}@${url_proxy}:${port_proxy}"
export socks_proxy="socks://${user_proxy}:${user_passwd}@${url_proxy}:${port_proxy}"
EOF
#Habilita bashrc_profile_root_file
cat << EOF >> ${bashrc_profile_root_file}
alias curl="curl --proxy-user ${user_proxy}:${user_passwd}"
umask 022
EOF
# vrf se existe o arquivo
if [ -f "${git_root_config_file}" ]; then
#Habilita proxy no .gitconfig do git no usuário root
if ! grep -in "proxy" ${git_root_config_file}; then
cat << EOF >> ${git_root_config_file}
[http]
sslverify = false
proxy = http://${user_proxy}:${user_passwd}@${url_proxy}:${port_proxy}
[https]
proxy = http://${user_proxy}:${user_passwd}@${url_proxy}:${port_proxy}
EOF
fi
# se nao existir o arquivo entao cria e add
else
cat << EOF >> ${git_root_config_file}
[http]
sslverify = false
proxy = http://${user_proxy}:${user_passwd}@${url_proxy}:${port_proxy}
[https]
proxy = http://${user_proxy}:${user_passwd}@${url_proxy}:${port_proxy}
EOF
fi
echo -e "${c_azul}----- Concluído ----- ${c_fechamento}"
}
#sud-rotina chamada para inserir proxy no sistema
insere_proxy_user_go(){
echo -e "${c_amarelo}>>>>>>>> Inserindo o proxy no Servidor <<<<<<<<${c_fechamento}"
read -p "Digite o usuário do Proxy: " user_proxy
read -p "Digite a senha do usuário do Proxy: " user_passwd
read -p "Digite a URL do Proxy: " url_proxy
read -p "Digite a Porta do Proxy: " port_proxy
[ "$user_proxy" ] || { echo "ERRO: Usuário inválido";exit; }
[ "$user_passwd" ] || { echo "ERRO: Uenha inválida";exit; }
[ "$url_proxy" ] || { echo "ERRO: URL inválida";exit; }
[ "$port_proxy" ] || { echo "ERRO: Porta inválida";exit; }
[ "$user_logado" ] || { echo "ERRO: Usuário inválido";exit; }
# configurando o sistema
insere_proxy_sistema
cat << EOF >> ${bash_profile_file}
export http_proxy="http://${user_proxy}:${user_passwd}@${url_proxy}:${port_proxy}"
export ftp_proxy="ftp://${user_proxy}:${user_passwd}@${url_proxy}:${port_proxy}"
export https_proxy="http://${user_proxy}:${user_passwd}@${url_proxy}:${port_proxy}"
export socks_proxy="socks://${user_proxy}:${user_passwd}@${url_proxy}:${port_proxy}"
EOF
#Habilita bashrc_profile_file
cat << EOF >> ${bashrc_profile_file}
alias curl="curl --proxy-user ${user_proxy}:${user_passwd}"
umask 022
EOF
# vrf se existe o arquivo
if [ -f "${git_profile_file_user}" ]; then
#se nao existir o proxy no arquivo entao adiciona ao final
if ! grep -in "proxy" ${git_profile_file_user}; then
cat << EOF >> ${git_profile_file_user}
[http]
sslverify = false
proxy = http://${user_proxy}:${user_passwd}@${url_proxy}:${port_proxy}
[https]
proxy = http://${user_proxy}:${user_passwd}@${url_proxy}:${port_proxy}
EOF
fi
# se nao existir o arquivo entao cria e add
else
cat << EOF >> ${git_profile_file_user}
[http]
sslverify = false
proxy = http://${user_proxy}:${user_passwd}@${url_proxy}:${port_proxy}
[https]
proxy = http://${user_proxy}:${user_passwd}@${url_proxy}:${port_proxy}
EOF
fi
echo -e "${c_azul}----- Concluído ----- ${c_fechamento}"
}
insere_proxy_sistema(){
echo -e "${c_amarelo}>>>>>>>> Inserindo o proxy no SO <<<<<<<<${c_fechamento}"
#Habilita wgetrc
sudo cat << EOF >> ${wgetrc_config_file}
https_proxy = http://${user_proxy}:${user_passwd}@${url_proxy}:${port_proxy}/
http_proxy = http://${user_proxy}:${user_passwd}@${url_proxy}:${port_proxy}/
ftp_proxy = http://${user_proxy}:${user_passwd}@${url_proxy}:${port_proxy}/
use_proxy = on
EOF
#Habilita yum.conf
sudo echo "proxy = http://${user_proxy}:${user_passwd}@${url_proxy}:${port_proxy}" >> ${yum_config_file}
#Habilita /etc/sysconfig/rhn/up2date
sudo sed -i "s/enableProxy=0/enableProxy=1/g" ${up2date_file}
sudo sed -i "s/proxyPassword=/proxyPassword=${user_passwd}/g" ${up2date_file}
sudo sed -i "s/proxyUser= /proxyUser=${user_proxy}/g" ${up2date_file}
sudo sed -i "s/httpProxy= /httpProxy=${url_proxy}/g" ${up2date_file}
sudo sed -i "s/enableProxyAuth=/enableProxyAuth=1/g" ${up2date_file}
echo -e "${c_azul}----- Concluído ----- ${c_fechamento}"
}
main
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment