Autenticar usuários squid+shellscript+mysql
Script para autenticar usuários cadastrados numa tabela mysql, no squid.
Leia a parte comentada no script para correta instalação e configuração.
O script pressupõe que já tenha instalado no computador mysql e squid. Espera também uma certa familiaridade com os dois.
Boa sorte!
Leia a parte comentada no script para correta instalação e configuração.
O script pressupõe que já tenha instalado no computador mysql e squid. Espera também uma certa familiaridade com os dois.
Boa sorte!
Descrição
Script para autenticar usuários cadastrados numa tabela mysql, no squid.
Leia a parte comentada no script para correta instalação e configuração.
O script pressupõe que já tenha instalado no computador mysql e squid. Espera também uma certa familiaridade com os dois.
Boa sorte!
Leia a parte comentada no script para correta instalação e configuração.
O script pressupõe que já tenha instalado no computador mysql e squid. Espera também uma certa familiaridade com os dois.
Boa sorte!
Versões atualizadas deste script
#!/bin/sh
#
#
# Daniel Roque - 2006roque@gmail.com
#
#
#
# 2008-11-23
#
#
# Copie o arquivo para /etc/squid/autenticador
#
# IMPORTANTE os dois comando abaixo.
# Nao importa onde o script estiver ele precisa se acessivel pelo usuario proxy, ou nao funcionara.
# chown proxy.proxy /etc/squid/autenticador
# chmod 771 /etc/squid/autenticador
#
# Adicione ao /etc/squid/squid.conf
# auth_param basic program "/etc/squid/autenticador"
# auth_param basic realm "Digite usuario e senha"
# acl geral proxy_auth REQUIRED
#
# ATENCAO EXECUTE OS COMANDOS DENTRO DO mysql
#
# GRANT ALL PRIVILEGES ON *.* TO adm@localhost IDENTIFIED BY 'minhasenha' WITH GRANT OPTION;
# GRANT ALL PRIVILEGES ON *.* TO adm@'%' IDENTIFIED BY 'minhasenha' WITH GRANT OPTION;
# GRANT RELOAD,PROCESS ON *.* TO adm@localhost;
# GRANT USAGE ON *.* TO adm@localhost;
#
# CREATE DATABASE IF NOT EXISTS dbsquid;
# USE dbsquid;
# CREATE TABLE IF NOT EXISTS usuarios(
# codigo int(6) primary key NOT NULL AUTO_INCREMENT,
# login varchar(40) unique NOT NULL,
# senha varchar(255) NOT NULL,
# status int(11) NOT NULL default 1,
# mudarsenha varchar(1),
# nivel int(1),
# visivel varchar(1),
# cadastro date
# )ENGINE=INNODB;
#
# PARA ADICIONAR USUARIOS, basta trocar daniel e senha por outro usuario outra senha
# insert into usuarios (login,senha,status,visivel,cadastro) values ('daniel','senha',1,'s',now());
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin/"
log='/tmp/auth-squid.log'
data=`date -d now`
db='dbsquid'
tabela='usuarios'
usql='adm'
psql='minhasenha'
valor=''
while read valor;
do
data=`date -d now`
if [ "$valor" != '' ];then
login=`echo $valor|sed 's/\(.*\)\( .*\)/\1/g'`
senha=`echo $valor|sed 's/\(.* \)\(.*\)/\2/g'`
if [ "$login" == '' ];then
echo "$data usario vazio" >>$log
echo ERR
exit 0
fi
echo "$data tentando autenticar '$login'" >>$log
sql="SELECT login FROM usuarios WHERE login='$login' AND senha='$senha' AND status='1';"
rslt=`mysql -u$usql -p$psql -t --database "$db" -e "$sql"|sed -n 's/|//g;s/ //g;4p'`
if [ "$login" == "$rslt" ];
then
echo "$data resposta OK para $login" >>$log
echo OK
else
echo "$data resposta ERR para $login" >>$log
echo ERR
fi
echo >>$log
else
echo "$data resposta ERR para $login" >>$log
echo ERR
fi
done
exit 0
[: 95: ==: unexpected operator
Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file]...
-n, --quiet, --silent
suppress automatic printing of pattern space
-e script, --expression=script
add the script to the commands to be executed
-f script-file, --file=script-file
add the contents of script-file to the commands to be executed
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if extension supplied)
-l N, --line-length=N
specify the desired line-wrap length for the `l' command
--posix
disable all GNU extensions.
-r, --regexp-extended
use extended regular expressions in the script.
-s, --separate
consider files as separate rather than as a single continuous
long stream.
-u, --unbuffered
load minimal amounts of data from the input files and flush
the output buffers more often
--help display this help and exit
--version output version information and exit
Problemas no comadno SED, mas não o conheço.