FastNetMon

Tuesday, 31 March 2009

Делаем бесконечный винт для wget :)

Вот так делаем бесконечный винт и скачиваем весь интернет:
wget -O/dev/null http://mirror.yandex.ru/centos/5.3/isos/x86_64/CentOS-5.3-x86_64-bin-DVD.iso

Как очистить вывод dmesg?

Задался такой проблемкой при отлове бага с Xen:
dmesg -c
выведет последние записи и очистит буфер :)

Крик души

Какой идиот придумал, чтобы ab НЕ РАБОТАЛА, если урл передан без слеша на конце?


ab ya.ru
ab: invalid URL
Usage: ab [options] [http[s]://]hostname[:port]/path




ab ya.ru/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking ya.ru (be patient).....done


Server Software: httpd
Server Hostname: ya.ru
Server Port: 80

Document Path: /
Document Length: 4848 bytes

Concurrency Level: 1
Time taken for tests: 0.068 seconds
Complete requests: 1
Failed requests: 0
Write errors: 0
Total transferred: 5095 bytes
HTML transferred: 4848 bytes
Requests per second: 14.73 [#/sec] (mean)
Time per request: 67.902 [ms] (mean)
Time per request: 67.902 [ms] (mean, across all concurrent requests)
Transfer rate: 73.28 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 21 21 0.0 21 21
Processing: 47 47 0.0 47 47
Waiting: 20 20 0.0 20 20
Total: 68 68 0.0 68 68

Как ограничить скорость закачки wget`у ?

А вот так:
wget --limit-rate=1M http://mirror.yandex.ru/centos/5.3/isos/x86_64/CentOS-5.3-x86_64-bin-2of7.iso

Как избавиться от ошибки в YUM: "TypeError: unsubscriptable object"

Вылезла вот такая противная ошибка (а если вкратце -- "TypeError: unsubscriptable object"):


Traceback (most recent call last):
File "/usr/bin/yum", line 29, in ?
yummain.user_main(sys.argv[1:], exit_code=True)
File "/usr/share/yum-cli/yummain.py", line 229, in user_main
errcode = main(args)
File "/usr/share/yum-cli/yummain.py", line 145, in main
(result, resultmsgs) = base.buildTransaction()
File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 647, in buildTransaction
(rescode, restring) = self.resolveDeps()
File "/usr/lib/python2.4/site-packages/yum/depsolve.py", line 704, in resolveDeps
for po, dep in self._checkFileRequires():
File "/usr/lib/python2.4/site-packages/yum/depsolve.py", line 939, in _checkFileRequires
if not self.tsInfo.getOldProvides(filename) and not self.tsInfo.getNewProvides(filename):
File "/usr/lib/python2.4/site-packages/yum/transactioninfo.py", line 414, in getNewProvides
for pkg, hits in self.pkgSack.getProvides(name, flag, version).iteritems():
File "/usr/lib/python2.4/site-packages/yum/packageSack.py", line 300, in getProvides
return self._computeAggregateDictResult("getProvides", name, flags, version)
File "/usr/lib/python2.4/site-packages/yum/packageSack.py", line 470, in _computeAggregateDictResult
sackResult = apply(method, args)
File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 861, in getProvides
return self._search("provides", name, flags, version)
File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 43, in newFunc
return func(*args, **kwargs)
File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 837, in _search
for pkg in self.searchFiles(name, strict=True):
File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 43, in newFunc
return func(*args, **kwargs)
File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 586, in searchFiles
self._sql_pkgKey2po(rep, cur, pkgs)
File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 470, in _sql_pkgKey2po
pkg = self._packageByKey(repo, ob['pkgKey'])
File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 413, in _packageByKey
po = self.pc(repo, cur.fetchone())
File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 68, in __init__
self._read_db_obj(db_obj)
File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 94, in _read_db_obj
setattr(self, item, _share_data(db_obj[item]))
TypeError: unsubscriptable object


Исправляется вот так:
yum clean all

Обновление Centos 5.2 до Centos 5.3

ВНИМАНИЕ!!! КАТЕГОРИЧЕСКИ ПРЕДОСТЕРЕГАЮ ВАС ОТ ПОВТОРЕНИЯ ЭТОГО МАНУАЛА НА ПРОДАКШЕН СЕРВЕРАХ!!! ТОЛЬКО ТЕСТЫ!!!!

Ставим апдейченые пакеты:
rpm -Uhv http://mirror.yandex.ru/centos/5.3/os/x86_64/CentOS/centos-release-5-3.el5.centos.1.x86_64.rpm
rpm -Uhv http://mirror.yandex.ru/centos/5.3/os/x86_64/CentOS/centos-release-notes-5.3-3.x86_64.rpm


Открываем файл репо:

vi /etc/yum.repos.d/CentOS-Base.repo


Явно забиваем версию и выбираем везде baseurl вместо mirrorlist:

:%s/$releasever/5.3/
:%s/mirror.centos.org/mirror.yandex.ru


В результате он должен принять вид:


# CentOS-Base.repo
#
# This file uses a new mirrorlist system developed by Lance Davis for CentOS.
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#

[base]
name=CentOS-5.3 - Base
#mirrorlist=http://mirrorlist.centos.org/?release=5.3&arch=$basearch&repo=os
baseurl=http://mirror.yandex.ru/centos/5.3/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#released updates
[updates]
name=CentOS-5.3 - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=5.3&arch=$basearch&repo=updates
baseurl=http://mirror.yandex.ru/centos/5.3/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#packages used/produced in the build but not released
[addons]
name=CentOS-5.3 - Addons
#mirrorlist=http://mirrorlist.centos.org/?release=5.3&arch=$basearch&repo=addons
baseurl=http://mirror.yandex.ru/centos/5.3/addons/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#additional packages that may be useful
[extras]
name=CentOS-5.3 - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=5.3&arch=$basearch&repo=extras
baseurl=http://mirror.yandex.ru/centos/5.3/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-5.3 - Plus
#mirrorlist=http://mirrorlist.centos.org/?release=5.3&arch=$basearch&repo=centosplus
baseurl=http://mirror.yandex.ru/centos/5.3/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#contrib - packages by Centos Users
[contrib]
name=CentOS-5.3 - Contrib
#mirrorlist=http://mirrorlist.centos.org/?release=5.3&arch=$basearch&repo=contrib
baseurl=http://mirror.yandex.ru/centos/5.3/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5



Ну и, наконец, yum update && yum upgrade

Что я скажу, жуть, но, видимо, такие проблемы из-за того, что релиз вот только только вышел и не доразложен по зеркалам. Часть идей слита с отличного мануала: http://xuev.blogbus.com/logs/37302025.html

Thursday, 26 March 2009

dosemu + keyrus.com + DOS софт с кириллицей

Вот встала задачка поюзать одну старую софтинку, а всякие там лайвсиди с ДОСами искать, юзать вовсе не хочется, как всегда задача сходу решается в Линуксе :)

Ставим dosemu, скачиваем русификатор: http://games.gcmsite.ru/arch/keyrus.zip, распаковываем в папку с нашей DOS программой. Теперь надо каким-то образом запускать keyrus.com перед запуском самой программы. Конечно, это можно было сделать последовательным запуском указанных программ в консоли dosemu, но есть более элегантное решение -- старые добрые BAT файлы.

Создаём файлик run.bat вида:
KEYRUS.COM
TESTDOSPROG.EXE

или KEYRUS.COM /LAT -- если надо включить английскую раскладку стандартной

И после этого прямо его запускаем в dosemu: dosemu run.bat и видим русские буквы вместо кракозябл :)

Monday, 23 March 2009

Perl + locale + Debian

Довольно часто на Дебияне вываливается вот такая хрень:

perl -v
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "ru_RU.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").



Временное решение: export LANG=C и потом perl -v
Постоянное решение: открываем файл /etc/environment и добавляем там строку: LANG=C

Обновление Debian 4 Etch для Debian 5 Lenny

Для начала обновим систему до самой новой версии текущего стабильного дистрибутива:
apt-get update;
apt-get upgrade;

Теперь открываем файл управления репозиториями:
vi /etc/apt/sources.list


И меняем везде etch на lenny (конфиг файл может выглядеть иначе, то, что Вы видите ниже - лишь пример):
deb http://ftp2.de.debian.org/debian lenny main contrib non-free
deb http://ftp2.de.debian.org/debian-security lenny/updates main contrib non-free

После этого выполняем (да, apt-get upgrade включен в apt-get dist-upgrade, но я лично предпочитаю их запускать по отдельности):
apt-get update
apt-get upgrade
apt-get dist-upgrade

В процессе апгрейда Debian будет задавать множество вопросов на тему "а заменить ли этот конфиг?" самый безопасный способ на все вопросы отвечать "Оставить старый конфиг" (Save Old Config) / "Ok".

Также очень часто apt-get задает такой вопрос "The default action is to keep your current version. *** xxxxx.conf (Y/I/N/O/D/Z) [default=N] ? " и на него самое безопасное отвечать N либо просто нажимать Enter, так как этот ответ стандартный.

Еще очень част запрос в виде "Modified configuration file" на который необходимо отвечать: "keep the local version currently installed".

Также может выдаваться запрос "Services to restart for XXX library upgrade", на него можно смело отвечать Ok.

Но так или иначе, часто Debian задает такие вопросы, на которые без технических знаний не ответить, так что, если не уверены в своих силах, обращайтесь к профессионалам, пожалуйста, иначе убытки неминуемы.

Вот и все, апдейт закончен :)

Sunday, 22 March 2009

Каким образом Jabber транспорты связываются с jabber сервером?

Сабж, прошу закидать ссылками.

Пока понял лишь то, что транспорты работают отдельным процессом и соединяются с сервером по сети (5347 порт для Jabberd2), используя некий "secret", который используется для отличения "своих" транспортов.

Установка Twisted в Debian based дистрибутивах

Встала необходимость поставить эту либу для работы PyICQ, но по каким-то сакральным причинам оно не ставится через easy_install (а через apt генерит ворох ошибок и тоже не ставится), поэтому ставим из исходников.

Сначала установим пакеты необходимые для сборки: sudo apt-get install python-dev build-essential

Потом находим исходники на странице: http://twistedmatrix.com/trac/wiki/Downloads "Source Tarball Twisted 8.2.0 tarball" и сливаем, распаковываем и из папки запускаем: sudo ./setup.py install ну и всё, теперь мы захламили систему ворохом Питоновских либ :)

Работа с протоколом ICQ из Python - установка

Во-первых, стоит вопрос -- какую же библиотеку для этого использовать? Мне кажется, самый что ни на есть лучший вариант -- это взять библиотеку, которую использует много народу. Выбор пал на PyICQt, которая по совместительству является лучшим ICQ транспортом для Jabber`а.

Вообще, я полностью не уверен, что это библиотека авторов PyICQt, но тем не менее, у них есть какие-то патчи к ней и можно быть уверенным, что в случае проблем с протоколом, они его быстро пропатчат :)

Ну что же, идём на их страницу: http://code.google.com/p/pyicqt/source/checkout и сливаем себе весь их svn репозиторий: svn checkout http://pyicqt.googlecode.com/svn/trunk/ pyicqt-read-only

Ставим Twisted, для этого идём в мануал http://phpsuxx.blogspot.com/2009/03/twisted-debian-based.html. Ставим остальные модули: sudo easy_install config, sudo easy_install Nevow

Теперь переходим в папку проекта, копируем дефалтный конфиг: cp config_example.xml config.xml и запускаем: python PyICQt.py и всо, транспортег работает =)

А вот здесь есть примеры использования Twisted Oscar (да, библиотека входит в состав Twisted, а не PyICQt): http://twistedmatrix.com/projects/words/documentation/examples/

Saturday, 21 March 2009

Один аватар для всех и вся!

Вот прошу любить и жаловать отличный сервис http://en.gravatar.com/, он отличен тем, что позволяет использовать один аватар на куче сайтов -- т.е. один раз загрузив сюда милую сердцу аву, вы её сможете в один клик (а можно вообще без кликов, например, на CPAN) поставить на любом сайте, поддерживающим эту фичу :)

Friday, 20 March 2009

Unix way

Вот так надо проектировать и писать софт:



ПЫСЫ: это Postfix

Ещё один сторонний репозиторий для Centos / RHEL, Epel

Ранее использовал только Rpm Forge, но недавно наткнулся на вот это http://fedoraproject.org/wiki/EPEL/FAQ#howtouse, сам теперь юзаю Epel и Вам советую -- в репо дофика полезных пакетов :)

Ставится очень легко:
rpm -Uhv http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm