Перейти к содержимому

BUM

Сitizens
  • Публикации

    1 696
  • Зарегистрирован

  • Посещение

  • Дней в лидерах

    21

Все публикации пользователя BUM

  1. BUM

    проблемы с Qip

    удали поставь pidgin, лечится
  2. BUM

    Спамерам посвящается!

    боян, про "Вконтакте" жоще будет http://anton-lirnik.livejournal.com/96423.html
  3. BUM

    100 мбит

    Neelix, зачед поржал от души
  4. угу, а ты разрули под 300 vlan'ов на реалтеке я посмотрю на твой проц
  5. через крон имхо неправильно, лучше запустить демоном. так же более логично и понятней если свитчи прописать в хостах, и отправлять не IP-адрес свитча а его имя (более содержательную информацию, IP свитча можно отправлять когда у Вас 2-3 свитча, когда у Вас оборудования поболее то более логично получить в смске местонахождение девайсины) так же Ваш скрипт выполняет проверку только по ICMP ответам. А вы говорите про мониторинг оборудования. Вам на сервере ненужно проверять службы http/mysql/etc.? Советую не изобретать велосипед а использовать тот же nagios, zabbix если это сложно, то более простой вариант - mon. (в дебиане есть готовый пакет, на счет других систем не проверял - apt-get install mon) легкий простой в настройке демон мониторинга (пример конфигов выше). кстати как-то давно поднималась тема про закрытие СМС через МТС - найден способ отправки через екотел - +380ххххххххх\@sms.ecotel.com.ua проверено работает, но туго задержка смс более минуты
  6. А чем mon не устроил? mon 0.99.2-13 monitor hosts/services/whatever and alert ab настраиваем в /etc/mon/mon.cfg хостгруппы в формате "hostgroup группа днс_имя/IP" hostgroup servers www cs office далее описываем что мы хотим от мона Так же можно проверять smtp/pop3 и другие службы. (в дефолном конфиге есть) sms.alert ложим в cat /usr/lib/mon/alert.d/sms.alert далее думаю понятно. если что уточняйте.
  7. BUM

    Кабель ОК-net

    Человек же написал _ЗАЗЕМЛИТЬ С ОБОИХ КОНЦОВ_, и посему имеется ввиду честное заземление, и ни в коем случае - зануление и т.п.
  8. гыгы еще одни "Волевцы" http://vital.ks.ua/internet/price Под один бренд косят
  9. BUM

    Os Debian Gnu/linux

    а хуле тут вспоминать, конфиги вроде четко описаны.... релейки нарыть тоже не сложно ... было бы желание ...
  10. BUM

    Нужна карта

    http://maps.yandex.ru/ В поиске пишешь - Украина, Чернигов, Улица, Дом Успехов!
  11. BUM

    Mail Server!

    Чувак ты жжош. Ну так темболее екзим те поще захавается вот когда за 2к перевалит посмотри на тазик
  12. BUM

    Mail Server!

    у тебя писем сколько обрабатывается в сутки? вот когда с большим объемом поработаешь, вот тогда поймешь почему exim. п.с. по постфиксу есть также дока - http://www.lissyara.su/?id=1019 но рекомендую екзим.
  13. BUM

    Mail Server!

    А почему постфикс? почему не екзим? пример настроки екзима тут - http://www.lissyara.su/?id=1016
  14. BUM

    отдельно мир, отдельно украина

    дорого вам предложили, нам почти за ту же сумму предложили 100-ку , но теперешний пров нам сделал дешевле.
  15. BUM

    Ap-точка

    жи, ши - пиши с буквой И "стройть" лучше на крыше п.с. простите не удержался.
  16. Я так понял кабель будет похож на нечто вида "телефонной лапши"? интересно как он будет перекручиваться при подвесе на расстоянии 70-90м? Назовите хоть ориентировочную цену.
  17. BUM

    Где скачиваете кино ?

    kinoline.com.ua interline.net.ua torrents.ru
  18. BUM

    саморобний свіч

    Археологи.... А интересно у афтора что-то получилось? или все осталось на уровне травы?
  19. BUM

    тормозит просмотр On-line фильмов

    youtube.com
  20. BUM

    ГРОЗА и клиенты

    Да да! крутите! первая же молния ударившая в этот парапет положит ваше оборудование.
  21. BUM

    Os Debian Gnu/linux

    у меня
  22. BUM

    Os Debian Gnu/linux

    ты скажи что требуется от машинки?
  23. BUM

    Os Debian Gnu/linux

    попробуй mount -t ntfs-3g
  24. BUM

    Os Debian Gnu/linux

    подними с модом mysql создаешь в mysql базу данных например ftp CREATE TABLE `groups` ( `groupname` varchar(30) NOT NULL default '', `gid` int(11) NOT NULL default '0', `members` varchar(255) default NULL ) TYPE=MyISAM; CREATE TABLE `users` ( `username` varchar(30) NOT NULL default '', `password` varchar(30) NOT NULL default '', `uid` int(11) default NULL, `gid` int(11) default NULL, `homedir` varchar(255) default NULL, `shell` varchar(255) default NULL, `count` int(11) NOT NULL default '0', UNIQUE KEY `username` (`username`) ) TYPE=MyISAM; далее добавляешь в конфиг профтпд след. настройки <IfModule mod_dso.c> LoadModule mod_sql.c LoadModule mod_sql_mysql.c </IfModule> <Global> SQLConnectInfo пользователь_БД@localhost БД ПАРОЛЬ SQLAuthTypes Crypt SQLUserInfo users username password uid gid homedir NULL RequireValidShell off SQLGroupInfo groups groupname gid members SQLAuthenticate users* SQLLogFile /var/log/proftpd_sql.log SQLNamedQuery getcount SELECT "count, username from users where username='%u '" SQLNamedQuery updatecount UPDATE "count=count+1 WHERE username='%u'" users </Global> далее добавляешь пользователя либо через пхпадмин либо руцями, либо вот скрипт для добавления: #!/usr/bin/php <? /* ******************************************************************************** ******* HELP: <script_name> list <script_name> info login <script_name> add login passwd homedir <script_name> passwd login newpasswd <script_name> delete login ******************************************************************************** ******* */ if(!isset($_SERVER['argv'])) { die('ftp manager error: can not read arguments from $_SERVER["argv"]'."\n"); } ////////////////////////// // параметры базы //////// $mysql_host = 'localhost'; $mysql_database = 'ftp'; $mysql_user = 'ftp'; $mysql_password = 'password'; ////////////////////////// ////////////////////////// // имя ftp-хоста ///////// $ftp_host_name = 'FTP_HOST_NAME'; ////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// // MAIN ////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// $_SERVER['argv'][9] = $ftp_host_name; $mysql = new class_mysql($mysql_host, $mysql_database, $mysql_user, $mysql_password); // класс для работы с mysql $ftp_account = new class_ftp_account($_SERVER['argv'], &$mysql); // класс для работы с ftp-аккаунтами ////////////////////////////////////////////////////////////////////////////////////////// // FTP ACCOUNT CLASS ///////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// class class_ftp_account { var $MYSQL; var $ARGV; // конструктор. вызывается при инициализации класса function class_ftp_account($argv, &$mysql) { $this->MYSQL = $mysql; // получаем ссылку на mysql объект $this->ARGV = $argv; // получаем параметры, переданые скрипту $this->parce_argv(); // эта функция проверяет параметры, которые были переданы скрипту и вызывает нужные функции из класса } // эта функция проверяет параметры, которые были переданы скрипту и вызывает нужные функции из класса function parce_argv() { if($this->ARGV[1] == 'list') { // вывести список всех пользователей $this->print_all_accounts(); // вывести список всех аккаунтов die(); } elseif($this->ARGV[1] == 'info') { // получение информации о пользователе if(isset($this->ARGV[2])) { $this->check_login($this->ARGV[2]); // проверка логина $this->print_account_info($this->ARGV[2]); // вывести информацию по аккаунту } else { $this->print_help(); } die(); } if($this->ARGV[1] == 'add') { // добавление пользователя if(isset($this->ARGV[2]) && isset($this->ARGV[3]) && isset($this->ARGV[4])) { $this->check_login($this->ARGV[2]); // проверка логина $this->check_password($this->ARGV[3]); // пароля $this->check_homedir($this->ARGV[4]); // и домашней директории $this->add_account($this->ARGV[2], $this->ARGV[3], $this->ARGV[4]); // добавить аккаунт } else { $this->print_help(); } die(); } elseif($this->ARGV[1] == 'passwd') { // поменять пароль для пользователя if(isset($this->ARGV[2]) && isset($this->ARGV[3])) { $this->check_login($this->ARGV[2]); $this->check_password($this->ARGV[3]); $this->change_pasword($this->ARGV[2], $this->ARGV[3]); // поменять пароль } else { $this->print_help(); } die(); } elseif($this->ARGV[1] == 'delete') { // удалить пользователя из базы if(isset($this->ARGV[2])) { $this->check_login($this->ARGV[2]); $this->delete_account($this->ARGV[2]); // удалить аккаунт из базы } else { $this->print_help(); } die(); } else { // неизвестная команда, выводим хелп $this->print_help(); } } /////////////////////////////////////////////////////////////////////////// // служебные функции ////////////////////////////////////////////////////// function print_account_info($login) { // вывести информацию по аккаунту $this->MYSQL->connect(); $user = $this->MYSQL->select("SELECT * FROM users WHERE username='".$login."'"); $this->MYSQL->close(); if(!isset($user[0]['username'])) { die('ftp manager error: account "'.$login.'" has not been found'."\n"); } print "\n".'[ftp-account info for "'.$login.'"]:'."\n"; print 'currentdate: '.date("Y-m-d H:i:s")."\n"; if(isset($this->ARGV[9])) { print 'host: '.$this->ARGV[9]."\n"; } print 'login: '.$user[0]['username']."\n"; if(($this->ARGV[1] == 'add') || ($this->ARGV[1] == 'passwd')) { // для только что добавленых пользователей print 'password: '.$this->ARGV[3]."\n"; print 'ftp-link: ftp://'.$user[0]['username'].':'.$this->ARGV[3].'@'.$this->ARGV[9]."\n"; } print 'homedir: '.$user[0]['homedir']."\n"; print 'uid: '.$user[0]['uid']."\n"; print 'gid: '.$user[0]['gid']."\n"; print 'count: '.$user[0]['count']."\n"; print '[/ftp-account info for "'.$login.'"]'."\n\n"; } /////////////////////////////////////////////////////////////////////////// function print_all_accounts() { // вывести информацию по всем аккаунтам print "\n".'[listing ftp-accounts]:'."\n"; $this->MYSQL->connect(); $users = $this->MYSQL->select("SELECT * FROM users"); foreach($users as $user) { print 'login: '.$user['username'].' , uid: '.$user['uid'].' , gid: '.$user['gid'].' , homedir: '.$user['homedir']."\n"; } $this->MYSQL->close(); print '[/listing ftp-accounts]'."\n\n"; } /////////////////////////////////////////////////////////////////////////// function add_account($login, $password, $homedir) { // добавить аккаунт $uid = $this->create_uid(); if($this->check_account_existance($login) == TRUE) { die('ftp manager error: account "'.$login.'" already exists'."\n"); } $this->MYSQL->connect(); $this->MYSQL->execute("INSERT INTO users SET username='".$login."',password=ENCRYPT('".$password."'),homedir='".$homedir."',shell='/dev/null',uid='".$uid."',gid='".$uid."'"); $this->MYSQL->close(); mkdir($homedir, 0755, TRUE); // system("mkdir -p ".$homedir); // создание папки chown($homedir, intval($uid)); // system("chown ".$uid.":".$gid." ".$homedir); // выдача папке прав chgrp($homedir, intval($uid)); print 'ftp manager success: account "'.$login.'" has been added'."\n"; $this->print_account_info($login); } /////////////////////////////////////////////////////////////////////////// function change_pasword($login, $password) { // изменение пароля if($this->check_account_existance($login) == FALSE) { die('ftp manager error: account "'.$login.'" does not exists'."\n"); } $this->MYSQL->connect(); $this->MYSQL->execute("UPDATE users SET password=ENCRYPT('".$password."') WHERE username='".$login."'"); $this->MYSQL->close(); print 'ftp manager success: password for account "'.$login.'" has been changed'."\n"; $this->print_account_info($login); } /////////////////////////////////////////////////////////////////////////// function delete_account($login) { // удаление аккаунта из базы $warning_timeout = 10; // таймаут на предупреждение об удалении в секундах if($this->check_account_existance($login) == FALSE) { die('ftp manager error: account "'.$login.'" does not exists'."\n"); } $this->print_account_info($login); // вывод информации об аккаунте. в случае ошибки можно будет вовремя остановить удаление print 'ftp manager warning: deleting account "'.$login.'" in '.$warning_timeout.' seconds, you can still press ctrl+c '; $this->print_dots($warning_timeout); $this->MYSQL->connect(); $user = $this->MYSQL->select("SELECT homedir FROM users WHERE username='".$login."'"); $this->MYSQL->execute("DELETE FROM users WHERE username='".$login."'"); $this->MYSQL->close(); print "\n".'ftp manager success: account "'.$login.'" has been deleted'."\n"; print 'ftp manager info: now you can manualy run "rm -rf '.$user[0]['homedir'].'" to erase all user files'."\n"; } // служебные функции ////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// // утилиты //////////////////////////////////////////////////////////////// function print_dots($seconds) { // печатать по точке в секунду .) for($i=0;$i<$seconds;$i++){ sleep(1); print '.'; } } /////////////////////////////////////////////////////////////////////////// function check_account_existance($login) { // проверка на существование аккаунта в базе $this->MYSQL->connect(); $user = $this->MYSQL->select("SELECT username FROM users WHERE username='".$login."'"); if(isset($user[0]['username'])) { return TRUE; } else { return FALSE; } $this->MYSQL->close(); } /////////////////////////////////////////////////////////////////////////// function create_uid() { // придумать uid и gid для нового пользователя return mt_rand(10000, 20000); } /////////////////////////////////////////////////////////////////////////// function print_help() { // эта функция печатает хелп во всех случаях неправильного ввода параметров print 'ftp manager error: wrong parameters'."\n"; print '<script_name> list'."\n"; print '<script_name> info login'."\n"; print '<script_name> add login passwd homedir'."\n"; print '<script_name> passwd login newpasswd'."\n"; print '<script_name> delete login'."\n"; die(); } // утилиты //////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// // функции проверки вводимых параметров /////////////////////////////////// function check_login($login) { // проверка логина if(!preg_match("/^[0-9a-z\.\-]+$/", $login)) { die('ftp manager error: login can include only "0-9" "a-z" "." "-" symbols'."\n"); } } /////////////////////////////////////////////////////////////////////////// function check_password($password) { // проверка пароля if(!preg_match("/^[0-9a-zA-Z]+$/", $password)) { die('ftp manager error: password can include only "0-9" "a-z" "A-Z" symbols'."\n"); } } /////////////////////////////////////////////////////////////////////////// function check_homedir($homedir) { // и домашней директории if(!preg_match("/^\/[0-9a-zA-Z\/\.\-\_]+$/", $homedir)) { die('ftp manager error: homedir can include only "0-9" "a-z" "A-Z" "/" "." "-" "_" symbols'."\n"); } } // функции проверки вводимых параметров /////////////////////////////////// /////////////////////////////////////////////////////////////////////////// } ////////////////////////////////////////////////////////////////////////////////////////// // MYSQL CLASS /////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// class class_mysql { // db access var $HOST; var $DATABASE; var $USER; var $PASSWD; // table_prefix var $TABLE_PREFIX = ''; var $LINK; var $QUERY; var $ERROR; var $RESULT; var $NUM_ROWS; // constructor function class_mysql($host, $database, $user, $password) { $this->HOST = $host; $this->DATABASE = $database; $this->USER = $user; $this->PASSWD = $password; //$this->connect(); } function connect() { $this->LINK = mysql_pconnect($this->HOST, $this->USER, $this->PASSWD) or die('ftp manager mysql_error: '.mysql_errno().': '.mysql_error()."\n"); mysql_select_db($this->DATABASE) or die('ftp manager mysql_error: '.mysql_errno().': '.mysql_error()."\n"); } function close() { mysql_close($this->LINK); } function get_insert_id() { return mysql_insert_id($this->LINK); } function execute($query) { $this->QUERY = $query; $this->RESULT = mysql_query($this->QUERY, $this->LINK) or die('ftp manager mysql_error: '.mysql_errno().': '.mysql_error()."\n"); $this->ERROR = mysql_error(); } function select($query) { $result = array(); $this->QUERY = $query; $this->RESULT = mysql_query($this->QUERY, $this->LINK) or die('ftp manager mysql_error: '.mysql_errno().': '.mysql_error()."\n"); $this->ERROR = mysql_error(); $this->NUM_ROWS = mysql_num_rows($this->RESULT); while($row = mysql_fetch_array($this->RESULT)){ array_push($result, $row); } return $result; } } ?> соответственно размещаешь его где-то в системе это дело вкуса, далее в консоле /dir_to_script/script_name.php
  25. BUM

    Os Debian Gnu/linux

    руки отбилбы за вебмин
×
×
  • Создать...