вторник, 16 марта 2010 г.

java script redirect

Уже постил в блоге php redirect. Вот тоже самое на java script.


script language=javascript window.location="http://172.26.18.179/cgi-bin/sgsn2_eqtrunk.pl";

script

вторник, 9 марта 2010 г.

MYSQL user management

Нашёл в своих доках две полезные заметки по MYSQL.

Сброс пароля пользователя root в mysql.

Наша память, к сожалению, нас иногда подводит. И мы никак не можем вспомнить железно, как нам кажется, отпечатанный в памяти пароль. Вы можете сказать, что нужно иметь записную книжку а лучше две, и конечно будете правы. Но… Тем не менее иногда все-таки возникает необходимость восстановления забытого, либо утраченного пароля. Сегодня я опишу простой метод восстановления пароля суперпользователя root для базы данных mysql.

Для этого необходимо выполнить всего несколько шагов.
1. Останавливаем mysql.
service mysqld stop
2. Запускаем mysql следующей командой:

/usr/bin/mysqld_safe --skip-grant-tables --user=root &

3. Запускаем клиента mysql
mysql -u root
4. Выполняем sql запрос
UPDATE mysql.user SET Password=PASSWORD(’newpwd’) WHERE User=’root’;
где newpwd – новый пароль.
5. Применяем изменения
FLUSH PRIVILEGES;
6. Выходим из mysql клиента выполнив в нем команду exit
7. Перегружаем mysql сервер.
service mysqld restart

Ну и все на этом. Пароль суперпользователя root для базы данных mysql изменен. Добавлю, что конечно же этот метод описан в официальном руководстве по mysql, но может кому пригодится.

Оригинал: http://dedicatesupport.com/archives/30

И вторая:

Как создать пользователя mysql через cli

Небольшой пост о том, как создавать из командной строки mysql новую базу данных и нового пользователя mysql с полными правами на только что созданную базу.
mysql -uroot -p CREATE DATABASE ; GRANT ALL PRIVILEGES ON .* TO 'my_user'@'localhost' IDENTIFIED BY 'my_password' WITH GRANT OPTION;

Для того чтобы выставить новому пользователю полные права на все базы данных используем следующую команду:
GRANT ALL PRIVILEGES ON *.* TO 'my_user'@'localhost' IDENTIFIED BY 'my_password' WITH GRANT OPTION;

Доступ к базе для данного пользователя возможен только с localhost. Если вы хотите дать ему доступ к базе с любого хоста, используете % вместо localhost:
GRANT ALL PRIVILEGES ON .* TO 'my_user'@'%' IDENTIFIED BY 'my_password' WITH GRANT OPTION;

четверг, 25 февраля 2010 г.

ssh deny user

Полезная вещь.

Allow only some users to login
Ok, you now have disabled root login, but any user account on your system will be authorized to remote login. This brings a lot of issues, because more users, means more distributed logins, more chances to security issues (imagine one of your users being kidnapped by a alien, you never know). So authorize one user (you), and if needed, other users, but only if needed. I hope you never left sshd_config, because now we have to search for the line “AllowUsers”. If this line doesn’t exist, add it, in the “#Authentication” part of the file, and specify the users you want to allow login. Example: “AllowUsers user1 user2“. Easy right? Let’s continue.

Оригинал: http://blog.dbugs.org/2007/08/29/ssh-security/

среда, 10 февраля 2010 г.

Postgesql опять

Я уже писал, что поставил себе на Солярку посгри. Мне очень интересно сравнить эту базу с mysql. Есть у меня скрипт для набивки базы данными из лог файлов.. вот и решил протестить, но столкнулся с небольшой трудностью. Нужно объяснить perl как работать с postgre.
Устанавливаю модуль DBI:Pg, до этого установив DBI соответственно. Он ругнуося на версию модуля Version :) Поставил самую последнюю. Пишу тестовый скрипт.

#! /usr/bin/perl

use DBI;
my $dbh = DBI->connect("DBI:Pg:dbname=test;host=localhost", "admin", "admin", {'RaiseError' => 1});

Запускаю.

install_driver(Pg) failed: Can't load '/usr/local/lib/perl5/site_perl/5.8.8/sun4-solaris/auto/DBD/Pg/Pg.so' for module DBD::Pg: ld.so.1: /usr/bin/perl: fatal: libpq.so.5: open failed: No such file or directory at /usr/local/lib/perl5/5.8.8/sun4-solaris/DynaLoader.pm line 230.
at (eval 3) line 3
Compilation failed in require at (eval 3) line 3.

Ну я почему-то сразу решил, что у меня нет DynaLoader.pm :) Полез на CPAN, но понял.. что-то не то :) Запустил поиск, нашёл файл. Открываю его стоку номер 230.

my $libref = dl_load_file($file, $module->dl_load_flags) or
croak("Can't load '$file' for module $module: ".dl_error());

