jah consegui resolver este problema.....
nao vou usar contrab pois o funcionamento sairia da logica que eu quero que é a de o usuário quando for usar o sistema apenas digite
/pasta/dosistema/script start
e ele jah faz tudo, não sendo nescessária nem mesmo a configuração ou entradas de codigo no contrab.
pois o mesmo eu fiz com o mrtg, o usuário nao precisa colocar ele no contrab....
segue o codigo
script start | status | stop | restart
Código :
#!/bin/bash
NAME="script_desloga"
DESC="Verificação de usuários"
EXEC_FILE="/softov/scripts/${NAME}"
PID_FILE="/softov/scripts/pids/${NAME}.pid"
RM="/bin/rm"
start() {
echo -n "Iniciando $DESC: "
start-stop-daemon --start --quiet --background \
--name ${NAME} --make-pidfile \
--pidfile ${PID_FILE} --startas ${EXEC_FILE}
echo "pronto."
}
stop() {
echo -n "Parando $DESC: "
start-stop-daemon --stop --quiet --name ${NAME} --pidfile ${PID_FILE}
${RM} -f ${PID_FILE}
echo "pronto."
}
status(){
echo -n "Status de $DESC: "
if [ ! -r "$PID_FILE" ]; then
echo "$NAME nao esta rodando."
exit 3
fi
if read pid < "$PID_FILE" && ps -p "$pid" > /dev/null 2>&1; then
echo "$NAME esta rodando."
exit 0
else
echo "$NAME nao esta rodando mas $PID_FILE existe."
exit 1
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
restart)
stop
start
;;
*)
echo "Usage: $0 {start|stop|restart}"
;;
esac
exit 0
script_desloga
Código :
#!/bin/bash
while true
do
/usr/bin/php -q << PHP
<? include("/softov/scripts/desloga.php"); ?>
PHP
sleep 600
done
exit 0
uso o php para o caso de conexão com o banco de dados para verificar quais users estão com status 1
e se ainda estão logados usando arping
o php para entendimento e se alguem quiser usar
Código PHP:
<?
include("/softov/public_html/conexao.php");
include("/softov/public_html/funcoes.php");
$sql = mysql_query("select * from usuarios where status='1'");
while($row = mysql_fetch_array($sql)){
$ip2 = $row['ip'];
if(!status($ip2)){ // se esta logado
userlogout($iptable, $ip2, $row['mac'], $log_saiu, $servidor);
}
}
?>
no funcoes.php
tenho a função status usada na linha 7 do código acima
Código PHP:
function status($ipp){
$mac = shell_exec("/usr/bin/sudo /sbin/arping -c1 -I eth1 $ipp | fgrep [ | cut -f2 -d[ | cut -f1 -d]");
if(!ereg(":",$mac)){
return false;
}else{
return true;
}
}
uso php pois as mesmas funções são usadas em um painel adm web