Код: Выделить всё
for each in `ls -R |grep -v .mp3`;do rm -f $each;done;
Код: Выделить всё
for each in `ls -R |grep -v .mp3`;do rm -f $each;done;
Код: Выделить всё
#! /bin/sh
route="/sbin/route"
ping="/sbin/ping"
natd="/sbin/natd"
sleep="/bin/sleep"
killall="/usr/bin/killall"
touch="/usr/bin/touch"
# внешние сетевые карты
lan_isp1="rl0"
lan_isp2="rl1"
GW1=194.242.118.61
GW2=83.218.237.45
$ping -q -c 2 $GW1 > /dev/null 2>&1
# Если код завершения пинга 1 = error
if [ $? !=0 ]; then
# пингуем второй канал
$ping -q -c 2 $GW2 > /dev/null 2>&1
# если код завершение true =0
if [ $? =0 ]; then
# Если файла gw2.changed нет, создаем его.
# Он определяет переход на основной канал,
# даже если есть и резервный
# GW2 будет маршрутом по умолчанию
if [ ! -f /tmp/gw2.changed ]; then
$route delete default
$killall natd
$route add default $GW2
$touch /tmp/gw2.changed
$sleep 15
$natd -n ${lan_isp2}
. /etc/fwrules2.sh
exit 0;
fi
else
echo "Оба канала не доступны";
exit 1;
fi
else
# Если пинганулся первый шлюз
# Если файл gw2.changed найден, удаляем его
# GW1 будет маршрутом по умолчанию
if [ -f /tmp/gw2.changed ]; then
$route delete default
$killall natd
$route add default $GW1
$rm /tmp/gw2.changed
$sleep 15
$natd -n ${lan_isp1}
. /etc/fwrules1.sh
exit 0;
fi
echo "Основной канал работает и установлен по умолчанию";
exit 0;
fi
Код: Выделить всё
. /etc/fwrules2.sh
Код: Выделить всё
. /etc/fwrules1.sh
Код: Выделить всё
lissyara$ more /root/pkg_check_content.sh
#!/bin/sh
# pkg
pkg_db="/var/db/pkg"
pkg_preffix="/usr/local"
cd ${pkg_db}
ls | grep -v pkgdb.db |
{
while read pkg_name
do
grep -v ^@ "${pkg_name}/+CONTENTS" |
{
while read file_name
do
# test - file exist?
if test -r ${pkg_preffix}/${file_name}
then
# exist
else
# not exist
echo "corrupt pkg ${pkg_name} (file=${pkg_preffix}/${file_name})"
fi
done
}
done
}
lissyara$
Код: Выделить всё
ifconfig="/sbin/ifconfig"
fwcmd="/sbin/ipfw"
# разделитель :
# масив устройств
device="`$ifconfig | grep "tun" | awk -F: '{print $1}'`"
# правила начиная со 100
n=100;
for i in $device
do
$fwcmd $n add allow ip from any to any via $i
n=`expr $n +1`;
done
Код: Выделить всё
#! /bin/sh
ping="/sbin/ping"
# часы
date_time="`date +%H:%M:%S`"
# дата
date="`date +%d-%m-%Y`"
# часы минуты
date_hour="`date +%H`"
date_minute="`date +%M`"
# Пингуемые хосты
ISP="xxx.xxx.xxx.xxx"
# Создание файлов если их нет
if [ ! -f hour.txt ]; then
echo "$date_hour" > hour.txt
echo "$date_minute" > minute.txt
echo "" > interval.txt
fi
# Пингуем провайдера
$ping -q -c 4 ${ISP} >/dev/null 2>&1
# если результат равен 0 (true)
if [ $? -eq 0 ]; then
echo "Провайдер Lecos - $ISP доступен."
exit 0;
else
echo "Ошибка связи. Провайдер Lecos - $ISP не доступен"2>/dev/null 1>&2
# Последнее время проверки
old_hour="`cat hour.txt`"
old_minute="`cat minute.txt`"
# Текущая разница времени
end_hour="`expr $date_hour - $old_hour`"
end_minute="`expr $date_minute - $old_minute`"
echo "-------------------------------
Дата: $date
Время: $date_time
Время отсутствия: ${old_hour}:${old_minute} - ${date_hour}:${date_minute}
Всего $end_hour часов $end_minute минут.
-------------------------------" >> interval.txt
# Интервалы отсутствия времени
interval="`cat interval.txt`"
echo "$date_hour" > hour.txt
echo "$date_minute" > minute.txt
echo
echo "Интервалы времени отсутствия Интернета: "
echo "$interval"
exit 1;
fi
Код: Выделить всё
#!/bin/bash
# (c) nomad.
# Last modifyed @ 2007-02-05 @ 22:17
#
# Purpose:
# script generates Cisco router commands.
# Creates DHCP pool with IP addresses from 192.168.x.0/24 - one pool per VLAN
# Excludes address 192.168.x.1 from DHCP assign
# Creates subinterface on dot1Q trunk interface f0/1 to match selected VLAN and
# assignes 192.168.x.1 address to this subinterface.
#
# Commands should be issued in configure terminal mode.
if [ $# -ne 2 ]
then
echo "Missing arguments"
echo "Usage: $0 startVlanID endVlanID"
exit
fi
dns1="193.232.88.17"
dns2="194.84.23.125"
st=$1
end=$2
cnt=$st
while [ 1 ]
do
echo "VLAN ID: $cnt"
echo -n "Enter group description: "
read desc
echo "================================"
# Subinterface creation code
echo "int f0/1.${cnt}"
echo "description ${desc}"
echo "encapsulation dot1Q ${cnt}"
echo "ip addr 192.168.${cnt}.1 255.255.255.0"
echo "no snmp trap link-status"
echo "no shut"
echo "exit"
echo ""
# DHCP pool creation code
echo "ip dhcp excluded-address 192.168.${cnt}.1"
echo "ip dhcp pool ${desc}"
echo "network 192.168.${cnt}.0 /24"
echo "domain ${desc}"
echo "dns ${dns1} ${dns2}"
echo "default-router 192.168.${cnt}.1"
echo "exit"
echo ""
# NAT pool creation - Inside Global Addresses Overloading
echo "int f0/1.${cnt}"
echo "ip nat inside"
echo "ip access-group 13 out"
echo "exit"
echo ""
echo "================================"
cnt=`expr $cnt + 1`
if [ $cnt -gt $end ]
then
break;
fi
done
Код: Выделить всё
#!/bin/bash
dir=`pwd`
doutput="$dir/output"
dsort="$dir/sort"
dsource="$dir/source"
echo "Step 01: Creating necessary folders."
mkdir "$doutput" "$dsort" "$dsource"
#echo "Root dir: \"$dir\""
#echo "Output dir: \"$doutput\""
#echo "Sort dir: \"$dsort\""
#echo "Source dir: \"$dsource\""
chapters=`ls even_*|wc -l`
################## creating subfolders structure #################
echo "Step 02: Creating subfolders structure."
y=0;
while [ $y -lt $chapters ]
do
y=`expr $y + 1`
dirname=`echo $y|sed 's/^[0-9]$/0\0/'`
mkdir "$dsort/$dirname" "$dsort/$dirname/even" "$dsort/$dirname/odd" "$dsort/$dirname/result"
done
################# moving even pages blocks #######################
y=0;
for i in `ls even_*`
do
y=`expr $y + 1`
dirname=`echo $y|sed 's/^[0-9]$/0\0/'`
cp "$i" "$dsort/$dirname/even/$i"
mv "$i" "$dsource/$i"
done
################# moving odd pages blocks ########################
y=0;
for i in `ls odd_*`
do
y=`expr $y + 1`
dirname=`echo $y|sed 's/^[0-9]$/0\0/'`
cp "$i" "$dsort/$dirname/odd/$i"
mv "$i" "$dsource/$i"
done
################# splitting even tiff files #####################
echo "Step 03: Splitting even tiff files."
even_pages=0;
cd "$dsort"
for i in *
do
cd "$i/even"
# Splitting block tiff to even pages (We should remember, that pages
# are goin' in straight order
for j in *.tif
do
target_name=`echo "$j"|sed 's/\.tif//'`
tiffsplit "$j" "${target_name}_"
echo -n "."
rm -f "$j"
done
# Renaming even pages to match block global numeration
cur=0;
for j in *.tif
do
cur=`expr $cur + 1`
name=`echo $cur|sed 's/^[0-9]$/00\0/'|sed 's/^[0-9][0-9]$/0\0/'`
mv "$j" "${i}_${name}_even.tif"
echo -n "."
done
even_pages=`expr $even_pages + $cur`
cd "$dsort"
done
################# splitting odd tiff files ######################
echo ""
echo "Step 04: Splitting and sorting odd tiff files."
odd_pages=0;
cd "$dsort"
for i in *
do
cd "$i/odd"
# Splitting block tiff to pages (We should remember, that pages
# are goin' in reverse order
cur=0;
for j in *.tif
do
target_name=`echo "$j"|sed 's/\.tif//'`
tiffsplit "$j" "${target_name}_"
rm -f "$j"
echo -n "."
done
cur=`ls *.tif|wc -l`
odd_pages=`expr $odd_pages + $cur`
# Reversing numeration of odd pages
for j in *.tif
do
name=`echo $cur|sed 's/^[0-9]$/00\0/'|sed 's/^[0-9][0-9]$/0\0/'`
mv "$j" "${i}_${name}_odd.tif"
cur=`expr $cur - 1`
echo -n "."
done
# From that point we should have odd pages with matching evens
# numeration.
cd "$dsort"
done
total_pages=`expr $even_pages + $odd_pages`
################# merging odd and even tiff files ###############
echo ""
echo "Step 05: Merging odd and even pages."
cd "$dsort"
for block_name in *
do
block_counter=0;
cd "$block_name"
even_pages=`ls even|wc -l`
odd_pages=`ls odd|wc -l`
if [ $even_pages -ne $odd_pages ]
then
echo "Block \"$block_name\": even_pages - odd_pages counters mismatch: $even_pages - $odd_pages.";
echo "Exiting..."
cd "$dsource"
mv *.tif ..
cd "$dir"
rm -fr "$dsort" "$dresult" "$dsource" "$doutput"
exit;
fi
mv even/* "$doutput"
mv odd/* "$doutput"
cd "$dsort"
done
################# Generating output tiff and pdf output #########
# From that point we should have all pages in right order in $output folder.
echo "Step 06: Generating tiff and pdf output."
cd "$doutput"
tiffcp *.tif "$dir/output.tif"
cd "$dir"
tiff2pdf -jbz output.tif -o output.pdf
################# Cleaning folders ##############################
echo "Step 07: Cleaning folders."
cd "$dsource"
mv *.tif ..
cd "$dir"
rm -fr "$dsort" "$dresult" "$dsource" "$doutput"
################# Cleaning folders ##############################
echo "Step 08: Sources."
echo
echo "Delete source files?"
echo
echo " [Y]es"
echo " [N]o (Default)"
echo
read answer
case "$answer" in
"Y" | "y" )
rm -f `ls|sed 's/output\.[a-z]*.//'`
;;
"N" | "n" | "" )
;;
esac
################# Outro #########################################
echo
echo
echo "#################################"
echo "# #"
echo "# Done!!! #"
echo "# #"
echo "#################################"
echo
echo
Код: Выделить всё
#!/bin/bash
for i in `ls | grep -e ".*\.JPG$"`
do
name=`echo "$i" | sed 's/JPG$/jpg/'`
mv "$i" "$name"
done
for i in `ls | grep -i -e ".*\.JPEG$"`
do
name=`echo "$i" | sed 's/JPEG$/jpg/'`
mv "$i" "$name"
done
for i in *.jpg
do
date=`exiv2 pr "$i" | grep "Image timestamp : " | sed 's/Image timestamp : //' | cut -d" " -f1 | sed 's/:/_/g'`
echo "\"$i\" :=> $date"
if [ -z "$date" ]
then
date=0000_00_00
fi
if [ ! -d "$date" ]
then
mkdir "$date"
fi
if [ -d $date ]
then
cp "$i" "$date"
fi
done
Код: Выделить всё
#!/bin/bash
for i in *
do
if [ -d "$i" ]
then
echo "Folder \"$i\""
echo -n "Year: "
read year
echo -n "Title: "
read album
mv "$i" "[$year] $album"
echo "\"$i\" => \"[$year] $album\""
fi
done
Код: Выделить всё
#!/bin/bash
artist=$1;
artist=`echo "$artist"|iconv -f koi8-r -t windows-1251`
for i in *;
do
if [ -d "$i" ]
then
year=`echo "$i"|sed 's/\[//'|sed 's/]//'|cut -d" " -f1`;
album=`echo "$i"|sed 's/\[//'|sed 's/\]//'|sed 's/[0-9]*.//'`;
album=`echo "$album"|iconv -f koi8-r -t windows-1251`
y=0;
cd "$i";
for j in *.mp3;
do
title=`echo "$j"|sed 's/[0-9][0-9] - //'|sed 's/\.mp3//'`;
title=`echo "$title"|iconv -f koi8-r -t windows-1251`
y=`expr $y + 1`;
pos=`echo $y|sed 's/^[0-9]$/0\0/'`;
pos=`echo $y|sed 's/^[0-9]$/0\0/'`;
id3tag --artist="$artist" --album="$album" --song="$title" --year="$year" --track="$pos" "$j";
done;
cd ..;
fi
done;
Код: Выделить всё
#!/bin/bash
y=0;
for i in *.mp3
do
y=`expr $y + 1`
num=`echo $y | sed 's/^[0-9]$/0\0/'`
echo "$i"
echo -n "Track title: "
read title
song=`echo "$title"|iconv -f koi8-r -t windows-1251`
mv "$i" "$num - $title.mp3"
echo "\"$i\" => \"$num - $title.mp3\""
echo ""
done
Код: Выделить всё
#!/bin/bash
y=0
for i in *.mp3
do
y=`expr $y + 1`
id3tag --track=$y "$i"
done
Код: Выделить всё
#!/bin/bash
for song in *.mp3
do
echo "\"$song\""
echo -n "Track number: "
read y
num=`echo "$y" | sed 's/^[0-9]$/0\0/'`
echo "\"$song\" => \"$num - $song\""
id3tag --track="$y" "$song"
mv "$song" "$num - $song"
echo ""
done
Код: Выделить всё
#!/bin/bash
for i in *.mp3
do
echo "$i"
echo -n "Track #: "
read num
echo -n "Track title: "
read title
song=`echo "$title"|iconv -f koi8-r -t windows-1251`
mv "$i" "$num - $title.mp3"
echo "\"$i\" => \"$num - $title.mp3\""
echo ""
done[
Код: Выделить всё
#!/bin/bash
ext="mp3"
path=`pwd`
for dir in *
do
if [ -d "$dir" ]
then
album="$dir"
cd "$dir"
for i in *.$ext
do
num=`id3info "$i"| grep "=== TRCK (Track number/Position in set):"|cut -d":" -f2|cut -d"/" -f1|sed 's/^\ //'|iconv -f windows-1251 -t koi8-r|sed 's/^[0-9]$/0\0/'`
title=`id3info "$i"|grep "=== TIT2 (Title/songname/content description):"|cut -d":" -f2|sed 's/^\ //'|iconv -f windows-1251 -t koi8-r`
album=`id3info "$i"|grep "=== TALB (Album/Movie/Show title):"|cut -d":" -f2|sed 's/^\ //'|iconv -f windows-1251 -t koi8-r`
year=`id3info "$i"|grep "=== TYER (Year):"|cut -d":" -f2|sed 's/^\ //'`
albumdir="$path/[$year] $album"
mkdir -p "$albumdir"
cp "$i" "$albumdir/$num - $title.$ext"
done
cd ..
fi
done
Код: Выделить всё
#!/bin/sh
# Год и месяц
year=`date '+%Y'`
month=`date '+%m'`
# Где логи сквида
squid_log="/var/old_log/${year}/${month}/squid.log"
#squid_log="squid.tmp.log"
# Временный файл
tmp_file="/tmp/squid.limits.$$.tmp"
# Файл исключений
exclude_file="/usr/local/etc/sarg/exclude.hosts"
# Файл с заоченными юзерами
lock_file="/usr/local/etc/squid/main_configs/overhead.users"
# Данные для mysql
mysql_preffix="/usr/local/bin/mysql --user=squid \
--password=squid --database=squid"
# Грохаем предыдущую таблицу с траффикм
${mysql_preffix} --execute="TRUNCATE \`user_traffic\`"
# Грохаем предыдущий список залоченных юзеров
echo "# Файл создан автоматически `date +%Y-%m-%d` в `date +%H:%M:%S`
" > ${lock_file}
# Достаём список пользователей
cat ${squid_log} | grep -v " d-zykov " | awk '{print $8}' | grep -v "^-" | sort \
| uniq -c | sort | awk '{print $2}' |
{
while read user_name
do
# ПРоверяем, что пользователь не пустой
if [ `echo "${user_name}" | wc -c` -ge 2 ]
then
# Выгребаем логи по этому пользователю, и считаем траффик
cat ${squid_log} | grep -v " d-zykov " | grep " ${user_name} " |\
grep --fixed-strings --invert-match --file=${exclude_file} \
| awk '
BEGIN { d=0 }
{
# Суммируем 5-й столбец на вводе - траффик
d=$5+d
}
END {
printf " %s \n",d
} ' > ${tmp_file}
read user_bytes < ${tmp_file}
rm -f ${tmp_file}
# echo "USER = ${user_name}; traffic = ${user_bytes}"
# Загоняем имя пользователя в БД - дефолтовый лимит 314572800 = 300 мег
${mysql_preffix} --execute="INSERT INTO \`user_limits\` VALUES \
('','${user_name}','314572800')" > /dev/null 2>&1
# Загоняем данные о траффике в БД
${mysql_preffix} --execute="INSERT INTO \`user_traffic\` VALUES \
('','${user_name}','${user_bytes}')"
# Достаём лимит этого пользователя
user_limit=`${mysql_preffix} --skip-column-names --execute="SELECT \
user_limit FROM user_limits WHERE user_name='${user_name}'"`
# echo "Пользователь = ${user_name}; Траффик = ${user_bytes}; Лимит = ${user_limit}"
# Сравниваем лимит с текущим траффиком
if [ ${user_bytes} -gt ${user_limit} ]
then
# Добавляем юзера в списки залоченных
echo "Ограничен пользователь ${user_name}, траффик = ${user_bytes}, лимит = ${user_limit}"
echo ${user_name} >> ${lock_file}
fi
fi
done
}
/usr/local/sbin/squid -k reconfigure
Код: Выделить всё
--
-- База данных: `squid`
--
-- --------------------------------------------------------
--
-- Структура таблицы `user_limits`
--
CREATE TABLE `user_limits` (
`id` int(5) NOT NULL auto_increment,
`user_name` varchar(64) collate cp1251_bin NOT NULL,
`user_limit` varchar(127) collate cp1251_bin NOT NULL default '0',
PRIMARY KEY (`id`),
UNIQUE KEY `user_name` (`user_name`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COLLATE=cp1251_bin COMMENT='Таблица ограничений пользователей' AUTO_INCREMENT=0 ;
-- --------------------------------------------------------
--
-- Структура таблицы `user_traffic`
--
CREATE TABLE `user_traffic` (
`id` int(5) NOT NULL auto_increment,
`user_name` varchar(64) collate cp1251_bin NOT NULL,
`user_traffic` bigint(128) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `user_name` (`user_name`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COLLATE=cp1251_bin COMMENT='Траффик пользователей' AUTO_INCREMENT=0 ;
Код: Выделить всё
<?php
//echo "clientaddr = " . $HTTP_GET_VARS['clientaddr'] . "<br>";
//echo "clientname = " . $HTTP_GET_VARS['clientname'] . "<br>";
//echo "clientident = " . $HTTP_GET_VARS['clientident'] . "<br>";
//echo "srcclass = " . $HTTP_GET_VARS['srcclass'] . "<br>";
//echo "targetclass = " . $HTTP_GET_VARS['targetclass'] . "<br>";
//echo "url = " . $HTTP_GET_VARS['url'] . "<br>";
// коннектимсчя к БД
//Пароли для подключения к MySQL
$db_host = "localhost";
$db_user = "squid";
$db_passwd = "squid";
$db_db = "squid";
//Пытаемся приконнектится к БД
if(!mysql_connect($db_host,$db_user,$db_passwd)){
echo "<br><br><BIG><CENTER>Не могу прислюнявиться к MySQL-серванту!</CENTER></BIG>";
exit;
}
//Выбираем базу данных
mysql_select_db($db_db);
// Смотрим, не постил ли. Если брякнул кнопуку - надо пихать в БД новые данные.
if(isset($HTTP_POST_VARS['Submit'])){ // брякнута кнопка
// перебираем массив по значениям?
foreach(array_keys($HTTP_POST_VARS) as $key){ // открытие перебора массива $HTTP_POST_VARS
//echo " ключ =" . $key . " значение = " . $HTTP_POST_VARS[$key] . "<br>\n";
// удаляем нах лишнюю хироманитию
$tmp_var_foreach = ereg_replace("[^a-zA-Z0-9_.-]", "", $key);
// достаём начало строки в $tmp_var_foreach и смотрим, совпадает ли оно с string_
// если да -> достаём строку, и её цвет, после чего пхаем в БД
//echo " Строка = " . $tmp_var_foreach . " Подстрока = " . substr("$tmp_var_foreach", 0, 8) . "<br>\n";
if(substr("$tmp_var_foreach", 0, 8) == 'traffic_'){ // толковый цикл - достаём значение
//echo "Толковый = " . $tmp_var_foreach . "<br>\n";
// достаём строку, что хранилась как кусок ключа
$string_signature = substr("$tmp_var_foreach", 8);
$color_key = "traffic_" . $string_signature;
//echo " стринг сигнатуре - " . $string_signature . " Значение = " . $HTTP_POST_VARS[$color_key] . "<br>\n";
//echo "Кверя = $sql <br>";
$sql = "UPDATE `user_limits` SET `user_limit`='" . ($HTTP_POST_VARS[$color_key]*1024*1024) . "' WHERE `user_name`='" . $string_signature . "'";
mysql_query($sql);
unset($string_signature);
} // закрытие -> толковый цикл
unset($tmp_var_foreach);
} // закрытие перебора массива $HTTP_POST_VARS
} // кнопка не брякнута
?>
<HTML>
<HEAD>
<TITLE>Управление траффиком пользователей</TITLE>
<META NAME="description" CONTENT="админка сайта www.lissyara.ru">
<META http-equiv="Content-Type" content="text/html;charset=koi8-r">
<!-- начало таблиц стилей для страницы -->
<STYLE type="text/css">
<!-- стиль для линков -->
A.text_link {COLOR: blue; TEXT-DECORATION: none}
A.text_link:link {COLOR: blue; TEXT-DECORATION: none}
A.text_link:visited {COLOR: blue; TEXT-DECORATION: none}
A.text_link:hover {COLOR: darkblue; TEXT-DECORATION: underline}
A.text_link:active {COLOR: darkblue; TEXT-DECORATION: none}
</STYLE>
</HEAD>
<BODY style="margin: 0 0 0 0; padding: 0 0 0 0; BACKGROUND-COLOR: #f1f1f1; BORDER-RIGHT: #999999 1px solid; MARGIN: 0px; BORDER-LEFT: #999999 1px solid; ">
<br><br><br>
<FORM ENCTYPE="multipart/form-data" method="POST">
<CENTER>
<TABLE width="600" border="0" cellpadding="0" cellspacing="0">
<TBODY>
<TR>
<TD width="100%" bgcolor="#707680">
<TABLE border="0" width="100%" cellspacing="1" cellpadding="2">
<TBODY>
<TR bgcolor="#B9CCDF">
<TD align="center" colspan="4">
<CODE><b>Редактирование ограничений пользователей.</b></CODE>
</TD>
</TR>
<TR bgcolor="#f1f1f1">
<TD align="center" colspan="4">
<CODE> </CODE>
</TD>
</TR>
<TR bgcolor="#DAE0E7">
<TD align="center">
<CODE>Имя пользователя</CODE>
</TD>
<TD align="center">
<CODE>Траффик (Мб)</CODE>
</TD>
<TD align="center">
<CODE>Лимит (Mб)</CODE>
</TD>
<TD align="center">
<CODE>Превышение (Мб)</CODE>
</TD>
</TR>
<?php
// достаём список пользователей
// вытаскиваем статистику по пользователям из БД
$sql = mysql_query("SELECT `user_limits`.`user_name` , `user_limits`.`user_limit` , `user_traffic`.`user_traffic`
FROM `user_limits` , `user_traffic`
WHERE `user_traffic`.`user_name` = `user_limits`.`user_name`
ORDER BY `user_name` ");
// перебираем юзеров, строим таблицу.
while ($d = mysql_fetch_assoc($sql)) { // открытие цикла по перебору юзеров
$bytes_in = $d['user_traffic'] /1048576;
$bytes_in = round($bytes_in, 2);
// цвет фона
$bg_color="#f1f1f1";
if($d['user_traffic'] > ($d['user_limit'] - 20971520)){$bg_color="#11AAFF";}
if($d['user_traffic'] > $d['user_limit']){$bg_color="#FFAAFF";}
// Если траффик меньше мега - не выводим
if($d['user_traffic'] > 1024*1024){ // траффик больше - выводим
// выводим чё настроили:
echo "\t\t\t\t<TR bgcolor=\"" . $bg_color . "\">
\t\t\t\t<TD align=\"center\">
\t\t\t\t\t<CODE>" . $d['user_name'] . "</CODE>
\t\t\t\t</TD>
\t\t\t\t<TD align=\"center\">
\t\t\t\t\t<CODE>" . $bytes_in . "</CODE>
\t\t\t\t</TD>
\t\t\t\t<TD align=\"center\">
\t\t\t\t\t<CODE><INPUT type=\"text\" name=\"traffic_" . $d['user_name'] . "\" style=\"width: 100%; border: 1px solid #707680; color: #000000;\" valu
e=\"" . round($d['user_limit']/(1024*1024)) . "\"></CODE>
\t\t\t\t</TD>
\t\t\t\t<TD align=\"center\">
\t\t\t\t\t<CODE>" . round(($d['user_traffic'] - $d['user_limit'])/(1024*1024)) . "</CODE>
\t\t\t\t</TD>
\t\t\t</TR>
";
} // зкрытие - трафик боольше мега
} // зкрытие цикла по перебору юзеров
?>
<TR bgcolor="white">
<TD align="center" colspan="4">
<CODE> </CODE>
</TD>
</TR>
<TR bgcolor="white">
<TD align="center" colspan="4">
<CODE><INPUT type="submit" value="Отправить" name="Submit" style="width: 445px; background-color:#DAE0E7; co
lor: #000000; font: 11px; font-size : 8pt; border: 1px solid #707680; cursor : hand;"></CODE>
</TD>
</TR>
</TBODY>
</TABLE>
</TD>
</TR>
</TBODY>
</TABLE>
</FORM>
<br><br>
</BODY>
</HTML>
<?php
?>
Код: Выделить всё
......... skipped .............
src overhead{
userlist /usr/local/etc/squid/main_configs/overhead.users
}
......... skipped .............
acl {
overhead {
pass local none
redirect http://192.168.0.253/squid_limit/index.php?clientaddr=%a&clientname=%n&clientident=%i&srcclass=%s&targetclass=%t&url=%u
}
......... skipped .............
Код: Выделить всё
<?php
/*
echo "clientaddr = " . $HTTP_GET_VARS['clientaddr'] . "<br>";
echo "clientname = " . $HTTP_GET_VARS['clientname'] . "<br>";
echo "clientident = " . $HTTP_GET_VARS['clientident'] . "<br>";
echo "srcclass = " . $HTTP_GET_VARS['srcclass'] . "<br>";
echo "targetclass = " . $HTTP_GET_VARS['targetclass'] . "<br>";
echo "url = " . $HTTP_GET_VARS['url'] . "<br>";
*/
// коннектимсчя к БД
//Пароли для подключения к MySQL
$db_host = "localhost";
$db_user = "squid";
$db_passwd = "squid";
$db_db = "squid";
//Пытаемся приконнектится к БД
if(!mysql_connect($db_host,$db_user,$db_passwd)){
echo "<br><br><BIG><CENTER>Не могу прислюнявиться к MySQL-серванту!</CENTER></BIG>";
exit;
}
//Выбираем базу данных
mysql_select_db($db_db);
?>
<HTML>
<HEAD>
<TITLE>Доступ запрещён</TITLE>
<META NAME="description" CONTENT="админка сайта www.lissyara.ru">
<META http-equiv="Content-Type" content="text/html;charset=koi8-r">
<!-- начало таблиц стилей для страницы -->
<STYLE type="text/css">
<!-- стиль для линков -->
A.text_link {COLOR: blue; TEXT-DECORATION: none}
A.text_link:link {COLOR: blue; TEXT-DECORATION: none}
A.text_link:visited {COLOR: blue; TEXT-DECORATION: none}
A.text_link:hover {COLOR: darkblue; TEXT-DECORATION: underline}
A.text_link:active {COLOR: darkblue; TEXT-DECORATION: none}
</STYLE>
</HEAD>
<BODY style="margin: 0 0 0 0; padding: 0 0 0 0; BACKGROUND-COLOR: #f1f1f1; BORDER-RIGHT: #999999 1px solid; MARGIN: 0px; BORDER-LEFT: #999999 1px solid; ">
<br><br><br>
<FORM ENCTYPE="multipart/form-data" method="POST">
<CENTER>
<TABLE width="700" border="0" cellpadding="0" cellspacing="0">
<TBODY>
<TR>
<TD width="100%" bgcolor="#707680">
<TABLE border="0" width="100%" cellspacing="1" cellpadding="2">
<TBODY>
<TR bgcolor="#B9CCDF">
<TD align="center" colspan="2">
<CODE><b>Доступ запрещён.</b></CODE>
</TD>
</TR>
<TR bgcolor="#f1f1f1">
<TD align="center" colspan="2">
<CODE> </CODE>
</TD>
</TR>
<TR bgcolor="#f1f1f1"">
<TD align="left" width="200">
<CODE>Имя пользователя</CODE>
</TD>
<TD align="left">
<CODE><?php echo $HTTP_GET_VARS['clientident']; ?></CODE>
</TD>
</TR>
<TR bgcolor="#f1f1f1"">
<TD align="left">
<CODE>IP-адрес</CODE>
</TD>
<TD align="left">
<CODE><?php echo $HTTP_GET_VARS['clientaddr']; ?></CODE>
</TD>
</TR>
<TR bgcolor="#f1f1f1"">
<TD align="left">
<CODE><NOBR>Класс пользователя</NOBR></CODE>
</TD>
<TD align="left">
<CODE><?php echo $HTTP_GET_VARS['srcclass']; ?></CODE>
</TD>
</TR>
<TR bgcolor="#f1f1f1"">
<TD align="left">
<CODE>Запрошенный URL</CODE>
</TD>
<TD align="left">
<CODE><?php echo substr($HTTP_GET_VARS['url'],0,60); ?></CODE>
</TD>
</TR>
<?php
?>
<TR bgcolor="white">
<TD align="center" colspan="2">
<CODE> </CODE>
</TD>
</TR>
<?php
// В зависимости от причины прихода - выводим разный низ таблицы.
if($HTTP_GET_VARS['srcclass'] == 'overhead'){ // причина: превышен лимит
// Запрашиваем текущее состояние траффика юзера и лимит.
// Обрабатываем переменную с именем пользователя
$user_name = ereg_replace("[^a-zA-Z0-9_.-]", "", $HTTP_GET_VARS['clientident']);
// Строим запрос к БД
$sql = "SELECT `user_limits`.*,`user_traffic`.`user_traffic`
FROM `user_limits`, `user_traffic`
WHERE `user_limits`.`user_name` = `user_traffic`.`user_name`
AND `user_limits`.`user_name` = '$user_name'";
// проводим кверю
$array_user_data = mysql_fetch_array(mysql_query("$sql"));
// Выводим низ таблицы про превышение лимита:
?>
<TR bgcolor="#f1f1f1"">
<TD align="center" colspan="2">
<CODE><H4>У вас превышен лимит траффика!</H4></CODE>
</TD>
</TR>
<TR bgcolor="#f1f1f1"">
<TD align="left">
<CODE>Лимит (Мб)</CODE>
</TD>
<TD align="left">
<CODE><?php echo round($array_user_data['user_limit']/(1024*1024)); ?></CODE>
</TD>
</TR>
<TR bgcolor="#f1f1f1"">
<TD align="left">
<CODE>Израсходовано (Мб)</CODE>
</TD>
<TD align="left">
<CODE><?php echo round($array_user_data['user_traffic']/(1024*1024)); ?></CODE>
</TD>
</TR>
<TR bgcolor="#f1f1f1"">
<TD align="left">
<CODE>Перерасход (Мб)</CODE>
</TD>
<TD align="left">
<CODE><?php echo round(($array_user_data['user_traffic'] - $array_user_data['user_limit'])/(1024*1024)); ?><
/CODE>
</TD>
</TR>
<TR bgcolor="white">
<TD align="center" colspan="2">
<CODE> </CODE>
</TD>
</TR>
<TR bgcolor="#f1f1f1"">
<TD align="left" colspan="2">
<CODE>Если у вас имеются какие-то вопросы, свяжитесь с вашим непосредственным начальством, или Натальей Коче
тковой, по внутренней аське, или телефону.</CODE>
</TD>
</TR>
<?php
}else{ // причина: превышен лимит --> иная причина
// выводим низ таблицы про запрет доступа
?>
<TR bgcolor="#f1f1f1"">
<TD align="center" colspan="2">
<CODE><H4>Доступ к этому сайту запрещён.</H4></CODE>
</TD>
</TR>
<TR bgcolor="#f1f1f1"">
<TD align="left">
<CODE>Причина запрета</CODE>
</TD>
<TD align="left">
<CODE><?php echo $HTTP_GET_VARS['targetclass']; ?></CODE>
</TD>
</TR>
<TR bgcolor="white">
<TD align="center" colspan="2">
<CODE> </CODE>
</TD>
</TR>
<TR bgcolor="#f1f1f1"">
<TD align="left" colspan="2">
<CODE>Если вам действительно нужен доступ к этому сайту, свяжитесь с вашим непосредственным начальством.</CO
DE>
</TD>
</TR>
<?php
} // причина: иная причина - закрытие.
?>
</TBODY>
</TABLE>
</TD>
</TR>
</TBODY>
</TABLE>
</FORM>
<br><br>
</BODY>
</HTML>
<?php
?>
Код: Выделить всё
man logger
LOGGER(1) FreeBSD General Commands Manual LOGGER(1)
NAME
logger -- make entries in the system log
SYNOPSIS
logger [-46Ais] [-f file] [-h host] [-P port] [-p pri] [-t tag]
[message ...]
DESCRIPTION
The logger utility provides a shell command interface to the syslog(3)
system log module.
The following options are available:
-4 Force logger to use IPv4 addresses only.
-6 Force logger to use IPv6 addresses only.
-A By default, logger tries to send the message to only one address,
even if the host has more than one A or AAAA record. If this
option is specified, logger tries to send the message to all
addresses.
-i Log the process id of the logger process with each line.
-s Log the message to standard error, as well as the system log.
-f file
Log the specified file.
-h host
Send the message to the remote system host instead of logging it
locally.
-P port
Send the message to the specified port number on a remote system,
which can be specified as a service name or as a decimal number.
The default is ``syslog''. If an unknown service name is used,
logger prints a warning and falls back to port 514.
-p pri Enter the message with the specified priority. The priority may
be specified numerically or as a ``facility.level'' pair. For
example, ``-p local3.info'' logs the message(s) as informational
level in the local3 facility. The default is ``user.notice.''
-t tag Mark every line in the log with the specified tag.
message
Write the message to log; if not specified, and the -f flag is
not provided, standard input is logged.
EXIT STATUS
The logger utility exits 0 on success, and >0 if an error occurs.
EXAMPLES
logger System rebooted
logger -p local0.notice -t HOSTIDM -f /dev/idmc
SEE ALSO
syslog(3), syslogd(8)
STANDARDS
The logger command is expected to be IEEE Std 1003.2 (``POSIX.2'') com-
patible.
FreeBSD 6.2 August 2, 2006 FreeBSD 6.2
Код: Выделить всё
#!/bin/sh
cd /tmp && rm -Rf * >/dev/null 2>&1
case $1 in
stop)
exit;
;;
*)
clear;
echo > /tmp/rc.conf.jail
/usr/sbin/ntpdate my-domain-name.local >/dev/null 2>&1 &
;;
esac
# rm tmp files
tmp_dir="/tmp/install"
/bin/rm -Rf ${tmp_dir}
/bin/mkdir -p ${tmp_dir}
# variables
root_size="256" # Mb 384
swap_size="128" # Mb 1024
usr_size="2048" # Mb 4096
var_size="1024" # Mb 4096
# distrib directory
dist_dir="/dist/dist"
# debug - on = 1; off = 2
debug="2"
# install new server
# prompt user - restore or not?
echo "
!!!!! Внимание !!!!!
Если вы не понимаете что делаете, выньше флэшку и перезагрузите сервер.
Если вы введёте YES, начнётся инсталляция нового сервера, и все данные
содержащиеся на жёстком диске будут утеряны. Если вы введёте NO, установка
будет прервана, и произойдёт автоматическая перезагрузка.
Если вы не создали в BIOS контроллера массив (для сервера), введите NO
и создайте его, после этого, заново начните установку."
echo -n "Хотите ли вы начать установку: "
read answer
# verify answer
case ${answer} in
[Yy][Ee][Ss])
# согласен. продолжаем
echo""
echo "Инсталляция нового сервера запущена!"
;;
*)
# передумал :)
echo "Вы ответили '${answer}'. Сервер перезагружается..."
shutdown -r now
exit;
;;
esac
# select - what installing
echo -n "
Для инсталляции почтового/файлового сервера введите 'S',
для инсталляции сервера архивации введите 'B'.
Введите ваш выбор:"
read server_type
case ${server_type} in
[Ss])
# сервак
echo""
echo "Инсталляция нового файлового/почтового сервера запущена!"
echo "1" > ${tmp_dir}/server_type.txt
;;
[Bb])
# бэкап
echo "Инсталляция нового сервера архивации запущена!"
echo "2" > ${tmp_dir}/server_type.txt
;;
esac
server_type="`/bin/cat ${tmp_dir}/server_type.txt`"
input_function() {
# input name new server
echo "
Для успешной инсталляции, ответтьте пожалуйста на несколько вопросов
Введите имя сервера (имя вводится без доменного суффикса)."
echo -n "Имя: "
read server_name_user
server_name="`echo ${server_name_user} | /usr/bin/tr '[:upper:]' '[:lower:]'`"
# проверяем введённое
if [ ${server_name}x = 'x' ]
then
# пустое имя.
server_name="default"
fi
# input IP new server
echo -n "Введите IP адрес этого сервера: "
read server_IP
# проверяем введённое
if [ ${server_IP}x = 'x' ]
then
# пустой адрес.
server_IP="172.31.0.10"
fi
# input IP default gateway
echo -n "Введите адрес шлюза: "
read gateway_IP
if [ ${gateway_IP}x = 'x' ]
then
# пустой гейт
gateway_IP="172.31.0.1"
fi
# input IP default gateway
if [ ${server_type} -eq 1 ]; then
echo -n "Введите адрес сервера backup: "
read backup_IP
if [ ${backup_IP}x = 'x' ]
then
# пустой гейт
backup_IP="172.31.0.1"
fi
fi
# input admin user login
echo -n "Введите логин администратора филиала: "
read user_login
if [ ${user_login}x = 'x' ]
then
# пустой логин
user_login="lissyara"
fi
# input admin user login
echo -n "Введите ВАШ логин в домене: "
read user_join_login
if [ ${user_join_login}x = 'x' ]
then
# пустой логин
user_join_login="akeda"
fi
# input admin user login
echo -n "Введите OU филиала: "
read filial_OU
if [ ${filial_OU}x = 'x' ]
then
# пустой логин
user_login="chelyabinsk"
fi
echo "
Вы ввели следующие сведения:
Имя сервера: ${server_name}
IP сервера: ${server_IP}
IP шлюза: ${gateway_IP}"
if [ ${server_type} = 1 ]; then
echo "IP сервера backup: ${backup_IP}"
fi
echo "Логин администратора филиала: ${user_login}
Ваш доменный логин: ${user_join_login}
OU филиала: ${filial_OU}
"
# input user answer - correct or not data?
echo "Если эти данные верны, введите YES, в противном случае, введите NO"
echo -n "Ваш ответ: "
read result_code
# verify answer
echo -n > ${tmp_dir}/rezult.code.user.input
case ${result_code} in
[Yy][Ee][Ss])
# согласен. продолжаем
echo""
echo "Вы ввели верные данные. Инсталляция продолжается.!"
echo "1" > ${tmp_dir}/rezult.code.user.input
;;
*)
# передумал :)
echo "Вы ответили '${result_code}'. Повторный ввод данных"
echo "no" > ${tmp_dir}/rezult.code.user.input
;;
esac
} # end input function
while test 1 -eq 1
do
# вводим данные.
/usr/bin/touch ${tmp_dir}/rezult.code.user.input
read rezult_code < ${tmp_dir}/rezult.code.user.input
if [ ${rezult_code}x = 1x ]
then
# данные введены верные. считываем переменные.
#echo "имя серванта ${server_name}"
break
else
# либо данные не введены, либо они неверные
input_function
fi
done
# debug - skip restore
#if [ 2 -eq 1 ]; then
# detecting hdd on server
kernel_disks="`/sbin/sysctl kern.disks | awk -F ':' '{print $2}'`"
#kern.disks: da1 da0
if [ ${debug} -eq 1 ] ; then
echo "DEBUG: 1. kernel disks = ${kernel_disks}" ; fi
# cycle for all disks - count and match
i=0
for all_disks in ${kernel_disks}
do
# detecting disk type
disk_type="`echo ${all_disks} | /usr/bin/tr -d '[0-9]'`"
# detecting disk number
disk_number="`echo ${all_disks} | /usr/bin/tr -d '[a-z]'`"
# find ATA|SATA disks
if [ ${disk_type} = "ad" ]
then
# ATA/SATA disks
echo " detected ATA/SATA disks! "
echo "${all_disks}" > ${tmp_dir}/ata_disk.tmp
else
/usr/bin/touch ${tmp_dir}/ata_disk.tmp
fi
# SCSI device
if [ ${all_disks} = "da1" ]
then
# found 1 SCSI disk (da0 - disk, da1 - flash)
echo " detected SCSI disks! "
echo "da0" > ${tmp_dir}/scsi_disk.tmp
else
/usr/bin/touch ${tmp_dir}/scsi_disk.tmp
fi
# detecting - how many SCSI disks on machine
# for ii in 0 1 2 3 4 5 6 7 8 9
# do
# if [ ${all_disks} = da${ii} ]
# then
# # count $i + 1 - line in file
## echo da${ii} >> ${tmp_dir}/disks_count.tmp
# fi
# done
# up counter +1
i="`/bin/expr $i + 1`"
done
#number_SCSI_disks="`cat ${tmp_dir}/disks_count.tmp | /usr/bin/wc -l | /usr/bin/tr -d ' '`"
#if [ ${debug} -eq 1 ] ; then
#echo "DEBUG: 2. number SCSI disks = ${number_SCSI_disks}" ; fi
# if $number_SCSI_disks = 1 - exit - only flash detected
#if [ ${number_SCSI_disks} -eq 1 ]
#then
# exit
# echo " Fatal: SCSI disks not detected!"
# exit;
#fi
# scsi disks detected. da0 - disk for work
# disk counter. Current - number disk = 2; else - shutdown - error - no disks
# future - number disk = 3 (add RAM disk)
if [ $i -eq 2 ]
then
# all OK
else
# no disks?
echo " HDD drive not found... System shutdown..."
/bin/sleep 5 && /sbin/shutdown -p now && exit;
fi
# select disk for work
if [ `/usr/bin/wc -l ${tmp_dir}/ata_disk.tmp | awk '{print $1}'` -eq 1 ]
then
# found ATA disk
work_device="`/bin/cat ${tmp_dir}/ata_disk.tmp`"
else
# ATA not found - work on SCSI
work_device="`/bin/cat ${tmp_dir}/scsi_disk.tmp`"
fi
#exit
# fdisk
echo "Creating partitions..."
#/sbin/fdisk -f ${dist_dir}/fdisk.config -b -I -v /dev/da0 >/dev/null 2>&1
/sbin/fdisk -I -i -B /dev/${work_device}
echo "# /dev/${work_device}s1:
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
a: ${root_size}M 0 4.2BSD 2048 16384 32776
b: ${swap_size}M * swap
c: * 0 unused 0 0 # "raw" part, don't edit
d: ${usr_size}M * 4.2BSD 2048 16384 28528
e: ${var_size}M * 4.2BSD 2048 16384 28528
f: * * 4.2BSD 2048 16384 28552 # /shares - all remaining space
" > ${tmp_dir}/bsdlabel.txt
# bsdlabel
/sbin/bsdlabel -R ${work_device}s1 ${tmp_dir}/bsdlabel.txt >/dev/null 2>&1
/sbin/bsdlabel -B ${work_device}s1 >/dev/null 2>&1
# newfs
echo "Creating filesystems..."
/sbin/newfs /dev/${work_device}s1a >/dev/null 2>&1 # /
/sbin/newfs /dev/${work_device}s1f >/dev/null 2>&1 # /shares
/sbin/newfs /dev/${work_device}s1d >/dev/null 2>&1 # /usr
/sbin/newfs /dev/${work_device}s1e >/dev/null 2>&1 # /var
# tunefs
echo "Settings filesystems parameters..."
/sbin/tunefs -n enable /dev/${work_device}s1f >/dev/null 2>&1 # softupdates
/sbin/tunefs -a enable /dev/${work_device}s1f >/dev/null 2>&1 # ACLs
/sbin/tunefs -n enable /dev/${work_device}s1d >/dev/null 2>&1 # softupdates
/sbin/tunefs -n enable /dev/${work_device}s1e >/dev/null 2>&1 # softupdates
# restore /
echo "Restoring '/' filesystems..."
/sbin/mount /dev/${work_device}s1a /mnt
cd /mnt
/usr/bin/bunzip2 --stdout ${dist_dir}/root.dump.bz2 | /sbin/restore -rf - >/dev/null 2>&1
# restore /usr
echo "Restoring '/usr' filesystems..."
/sbin/mount /dev/${work_device}s1d /mnt/usr
cd /mnt/usr
/usr/bin/bunzip2 --stdout ${dist_dir}/usr.dump.bz2 | /sbin/restore -rf - >/dev/null 2>&1
# restore /var
echo "Restoring '/var' filesystems..."
/sbin/mount /dev/${work_device}s1e /mnt/var
cd /mnt/var
/usr/bin/bunzip2 --stdout ${dist_dir}/var.dump.bz2 | /sbin/restore -rf - >/dev/null 2>&1
# restore /shares
echo "Restoring '/shares' filesystems..."
/sbin/mount /dev/${work_device}s1f /mnt/shares
cd /mnt/shares
/usr/bin/bunzip2 --stdout ${dist_dir}/shares.dump.bz2 | /sbin/restore -rf - >/dev/null 2>&1
echo "All filesystems restored!"
# sync disks
sync
# end debug
#fi
# extract interface name (short; up)
for interface in `/sbin/ifconfig -l -u`
do
# test interface name
if [ ${interface} = "lo0" ]
then
# none
else
interface_name="${interface}"
fi
done
# применяем введённые данные
# редактируем конфиги
echo "Applying new settings..."
for config in "etc/rc.conf" "etc/hosts" "usr/local/etc/exim/configure"
do
# server name
/usr/bin/sed -e "s/testsrv/${server_name}/g" /mnt/${config} \
> ${tmp_dir}/tmp.config && /bin/mv ${tmp_dir}/tmp.config /mnt/${config}
# server IP
/usr/bin/sed -e "s/172.31.0.10/${server_IP}/g" /mnt/${config} \
> ${tmp_dir}/tmp.config && /bin/mv ${tmp_dir}/tmp.config /mnt/${config}
# router IP $gateway_IP
/usr/bin/sed -e "s/172.31.0.1/${gateway_IP}/g" /mnt/${config} \
> ${tmp_dir}/tmp.config && /bin/mv ${tmp_dir}/tmp.config /mnt/${config}
done
# smb.conf
server_name_UPPER="`echo ${server_name} | /usr/bin/tr '[:lower:]' '[:upper:]'`"
/usr/bin/sed -e "s/TESTSRV/${server_name_UPPER}/g" /mnt/usr/local/etc/smb.conf \
> ${tmp_dir}/tmp.config && /bin/mv ${tmp_dir}/tmp.config /mnt/usr/local/etc/smb.conf
# Admin_testfil
/usr/bin/sed -e "s/admin_testfil/${user_login}/g" /mnt/usr/local/etc/smb.conf \
> ${tmp_dir}/tmp.config && /bin/mv ${tmp_dir}/tmp.config /mnt/usr/local/etc/smb.conf
# filial OU (in AD)
/usr/bin/sed -e "s/testfil/${filial_OU}/g" /mnt/usr/local/etc/exim/includes/filials_macros.conf \
> ${tmp_dir}/tmp.config && /bin/mv ${tmp_dir}/tmp.config /mnt/usr/local/etc/exim/includes/filials_macros.conf
# emai alias for admin
echo "" >> /mnt/etc/aliases
echo "#filial admin email" >> /mnt/etc/aliases
echo "${user_login}: ${user_login}@my-domain-name.local" >> /mnt/etc/aliases
/usr/bin/sed -e "s/lissyara,dag/lissyara,dag,${user_login}/g" /mnt/etc/aliases \
> ${tmp_dir}/tmp.config && /bin/mv ${tmp_dir}/tmp.config /mnt/etc/aliases
# settings for backup server
/usr/bin/sed -e "s/da0/${work_device}/g" /mnt/etc/fstab \
> ${tmp_dir}/tmp.config && /bin/mv ${tmp_dir}/tmp.config /mnt/etc/fstab
if [ ${server_type} -eq 2 ]
then
/usr/bin/sed -e "s/bce0/${interface_name}/g" /mnt/etc/rc.conf \
> ${tmp_dir}/tmp.config && /bin/mv ${tmp_dir}/tmp.config /mnt/etc/rc.conf
/usr/bin/sed -e "s/dovecot_enable=\"YES\"//g" /mnt/etc/rc.conf \
> ${tmp_dir}/tmp.config && /bin/mv ${tmp_dir}/tmp.config /mnt/etc/rc.conf
/usr/bin/sed -e "s/squid_enable=\"yes\"//g" /mnt/etc/rc.conf \
> ${tmp_dir}/tmp.config && /bin/mv ${tmp_dir}/tmp.config /mnt/etc/rc.conf
/bin/cp ${dist_dir}/exim.conf /mnt/usr/local/etc/exim/configure
/usr/bin/sed -e "s/clamav_clamd_enable=\"YES\"//g" /mnt/etc/rc.conf \
> ${tmp_dir}/tmp.config && /bin/mv ${tmp_dir}/tmp.config /mnt/etc/rc.conf
fi
sync
# debug - end skip restore
#fi
# new IP for jail
first_octet="`echo ${server_IP} | awk -F '.' '{print $1}'`"
second_octet="`echo ${server_IP} | awk -F '.' '{print $2}'`"
third_octet="`echo ${server_IP} | awk -F '.' '{print $3}'`"
fourth_octet="`echo ${server_IP} | awk -F '.' '{print $4}'`"
new_fourth_octet="`expr ${fourth_octet} - 1`"
alias_IP="${first_octet}.${second_octet}.${third_octet}.${new_fourth_octet}"
# alias - for jail
killall -9 dhclient >/dev/null 2>&1
sleep 1;
/sbin/ifconfig ${interface_name} inet ${server_IP} netmask 255.255.255.0
/sbin/ifconfig ${interface_name} alias ${alias_IP}
/sbin/route add default ${gateway_IP} >/dev/null 2>&1
# dev - for jail
/sbin/mount_devfs devfs /mnt/dev
# crating config for jail
#echo "# jails config
## Generic settings for JAILS
#jail_enable=\"YES\"
#jail_list=\"${server_name}\"
#jail_set_hostname_allow=\"YES\"
#jail_${server_name}_rootdir=\"/mnt\"
#jail_${server_name}_hostname=\"${server_name}\"
#jail_${server_name}_ip=\"${alias_IP}\"
#jail_${server_name}_procfs_enable=\"YES\"
#jail_${server_name}_devfs_enable=\"YES\"
#jail_${server_name}_flags=\"-l -U root\"
#" > /tmp/rc.conf.jail
# startting jails
#echo "starting jail for join in domain"
#/etc/rc.d/jail stop >/dev/null 2>&1
#/etc/rc.d/jail start >/dev/null 2>&1
#sleep 2;
# creating script for kinit
echo "#!/bin/sh
# killall services
#/usr/bin/killall -9 squid >/dev/null 2>&1
#/etc/rc.d/syslogd stop >/dev/null 2>&1
/bin/sleep 2
/usr/bin/kinit ${user_join_login}
" > /mnt/shares/tmp/kinit.sh
chmod 777 /mnt/shares/tmp/kinit.sh
# kerberos
echo "
Введите ВАШ доменный пароль для получения билета Kerberos:"
/usr/sbin/jail /mnt ${server_name} ${alias_IP} /shares/tmp/kinit.sh
# ifconfig down/up
#/sbin/ifconfig bce0 down
#sleep 1;
#ifconfig bce0 up
#sleep 1;
# creating script for net join
echo "#!/bin/sh
#/usr/local/etc/rc.d/samba restart >/dev/null 2>&1
sleep 1;
/usr/local/bin/net join -U ${user_join_login}
" > /mnt/shares/tmp/net_join.sh
chmod 777 /mnt/shares/tmp/net_join.sh
# join in domain
echo "
Введите ВАШ доменный пароль для ввода машины в домен:"
/usr/sbin/jail /mnt ${server_name} ${alias_IP} /shares/tmp/net_join.sh
# clear jail file
echo "# empty file" > /tmp/rc.conf.jail
echo "All done! Rebooting..."
# reboot
#/bin/sleep 5 && /sbin/shutdown -r now
exit;
Код: Выделить всё
#!/usr/local/bin/zsh
#####################################################
# This script closes illegal attempts of login into #
# system and adds the essential rule to firewall #
#####################################################
# vars #
CAT="/bin/cat"
GREP="/usr/bin/grep"
AWK="/usr/bin/awk"
UNIQ="/usr/bin/uniq"
LOG="/var/log/auth.log"
FIREWALL="/etc/rc.firewall"
FDENY="/etc/deny_hosts"
##############################################
# parsing the log file and creatina an array #
ARR=(`${CAT} ${LOG}|${GREP} 'Invalid user'|${AWK} '{print $10}'|${UNIQ}`)
################################################################
# create function for add data from an array to a special file #
f_deny(){
for names in ${ARR}; do
echo $names >> ${FDENY}
done
}
############################################################
# check if a file for deny hosts exists and start function #
if [ -e ${FDENY} ]; then
f_deny
else
touch ${FDENY}
f_deny
fi
####################
# restart firewall #
${IPFW} flush && /bin/sh < /etc/rc.firewall &
Код: Выделить всё
host_deny(){
HostsDeny="`/bin/cat /etc/deny_hosts`"
for hosts in ${HostsDeny}; do
${FwCMD} add deny all from ${hosts} to me
done
}
Код: Выделить всё
touch /etc/deny_hosts
Код: Выделить всё
#!/usr/local/bin/zsh
#####################################################
# This script closes illegal attempts of login into #
# system and adds the essential rule to firewall #
#####################################################
# vars #
CAT="/bin/cat"
GREP="/usr/bin/grep"
AWK="/usr/bin/awk"
UNIQ="/usr/bin/uniq"
WC="/usr/bin/wc"
LOG="/usr/SHELL/auth.log"
FIREWALL="/etc/rc.firewall"
FDENY="/usr/SHELL/deny_hosts"
IPFW="/sbin/ipfw"
##############################################
# parsing the log file and creatina an array #
ARR=(`${CAT} ${LOG}|${GREP} 'Invalid user *'|${AWK} '{print $10}'|${UNIQ}`)
################################################################
# create function for add data from an array to a special file #
f_deny(){
for name in ${ARR}; do
# if IP exists into the file - stop procedure
COUNT=`${CAT} ${FDENY}|${AWK} "/${name}$/"|${WC} -l`
if [ ${COUNT} -ge "1" ]; then
continue
else
# if IP doesn't exist - put it into the file
echo $name >> ${FDENY}
fi
done
}
############################################################
# check if a file exists for deny hosts and start function #
if [ -e ${FDENY} ]; then
f_deny
else
touch ${FDENY}
f_deny
fi
####################
# restart firewall #
${IPFW} -f flush && /bin/sh < /etc/rc.firewall &
Код: Выделить всё
#!/bin/sh
#
# $FreeBSD: ports/mail/exim/files/exim.sh.in,v 1.1 2007/05/28 20:52:13 krion Exp $
#
# PROVIDE: mail
# REQUIRE: DAEMON
# KEYWORD: shutdown
# we make mail start late, so that things like .forward's are not
# processed until the system is fully operational
#
# Add the following lines to /etc/rc.conf to enable exim:
#
#exim_enable="YES"
#
# See exim(8) for flags
#
. /etc/rc.subr
name="kdm"
rcvar=`set_rcvar`
command="/usr/local/bin/kdm-bin"
pidfile=/var/run/kdm.pid
#required_dirs=/var/log/exim
#required_files=/usr/local/etc/exim/configure
#start_precmd=start_precmd
stop_postcmd=stop_postcmd
#extra_commands="reload"
#start_precmd()
#{
# case $sendmail_enable in
# [Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1)
# warn "sendmail_enable should be set to NONE"
# ;;
# [Nn][Oo]|[Ff][Aa][Ll][Ss][Ee]|[Oo][Ff][Ff]|0)
# case $sendmail_submit_enable in
# [Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1)
# warn "sendmail_submit_enable should be set to NO"
# ;;
# esac
# ;;
# [Nn][Oo][Nn][Ee])
# ;;
# esac
#}
stop_postcmd()
{
rm -f $pidfile
}
# read settings, set default values
load_rc_config $name
: ${kdm_enable="NO"}
#: ${exim_flags="-bd -q30m"}
run_rc_command "$1"
Код: Выделить всё
#!/bin/sh
/usr/sbin/pkg_info | /usr/bin/awk '{print $1}' |
{
while read pkg_name
do
requred="`/usr/sbin/pkg_info -R ${pkg_name} | \
/usr/bin/grep Required | /usr/bin/wc -l | \
/usr/bin/tr -d ' '`"
#echo "${requred} ${pkg_name}"
if [ ${requred} = "0" ]
then
# not needed
echo "Pkg: ${pkg_name} - not needed"
fi
done
}