Открыл файлик README в исходниках. Читаю.

* PostgreSQL library issues:

DBD::Pg uses the libpq library that comes with Postgres. If the shared libpq
library is not available, DBD::Pg will error with a message that
usually mentions a file names libpq.so, like this:

Can't load './blib/arch/auto/DBD/Pg/Pg.so' for module DBD::Pg: libpq.so.5: cannot open
shared object file: No such file or directory at .../DynaLoader.pm line 230.

This means that the libraries are not installed in a place where the system
can find them when it tries to load the Pg.so file. On some systems, you
can run /sbin/ldconfig -v to see a list of shared modules, or just search
the system for the file with "locate libpq.so". If it exists but is not being
loaded, you may need to add the directory it is in to /etc/ld.so.conf file
and run the ldconfig command. Otherwise, you may need to add the path to

Ищу файл libpq.so.5. Нашёл его тут - /usr/local/pgsql/lib/.
Смотрю что у меня в env.

-bash-3.00$ env
TERM=xterm
SHELL=/usr/bin/bash
SSH_CLIENT=172.26.17.101 3482 22
SSH_TTY=/dev/pts/4
USER=om
LD_LIBRARY_PATH=/usr/openwin/lib
MAIL=/var/mail//om
PATH=/usr/sbin:/usr/bin:/usr/ccs/bin:/usr/openwin/bin:/usr/dt/bin:/usr/platform/SUNW,Netra-240/sbin:/opt/sun/bin:/opt/SUNWvts/bin:/usr/local/pgsql/bin/
PWD=/var/om/perl_script_poly
TZ=Europe/Moscow
SHLVL=1
HOME=/var/om
LOGNAME=om
SSH_CONNECTION=172.26.17.101 3482 172.26.18.179 22
DISPLAY=localhost:11.0
_=/usr/bin/env
OLDPWD=/var/om

Добавляю в файл .profile следующие строки:
LD_LIBRARY_PATH=/usr/openwin/lib:/usr/local/pgsql/lib/
export LD_LIBRARY_PATH

Перелогинюсь. Всё ок, путь появился.

Запускаю скрипт всё - всё ок.

Поймал себя на мысли, что мануалы я читаю в последнюю очередь в моменты отчаяния. :)

четверг, 4 февраля 2010 г.

Sed

Открыл для себя программку sed. Очень удобная штука. Смысл в том, что она находит по содержание, соответствующее шаблону в файле и меняет на также определенный шаблон, после чего результать выводит в STDOUT.

sed 's/чтоискать/начтозаменить/' имяфайла

Для наглядности я создал файл file1.

-bash-3.00$ cat file1
file
one
two
three
four
five
six
seven
eight
nine
ten
eleven
twelve

Что нужно сделать для того, чтобы заменить искомое выражение на шаблон и записать это в файл. Сразу хочется сделать так - "sed 's/six/HelloHello/' < file1 > file1". Отрываем file1, а там пусто :)

Сработает следующая конструкция.

-bash-3.00$ sed 's/six/HelloHello/' file1 > /tmp/1 ; cat 1 > file1 ; rm /tmp/1 ; cat file1

file
one
two
three
four
five
HelloHello
seven
eight
nine
ten
eleven
twelve

Я думаю, что найдется масса случаев, где можно применять эту программу.

вторник, 2 февраля 2010 г.

Process management in Solaris

В Solaris вместо команды top принято использовать похожую по функциональности команду prstat.

Кроме этого, в Solaris для удобства получения информации о процессах с определенными именами есть команда

pgrep имя

Она является эквивалентом команды

ps –ef | grep имя

С помощью pargs можно посмотреть, какие аргументы переданы конкретному процессу и какая у него среда окружения:

pargs 2793
2793: dtterm -name Run -xrm *menuBar: False -iconic -map -e /usr/dt/
bin/dtexec -open
argv[0]: dtterm
argv[1]: -e
argv[2]: /usr/dt/bin/dtexec
argv[3]: -open
argv[4]: -1
argv[5]: -ttprocid
argv[6]: 2.10fX-r 01 648 1289637086 1 1 0 192.168.5.33 5 sunny_105_1
argv[7]: /export/home/mozilla_bin/sfw/bin/mozilla
argv[8]:
argv[9]: -open
argv[10]: -1
argv[11]: -ttprocid
argv[12]: 2.10fX-r 01 648 1289637086 1 1 0 192.168.5.33 5 sunny_105_1
argv[13]: /export/home/mozilla_bin/sfw/bin/mozilla

