forked from SimplesIP/install_pabx
bruno
10 months ago
1 changed files with 371 additions and 0 deletions
@ -0,0 +1,371 @@
|
||||
#!/bin/bash |
||||
trap "" 2 20 |
||||
|
||||
|
||||
function access_sgdb(){ |
||||
|
||||
for encode_db in $(sudo -u postgres psql -l | grep postgres | awk -F \| '{print $3}') |
||||
do |
||||
echo $encode |
||||
[ "LATIN1" == $encode ] || sair_instalacao 16 |
||||
done |
||||
|
||||
for locate_db in $(sudo -u postgres psql -l | grep postgres | awk -F \| '{print $4}') |
||||
do |
||||
echo $locate_db |
||||
[ "en_US.iso-8859-1" == $locate_db ] || sair_instalacao 16 |
||||
done |
||||
|
||||
} |
||||
|
||||
|
||||
function parar_servicos_antes_instalacao(){ |
||||
|
||||
/usr/bin/systemctl kill cron |
||||
/usr/bin/systemctl kill supervisor |
||||
/usr/bin/systemctl kill apache2 |
||||
/usr/bin/systemctl kill postgresql.service |
||||
|
||||
} |
||||
|
||||
|
||||
function start_postgresql(){ |
||||
|
||||
[ ! -f /usr/lib/systemd/system/postgresql@.service ] && sair_instalacao 15 |
||||
|
||||
if [ $(systemctl status postgresql@13-main.service|awk -F\( 'NR==3{print $2}'|cut -d\) -f 1) == 'running' ] |
||||
then |
||||
systemctl restart postgresql@13-main.service |
||||
[ $? -ne 0 ] && sair_instalacao 15 |
||||
else |
||||
systemctl start postgresql@13-main.service |
||||
[ $? -ne 0 ] && sair_instalacao 15 |
||||
fi |
||||
|
||||
sleep 10 |
||||
|
||||
} |
||||
|
||||
|
||||
function sair_instalacao(){ |
||||
|
||||
/bin/rm -rf /tmp/sip_install.pid |
||||
exit $1 |
||||
} |
||||
|
||||
|
||||
|
||||
function mudar_password(){ |
||||
|
||||
/usr/sbin/usermod --password $2 $1 2> /dev/null |
||||
/usr/bin/passwd --status $1 2> /dev/null |
||||
|
||||
} |
||||
|
||||
function delete_usuario(){ |
||||
|
||||
/usr/sbin/userdel -fr $1 2> /dev/null |
||||
[ -n "$(cat /etc/group|grep -iE "^$1")" ] && /usr/sbin/groupdel $1 2> /dev/null |
||||
|
||||
} |
||||
|
||||
function criar_usuario_limitado(){ |
||||
|
||||
#excluí usuário |
||||
if [ -n "$(cat /etc/passwd | grep -i ^$1:)" ] ; then |
||||
delete_usuario $1 |
||||
fi |
||||
|
||||
/usr/sbin/groupadd $1 &> /dev/null |
||||
/usr/sbin/useradd -s /usr/bin/rbash -m $1 -g $1 &> /dev/null |
||||
/usr/bin/mkdir /home/$1/bin |
||||
|
||||
## Restringir permissões do usuário manutenção |
||||
echo "readonly PATH=/home/$1/bin |
||||
export PATH" >> /home/$1/.bashrc |
||||
|
||||
ln -s /sbin/reboot /home/$1/bin/reiniciar |
||||
ln -s /sbin/halt /home/$1/bin/desligar |
||||
|
||||
[ $1 == "manutencao" ] && echo "if [[ -f /home/$1/manutencao.sh ]];then /home/manutencao/manutencao.sh; else echo \"Sem script de manutencao.\";fi" >> /home/$1/.bashrc |
||||
[ $1 == "manutencao" ] && echo "exit" >> /home/$1/.bashrc |
||||
|
||||
mudar_password $1 $2 |
||||
|
||||
} |
||||
|
||||
function criar_usuario(){ |
||||
|
||||
#excluí usuário |
||||
if [ -n "$(cat /etc/passwd | grep -i ^$1:)" ] ; then |
||||
delete_usuario $1 |
||||
fi |
||||
|
||||
/usr/sbin/groupadd $1 2> /dev/null |
||||
/usr/sbin/useradd -s /usr/bin/bash "$([ -z "$3" ] && echo "-d $3" || echo "-m" )" $1 -g $1 2> /dev/null |
||||
|
||||
mudar_password $1 $2 |
||||
} |
||||
|
||||
|
||||
function verificar_encode(){ |
||||
|
||||
# O SO será em UTF-8, porém o banco em ISO |
||||
if ! [ "$encode" = "lang=en_us.iso-8859-1" ] ; then |
||||
clear |
||||
echo -n "Encoding: $encode incorreto, deseja corrigir e reiniciar o servidor? (S/N):" |
||||
read -n 1 resposta |
||||
echo "" |
||||
if [[ $resposta != +(s|S|y|Y|sim|SIM) ]] ; then |
||||
/bin/rm -rf /tmp/sip_install.pid |
||||
exit |
||||
fi |
||||
|
||||
lines_locale=$(grep -E "^[^#]" /etc/locale.gen) |
||||
for line in $lines_locale; do echo $line; sed -i "s|^$line|# $line|g" /etc/locale.gen; done |
||||
echo "en_US ISO-8859-1" >> /etc/locale.gen |
||||
|
||||
export LANGUAGE="en_US ISO-8859-1" |
||||
export LANG="en_US ISO-8859-1" |
||||
export LC_ALL="en_US ISO-8859-1" |
||||
|
||||
/sbin/locale-gen |
||||
|
||||
/bin/localectl set-locale LANG="en_US.ISO-8859-1" |
||||
/bin/localectl set-locale LANGUAGE="en_US.ISO-8859-1" |
||||
|
||||
clear |
||||
echo "Reiniciando..." |
||||
for i in {5..1};do sleep 1 && echo -n "$i ";done |
||||
echo "" |
||||
echo "Recomece a atualizacao" |
||||
/bin/rm -rf /tmp/sip_install.pid |
||||
[ -e /sbin/reboot ] && /sbin/reboot |
||||
reboot |
||||
fi |
||||
|
||||
} |
||||
|
||||
|
||||
function ja_instalado(){ |
||||
if [ -d /var/www/html/aplicativo ] || [ -d /var/www/html/include ] || [ -d /var/www/html/agenda ] ; then |
||||
echo "" |
||||
echo "" |
||||
echo -n "Identifiquei que ja ocorreu uma instalacao neste servidor, o procedimento a seguir substituira todos os arquivos, deseja continuar? (S/N):" |
||||
read -n 1 resposta |
||||
echo "" |
||||
if [[ $resposta != +(s|S|y|Y|sim|SIM) ]] ; then |
||||
/bin/rm -rf /tmp/sip_install.pid |
||||
/bin/rm -rf $path_arquivo |
||||
/bin/rm -rf $path_arquivo*.tar.gz |
||||
echo "" |
||||
echo "Instalacao cancelada!" |
||||
echo "" |
||||
echo "" |
||||
exit |
||||
fi |
||||
|
||||
} |
||||
|
||||
|
||||
|
||||
function existe_outra_instalacao(){ |
||||
# Verifica se o script esta rodando |
||||
# |
||||
if [ -e /tmp/sip_install.pid ] ; then |
||||
echo "Script em Excecucao..." |
||||
exit |
||||
fi |
||||
} |
||||
|
||||
|
||||
|
||||
function definir_timezone(){ |
||||
|
||||
while true ; do |
||||
|
||||
DIALOGDATA="$(for i in $(/usr/bin/timedatectl list-timezones) ; do echo -n "$i '' off " | sed -e "s/America\/Cuiaba '' off/America\/Cuiaba '' on/g" ; done)" |
||||
TIMEZONE=$(dialog --stdout --default-item America/Cuiaba --radiolist " CONFIGURE O TIMEZONE " 0 0 0 $DIALOGDATA) |
||||
|
||||
# Apertou CANCELAR ou ESC, sair... |
||||
[ $? -ne 0 ] && /bin/rm -rf /tmp/sip_atualiza.pid && exit |
||||
OPCAO=$(echo $TIMEZONE | sed "s/,/\\n/g") |
||||
|
||||
if ! [ -z "$OPCAO" ] ; then |
||||
/usr/bin/timedatectl set-timezone $OPCAO |
||||
break |
||||
fi |
||||
|
||||
done |
||||
} |
||||
|
||||
|
||||
|
||||
function checar_dependencias(){ |
||||
|
||||
for program in $1 |
||||
do |
||||
[ ! -f /usr/bin/$program ] && echo "falta de pendencias. $program" && sair_instalacao 10 |
||||
done |
||||
|
||||
for program in $2 |
||||
do |
||||
[ ! -f /usr/sbin/$program ] && echo "falta dependencia $program" && sair_instalacao 10 |
||||
done |
||||
} |
||||
|
||||
|
||||
|
||||
function directory_hdaux(){ |
||||
! [ -d /hdaux/downloads ] && mkdir -p /hdaux/downloads |
||||
! [ -d /hdaux/atualizacao ] && mkdir -p /hdaux/atualizacao |
||||
! [ -d /hdaux/utilitarios/scripts ] && mkdir -p /hdaux/utilitarios/scripts |
||||
! [ -d /hdaux/utilitarios/ferramentas ] && mkdir -p /hdaux/utilitarios/ferramentas |
||||
! [ -d /hdaux/utilitarios/manuais ] && mkdir -p /hdaux/utilitarios/manuais |
||||
! [ -d /hdaux/backup ] && mkdir -p /hdaux/backup |
||||
! [ -d /hdaux/restore ] && mkdir -p /hdaux/restore |
||||
} |
||||
|
||||
|
||||
|
||||
# Mudar o |
||||
function config_postgresql(){ |
||||
|
||||
if [ ! -f /var/lib/postgresql/13/main/postgresql.conf ] |
||||
then |
||||
echo "Não foi encontrado arquivo /var/lib/postgresql/13/main/postgresql.conf"; sair_instalacao 15 |
||||
fi |
||||
|
||||
sed -i "s/^[# ]*listen_addresses *= *'.*'/listen_addresses = \'\*\'/g" /var/lib/postgresql/13/main/postgresql.conf |
||||
sed -i "s/^[# ]*shared_buffers *= *[0-9]* *\(MB\|kB\|GB\)/shared_buffers = 960MB/g" /var/lib/postgresql/13/main/postgresql.conf |
||||
sed -i "s/^[# ]*effective_cache_size *= *[0-9] *\(MB\|kB\|GB\)/effective_cache_size = 2816MB/g" /var/lib/postgresql/13/main/postgresql.conf |
||||
sed -i "s/^[# ]*log_destination *= *'.*'/log_destination = 'stderr' /g" /var/lib/postgresql/13/main/postgresql.conf |
||||
sed -i "s/^[# ]*logging_collector *= *\(on\|off\)/logging_collector = on/g" /var/lib/postgresql/13/main/postgresql.conf |
||||
sed -i "s/^[# ]*log_directory = '.*'/log_directory = 'log'/g" /var/lib/postgresql/13/main/postgresql.conf |
||||
sed -i "s/^[# ]*log_filename = '.*'/log_filename = 'postgresql-%a.log/g" /var/lib/postgresql/13/main/postgresql.conf |
||||
sed -i "s/^[# ]*log_rotation_age *= *[0-9]*[dw]/log_rotation_age = 1d/g" /var/lib/postgresql/13/main/postgresql.conf |
||||
sed -i "s/^[# ]*log_rotation_size *= *[0-9]* *\(MB\|kB\|GB\)/log_rotation_size = 0/g" /var/lib/postgresql/13/main/postgresql.conf |
||||
sed -i "s/^[# ]*log_line_prefix *= *'.*'/log_line_prefix = '%m PID[%p] USER(%u) aplication(%a) database(%d) command(%i) SQLSTATE(%e): '/g" /var/lib/postgresql/13/main/postgresql.conf |
||||
sed -i "s/^[# ]*autovacuum *= *\(on\|off\)/autovacuum = off/g" /var/lib/postgresql/13/main/postgresql.conf |
||||
} |
||||
|
||||
|
||||
|
||||
function inicia_initdb(){ |
||||
|
||||
rm -rf /var/lib/postgresql/13/main |
||||
sudo -u postgres /usr/lib/postgresql/13/bin/initdb -D /var/lib/postgresql/13/main -E LATIN1 --locale=en_US.ISO-8859-1 --auth-local md5 --auth-host md5 |
||||
|
||||
} |
||||
|
||||
|
||||
function alterar_password_user_postgresql(){ |
||||
|
||||
|
||||
sudo -u postgres psql -c "ALTER USER $1 WITH PASSWORD $2;" |
||||
|
||||
} |
||||
|
||||
|
||||
function criar_usuario_postgresql(){ |
||||
|
||||
sudo -u postgres psql -c "CREATE USER $1 WITH PASSWORD $2 ${@:3};" |
||||
|
||||
alterar_password_user_postgresql "$1" "$2" |
||||
|
||||
} |
||||
|
||||
|
||||
|
||||
function criar_banco_pbx(){ |
||||
|
||||
#Criando Banco de Dados |
||||
! [ -z "$(sudo -u postgres psql -l | grep pbx)" ] && su postgres -c "dropdb pbx" |
||||
sudo -u postgres createdb pbx |
||||
|
||||
[ $? == 0 ] && sair_instalacao 17 |
||||
|
||||
} |
||||
|
||||
|
||||
function rota_vpn(){ |
||||
|
||||
#VPN |
||||
echo '#!/bin/bash' > /etc/ppp/ip-up.local |
||||
echo "" >> /etc/ppp/ip-up.local |
||||
echo "case \"\$5\" in" >> /etc/ppp/ip-up.local |
||||
echo " 10.254.254.1)" >> /etc/ppp/ip-up.local |
||||
echo " /sbin/route add -net 10.252.252.0/24 gw 10.254.254.1" >> /etc/ppp/ip-up.local |
||||
echo " /sbin/route add -net 192.168.115.0/24 gw 10.254.254.1" >> /etc/ppp/ip-up.local |
||||
echo " ;;" >> /etc/ppp/ip-up.local |
||||
echo " *)" >> /etc/ppp/ip-up.local |
||||
echo "esac" >> /etc/ppp/ip-up.local |
||||
chmod 777 /etc/ppp/ip-up.local |
||||
|
||||
} |
||||
|
||||
|
||||
|
||||
COMPANY="SIMPLES IP" |
||||
|
||||
#Descobrindo o caminho do script |
||||
dir=$(dirname $0) |
||||
path_arquivo=$(cd $dir;pwd) |
||||
arquitetura=$(uname -m) |
||||
versao_linux=$(cat /etc/debian_version | sed 's/[a-zA-Z() ]//g' | cut -d "." -f 1) |
||||
encode=$(locale | tr [[:upper:]] [[:lower:]] | sed -e "s/\"//g" | grep "^lang=") |
||||
resposta=0 |
||||
tty_user=$(tty|awk -F/ '{print $3"/"$4}') |
||||
sosftware_depencencia="pg_ctlcluster sudo php crontab" |
||||
sosftware_depencencia_sbin="asterisk apache2 logrotate pptp" |
||||
|
||||
clear |
||||
echo ' ' |
||||
echo ' _____ _ __ _____ ________ ' |
||||
echo ' / ___/(_)___ ___ ____ / /__ / ___/ / _/ __ \' |
||||
echo ' \__ \/ / __ `__ \/ __ \/ / _ \\__ \ / // /_/ /' |
||||
echo ' ___/ / / / / / / / /_/ / / __/__/ / _/ // ____/ ' |
||||
echo '/____/_/_/ /_/ /_/ .___/_/\___/____/ /___/_/ ' |
||||
echo ' /_/ ' |
||||
echo ' ' |
||||
|
||||
|
||||
existe_outra_instalacao |
||||
|
||||
# |
||||
#PID do scritp |
||||
echo $$ > /tmp/sip_install.pid |
||||
|
||||
checar_dependencias "$sosftware_depencencia" "$sosftware_depencencia_sbin" |
||||
|
||||
ja_instalado |
||||
verificar_encode |
||||
definir_timezone |
||||
|
||||
|
||||
#deslogar todos os usuários |
||||
/bin/kill $(ps -ef | egrep '(tty|pts)'| grep -vE "$tty_user"|awk '{print $2}') |
||||
|
||||
[ ! -f /usr/bin/rbash ] && /usr/bin/cp /usr/bin/bash /usr/bin/rbash |
||||
|
||||
criar_usuario_limitado manutencao '$6$/LIKRy5a3gR4t0wI$yGF5UMjKhRfud29UUuZuR.vYL1gJMa722GKpjzcXxMssEhJuslwVATMWbdk7PvoL1GysRRSg.WUfAVJPz3UlM.' |
||||
criar_usuario aplicacao '$6$/LIKRy5a3gR4t0wI$yGF5UMjKhRfud29UUuZuR.vYL1gJMa722GKpjzcXxMssEhJuslwVATMWbdk7PvoL1GysRRSg.WUfAVJPz3UlM.' /tmp |
||||
criar_usuario pbx '$6$/LIKRy5a3gR4t0wI$yGF5UMjKhRfud29UUuZuR.vYL1gJMa722GKpjzcXxMssEhJuslwVATMWbdk7PvoL1GysRRSg.WUfAVJPz3UlM.' /var/lib/asterisk |
||||
criar_usuario simples '$6$/LIKRy5a3gR4t0wI$yGF5UMjKhRfud29UUuZuR.vYL1gJMa722GKpjzcXxMssEhJuslwVATMWbdk7PvoL1GysRRSg.WUfAVJPz3UlM.' |
||||
criar_usuario sipadmin '$6$/LIKRy5a3gR4t0wI$yGF5UMjKhRfud29UUuZuR.vYL1gJMa722GKpjzcXxMssEhJuslwVATMWbdk7PvoL1GysRRSg.WUfAVJPz3UlM.' |
||||
mudar_password root '$6$/LIKRy5a3gR4t0wI$yGF5UMjKhRfud29UUuZuR.vYL1gJMa722GKpjzcXxMssEhJuslwVATMWbdk7PvoL1GysRRSg.WUfAVJPz3UlM.' |
||||
|
||||
parar_servicos_antes_instalacao |
||||
|
||||
inicia_initdb |
||||
config_postgresql |
||||
start_postgresql |
||||
access_sgdb |
||||
criar_usuario_postgresql contacte 'ctepgSQL' SUPERUSER CREATEDB CREATEROLE |
||||
criar_usuario_postgresql root WITH '$imple$ip' SUPERUSER CREATEDB CREATEROLE |
||||
criar_usuario_postgresql simplesip 'smplsIP' SUPERUSER CREATEDB CREATEROLE |
||||
alterar_password_user_postgresql postgres 'SIP$$' |
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in new issue