pargs -e 2793
2793: dtterm -name Run -xrm *menuBar: False -iconic -map -e /usr/dt/
bin/dtexec -open
envp[0]: AB_CARDCATALOG=/usr/dt/share/answerbooks/ru_RU.UTF-8/
ab_cardcatalog
envp[1]: DISPLAY=:0.0
envp[2]: DTAPPSEARCHPATH=//.dt/appmanager:/etc/dt/appconfig/
appmanager/%L:/etc/dt/appconfig/appmanager/C:/usr/dt/appconfig/
appmanager/%L:/usr/dt/appconfig/appmanager/C
envp[3]: DTDATABASESEARCHPATH=//.dt/types,/etc/dt/appconfig/types/%L,/
etc/dt/appconfig/types/C,/usr/dt/appconfig/types/%L,/usr/dt/appconfig/
types/C

Вывод команды pargs значительно сокращен, ключ –e требует вывести все содержимое среды окружения, а для графических программ типа dtterm, как в нашем примере, среда окружения весьма велика.

Команда prstat позволяет в динамике, подобно команде top, отслеживать состояние процессов:

prstat

PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP
3576 root 3412K 868K run 13 0 0:00:02 6,3% find/1
353 root 45M 19M sleep 59 0 0:02:30 0,2% Xsun/1
753 root 15M 3620K run 49 0 0:00:02 0,1% dtterm/1
3577 root 6640K 4108K cpu0 49 0 0:00:00 0,1% prstat/1
205 root 2872K 624K sleep 59 0 0:00:00 0,0% nscd/18
895 root 123M 21M sleep 49 0 0:00:49 0,0% soffice.bin/4
667 root 1844K 488K sleep 59 0 0:00:00 0,0% rpc.rstatd/1
217 root 5364K 536K sleep 59 0 0:00:00 0,0% lpsched/1
324 root 4360K 196K sleep 59 0 0:00:00 0,0% snmpdx/1
240 root 1100K 288K sleep 59 0 0:00:00 0,0% utmpd/1
343 root 4892K 0K sleep 59 0 0:00:00 0,0% vold/3
276 root 3240K 0K sleep 59 0 0:00:00 0,0% htt/1
633 root 3784K 0K sleep 59 0 0:00:00 0,0% sdt_shell/1
657 root 16M 2496K sleep 49 0 0:00:00 0,0% dtfile/1
203 root 4484K 568K sleep 59 0 0:00:00 0,0% cron/1
189 root 5636K 1092K sleep 59 0 0:00:00 0,0% syslogd/13
168 daemon 2444K 820K sleep 59 0 0:00:00 0,0% statd/1
156 root 2412K 688K sleep 59 0 0:00:00 0,0% inetd/1
172 root 2160K 748K sleep 59 0 0:00:00 0,0% lockd/2
229 root 1348K 0K sleep 59 0 0:00:00 0,0% powerd/2
133 root 2212K 604K sleep 59 0 0:00:00 0,0% rpcbind/1
Total: 61 processes, 161 lwps, load averages: 0,25, 0,17, 0,27

Вы можете получить информацию только о тех процессах, которые запущены вами. Пользователь root может получть информацию о любых процессах.

среда, 13 января 2010 г.

Cacti backup script

Много времени прошло с момента поднятия cacti на серваке. Написал скрипт для бэкапа, который рекурсивно копирует папку cacti со всеми скриптами и файлами графиков, сливает mysql базу и всё это заворачивает в tar и gzip. Можт кому будет интересно.

Собственно листинг:

#/usr/bin/bash

TMPDIR=/space/cacti_bkp
CACTIDIR=/usr/local/apache2/htdocs/cacti
BKPDIR=/space/
BKP=cacti_bkp

if test -d $TMPDIR
then rm -r $TMPDIR; mkdir $TMPDIR
else mkdir $TMPDIR
fi

echo "Copying files.."
(cp -R $CACTIDIR $TMPDIR)
wait

echo "Making SQL dump.."
/usr/local/mysql/bin/mysqldump -ucactiuser -pcactiuser --opt cacti > $TMPDIR/cacti_base.sql

echo "TARing files.."
tar cf $BKPDIR/$BKP.tar $TMPDIR

rm -r $TMPDIR
echo "GZIPing files.."

gzip -9 $BKPDIR/$BKP.tar
chown cacti:cacti $BKPDIR/$BKP.tar.gz
mv $BKPDIR/$BKP.tar.gz $BKPDIR/$BKP`date '+_%Y%m%d_%H%M%S'`.tar.gz

Результат работы скрипта:

-rw-r--r-- 1 cacti cacti 178235269 Jan 10 08:17 cacti_bkp_20100110_082232.tar.gz
-rw-r--r-- 1 cacti cacti 178720071 Jan 13 07:46 cacti_bkp_20100113_075147.tar.gz


В cron:
15 8 * * 0 sh /space/cacti_bkp.sh 1>/dev/null &
20 8 * * * find /space/*.gz -mtime 28 -exec rm {} \;

Первая строка собственно бэкап, вторая ищет старые бэкапы и трёт их.