Система Orphus
[]

среда, 25 февраля 2009 г.

OpenPGP от репозиториев PPA... Гребем лопатой :)

На днях прочитал очень полезную заметку Ключ от репозитория PPA, где пакеты лежат (автору большой респект), из которой узнал то, чего мне так сильно не хватало.
Но вариант предложенный автором требует слишком много телодвижений из-за которых только теряем драгоценное время. Вот и встал у меня тут же вопрос: "А как его (время) сэкономить?". Решение пришло мигом.


Накатал маленький скриптег (полезная нагрузка всего 2 строки) и радуюсь :)

Работает просто. Принимает только один парамерт - имя пакета, для которого нужно получить OpenPGP ключ. Точнее сказать это не совсем имя... Может правильнее будет PPA имя архива? Т.е. если у нас в /etc/apt/sources.list есть запись, например, "deb http://ppa.launchpad.net/claws-mail/ubuntu intrepid main", то нам надо передать скрипту в качестве параметра строку claws-mail, например:
$ ppa-key-import claws-mail
gpg: запрашиваю ключ 5ED1D082 с hkp сервера keyserver.ubuntu.com
gpg: ключ 5ED1D082: открытый ключ "Launchpad PPA for Claws Mail" импортирован
gpg: Всего обработано: 1
gpg: импортировано: 1 (RSA: 1)
OK



Сам скрипт всегда можно взять тут: http://notesyoungeradmin.angel2s2.googlepages.com/ppa-key-import



ЗЫ: Иногда бывают глюки, т.к. лаунч пад не всегда выдает то что нужно, иногда какой-то урезанный ключ... :(


UPD: Обновил скрипт, т.к. на оф. сайте лаунчпада появился новый поход к этой теме. Теперь скрипт не использует временный файл.
Спасибо автору блога "Крапленая колода".


UPD2: Обновил скрипт, подробности тут.

[]

четверг, 19 февраля 2009 г.

port-check - чекаем порты без проблем или скрипт для проверки доступности портов


Нам, админам, довольно часто, точнее постоянно, приходится мониторить различные ресурсы своей сети и не редко удаленной. Если нет возможности поставить на хост средства мониторинга, то приходится проверить по портам. Раньше я это делал так:
netcat -w3 -z host port && echo OK
А что если нужно проверять несколько хостов и/или портов? Вот для этих целей и был написан скрипт.


Цель написания скрипта проста - возможность проверить несколько портов на одном и более хосте одной командой. Про существование различных программ я знаю, но не нашел подходящего для себя решения, поэтому написал свой скрипт основанный на netcat.

Ниже приведена справка по использованию скрипта port-check.
$ port-check --help

Скрипт port-check проверяет на доступность указанные порты на указанных хостах.
Возвращает количество закрытых портов.

Использование:
port-check [-q|-v] host port
port-check [-q|-v] host "port1 .. portN"
port-check [-q|-v] "host1 .. hostN" port
port-check [-q|-v] "host1 .. hostN" "port1 .. portN"



-q, --quiet
Ничего не выводить

-v, --verbose
Выводить т.ж. открытые порты, иначе только закрытые и не доступные хосты

-V, --version
Показать версию

-h, --help
Показать эту справку
Все проще некуда =)

А вот несколько примеров работы скрипта:
$ port-check -v "mail.ru google.com 10.0.0.1 192.168.0.1" "80 443 ssh 21"
mail.ru:80 open
mail.ru:443 CLOSE!!!
mail.ru:ssh CLOSE!!!
mail.ru:21 CLOSE!!!
google.com:80 open
google.com:443 open
google.com:ssh CLOSE!!!
google.com:21 CLOSE!!!
Host 10.0.0.1 unreachable!!!
192.168.0.1:80 open
192.168.0.1:443 CLOSE!!!
192.168.0.1:ssh CLOSE!!!
192.168.0.1:21 open


$ port-check -v "mail.ru google.com 10.0.0.1 192.168.0.1" 80
mail.ru:80 open
google.com:80 open
Host 10.0.0.1 unreachable!!!
192.168.0.1:80 open


$ port-check -v mail.ru "80 443 ssh 21"
mail.ru:80 open
mail.ru:443 CLOSE!!!
mail.ru:ssh CLOSE!!!
mail.ru:21 CLOSE!!!


$ port-check -v 10.0.0.1 "80 443 ssh 21"
Host 10.0.0.1 unreachable!!!


$ port-check -q 10.0.0.1 "80 443 ssh 21"


$ port-check "mail.ru google.com 10.0.0.1 192.168.0.1" "80 443 ssh 21"
mail.ru:443 CLOSE!!!
mail.ru:ssh CLOSE!!!
mail.ru:21 CLOSE!!!
google.com:ssh CLOSE!!!
google.com:21 CLOSE!!!
Host 10.0.0.1 unreachable!!!
192.168.0.1:443 CLOSE!!!
192.168.0.1:ssh CLOSE!!!
Вот и все. Надеюсь все понятно и наглядно.

Скачать port-check можно по этой ссылке. Пользуйтесь на здоровье.

Почти каждая строка в скрипте прокомментирована. Уверен, что даже новичок сможет разобраться, как работает скрипт.
Скрипт писал довольно долго, много тестировал, поэтому версия сразу 1.0 и, скорее всего, финальная. Даже не представляю, что еще в него можно добавить...


Критика/комментарии/мнения/etc с радостью принимаются :)))


понедельник, 16 февраля 2009 г.

Google на подносе или эффективный поиск в google

Иногда приходится видеть как ищут знакомые/друзья/коллеги какую-любо информацию в гугле и удивляюсь, неужели так трудно потратить полчасика на выходных, чтобы изучить возможности поиска в гугле и использовать этот самый поиск куда эффективнее, а, как следствие, значительно меньше тратить времени и усилий на этот самый поиск.
Вот и решил рассказать в этом посте о том как я ищу различную информацию в гугле.
Постараюсь идти от простого к сложному, а в конце приведу несколько полезных примеров.

1. Самое простое

1.1. Чтобы обязательно включить слово в результат, поиска перед ним (словом) нужно поставить знак + (плюс) без пробелов, а вот перед плюсом обязательно должен быть пробел. Т.ж. знак + (плюс) отключает морфологический разбор слова.
Пример:
звук +колокол - в результатах поиска обязательно будут оба слова, т.ж. гугл найдет, "звучит колокол", но не найдет "звук колокола".

1.2. Чтобы обязательно включить словосочетание в результат поиска, его нужно заключить в двойные кавычки ("что ищем"), т.ж. этот вариант отключает морфологический разбор слов в этом словосочетании.
Примеры:
"русификация ICQ" - найдет только это словосочетание, но не найдет "русификация ICQ".
"linsovet.com" - найдет все сайты и их страницы, на которых упоминается адрес сайта linsovet.com

1.3. Что обязательно исключить слово из результата, поиска перед ним (словом) нужно поставить знак - (минус) без пробелов, а вот перед минусом обязательно должен быть пробел.
Пример:
мебель -кухня - надет все, где есть слово мебель, но нет слова кухня.

1.4. Если вы ищите что-либо, но вам нужно чтобы в результатах было одно из каких-то слов, но не было обеих слов сразу, можете использовать оператор логического ИЛИ (OR), т.е. либо то, либо сё.
Пример:
отпуск лондон OR париж - найдет "отпуск в Лондоне", "отпуск в Париже", но не найдет "отпуск в Лондоне, Париже".

1.5. Условия поиска можно группировать, заключаю группируемое условие в круглые скобки (условие).
Пример:
site:rapidshare.com filetype:(zip OR rar OR part OR 7z) photoshop - разберем его в конце поста, где будут приведены примеры запросов.



2. Определения
Бывает такое, что читаешь что-либо и встречаешь новое слово и не знаешь его значения (или старое, но не можешь вспомнить, что оно значит)... Тут на помощь приходит гугл со своим "механизмом" "Определения".
Чтобы найти определение слова или словосочетания нужно выполнить поисковой запрос по правилу: define:слово_или_фраза. Гугль тут же отобразит все определения которые он смог найти, а ищет он много где, в т.ч. и в википедии.
Пример:
define:linux - гугл нам расскажет, что же такое Linux ;)



3. Поиск по диапазону чисел
Чтобы найти что-либо, где есть цифры/числа в определенном диапазоне
достаточно их разделить двумя точками без пробелов (1..5), т.ж. можно
указать единицы измерения, валюту и др. "обозначения" этого диапазона.
Примеры:
1..2 кг рыба
Вилли Мэйз 1950..1960
ноутбук $500..$1000


4. Поиск по типам файлов
Тут достаточно указать расширение, т.е. тип, файла после ключевого слова filetype, т.е. filetype:расширение. Т.ж.
в результатах будет ссылка "В виде HTML", благодаря которой можно
посмотреть содержание файла даже если у тебя нет нужной программы.
Пример:
linux справочник команд filetype:pdf - первая же ссылка как раз то, что нам надо "КРАТКИЙ СПРАВОЧНИК КОМАНД LINUX" в формате PDF.

Вот примеры типов файлов:
Adobe Portable Document Format (pdf)
Adobe PostScript (ps)
Lotus 1-2-3 (wk1, wk2, wk3, wk4, wk5, wki, wks, wku)
Lotus WordPro (lwp)
MacWrite (mw)
Microsoft Excel (xls)
Microsoft PowerPoint (ppt)
Microsoft Word (doc)
Microsoft Works (wks, wps, wdb)
Microsoft Write (wri)
Rich Text Format (rtf)
Shockwave Flash (swf)
Text (ans, txt)


5. Поиск по какому-либо сайту
Бывает ли у вас такое, что нужно найти какую-то информацию на определенном сайте? У меня бывает. Для этого можно воспользоваться механизмом поиска по определенному сайту. Тут все просто, вводим ключевое слово "site:" и сразу за ним адрес сайта, по которому хотим провести поиск.
Примеры:
site:rapidshare.com photoshop - найдет на рапиде все, где упоминается слово photoshop
site:angel2s2.blogspot.com - покажет все страницы на сайте angel2s2.blogspot.com


6. Узнать кто ссылается на мой сайт
Хочешь знать кто на своем сайте поставил ссылки на твой сайт, да и вообще где упоминается адрес твоего сайта? Тогда вводи в строку поиска:
link:blogger.com


7. Поиск в кеше гугла
Этот поиск в отличии от обычного ищет не в интернете, а в своем кеше и найденный текст выделяет желтым цветом на странице. В общем это похоже на поиск на странице функцией поиска самого браузера (обычно это пункт "Найти" в меню "Правка"), но тут поиск идет не на самой странице, а в кеше гугла.
Синтаксис прост: cache:mysite.com/path/page.html что_ищем
Пример:
cache:mail.ru блоги - откроет главную страницу mail.ru и выделит на ней желтым цветом фона все слова "блоги", а вверху будет отображаться дополнительная информация.


8. Похожие страницы
Вы вводите адрес страницы, а гугл вам показывает все другие страницы (с разных сайтов), которые похожие на эту страницу по тематике.
Если ошибся, прошу поправить.
Пример:
related:blogger.com


9. Информация о сайте
Под информацией тут понимается сохраненная в кеше Google версия страницы, страницы, похожие на искомую, ссылающиеся на искомую, все страницы на этом сайте, которые гугл смог выудить и страницы, упоминающие эту ссылку.
Пример:
info:angel2s2.blogspot.com


10. Поиск по заголовкам
Гугл умеет ограничивать поиск по заголовкам, т.е. по тому, что написано в заголовке браузера, когда вы находиться на той или иной странице.
Есть 2 типа запроса: allintitle и intitle. Разница в том, что первый ищет все слова в заголовке, а второй первое слово в заголовке, а остальные любом месте (в заголовке или тексте страницы). Обратите внимание, что в первом случае должен быть проблем после двоеточия (:), а во втором - его быть не должно.
Примеры:
allintitle: блог линукс
intitle:блог линукс


11. Поиск по URL'у
Аналогичен предыдущему, но поиск ведется по строке URL'а.
Примеры:
allinurl: blog linux
inurl:blog linux


12. Калькулятор & конвертер
Тут все просто, вводим формулу или запрос и получаем результат.

Примеры:
3.5 EUR в RUB
3.5 USD в RUB по курсу ЦБ российская валюта в украинских деньгах
3.2 доллара/галлон в рублях/литр
5 российских рублей в валюте Великобритании
5 фунтов стерлингов в рублях по курсу ЦБ
Сколько столовых ложек в стакане
160 лошадиных сил * минуту в калориях

В калькуляторе поддерживаются следующие математические выражения:

Операция
Описание
Пример
+
сложение
3+44
-
вычитание
13-5
*
умножение
7*8
/
деление
12/3
^
возведение в степень
8^2
%
модуль (поиск полного числа после деления без остатка)8%7
chooseОзначает что-то вроде того: “X choose Y” определяет количество способов выбрать набор элементов Y из набора элементов X
18 choose 4
корень извычисляет энный корень из числа5 корень из 32, кв. корень из 16
% от
“X % от Y” вычисляет, сколько будет X процентов от Y20% от 150
sin, cos,
т.д.
тригонометрические функции (числа - радианы)sin(pi/3),
tan(45 degrees)
ln
натуральный логарифмln(17)
log
логарифм base 10 log(1,000)
!
факториал5!



В общем в гугловом калькуляторе можно использовать почти все возможные формулы и единицы измерения (конвертирование).



Примеры:
Начнем с простого варианта и будем его постепенно усложнять и в то же время выкидывать из поиска не нужные результаты (мусор). Зачем? Так вы сможете лучше понять, как нужно создавать запросы.

Найдем программу PhotoShop на rapidshare.com:
1. Первое что приходит в голову
rapidshare.com photoshop
да, тут мы попали сразу по адресу, но кол-во результатов 12 200 000. Т.к. это просто пример, то будем оптимизировать дальше.

2. Мы же знаем, что файл должен лежать на сайте rapidshare.com, а значит можно ограничить поиск по этому сайту:
site:rapidshare.com photoshop
Уже мусора значительно меньше, 206 результатов. Давайте еще сильнее подчистим.

3. Нам заранее известно, что файл будет с одним из расширений zip, rar, part, 7z. Тогда почему бы не выкинуть из результатов остальное?
site:rapidshare.com filetype:(zip OR rar OR part OR 7z) photoshop
Результатов стало еще меньше - 128, а значит меньше мусора.

Вот таким образом можно значительно выкинуть мусор из результатов поиска.


Что-то голова уже не соображает, не знаю чего бы еще придумать для примера. Извините :(




Полезные ссылки:
Функции поиска Google в Интернете - хелп по поиску
Основные сведения о поиске Google - еще один хелп по поиску
Cheat Sheet - шапаргалка от гугла по поиску (на инглише)
Advanced Operators - дополнительные операторы поиска (на инглише)

Сервисы GOOGLE - перечень сервисов гугла
Справочные центры Google - тут выложены ссылки на справочники по различным сервисам гугла

Как искать вебки и подглядывать через IP камеры по всему миру - автор этого блога рассказал о том, как искать через гугл общедоступные web-камеры (и даже, которые просто не закрыты по глупости/не знанию)

[]

четверг, 12 февраля 2009 г.

Узнать какой дистрибутив GNU/Linux из терминала

Как-то мне постучался в аську один знакомый и спросил как поставить программу в линуксе (он купил ноут, а на нем уже линь стоял). Я долго тупил, но решение нашел. Но было бы куда проще дать человеку совет зная какая сборка линукса у него установлена.

Информация о версии линукса хранится в файле(-ах) /etc/*release*. В Ubuntu это /etc/lsb-release. В RedHat, на сколько я помню, 2 файла, поэтому я обрамил звездочками слово release.

Чтобы узнать что же за релиз, достаточно прочитать этот файл(-ы):
$ cat /etc/*release*
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=8.04
DISTRIB_CODENAME=hardy
DISTRIB_DESCRIPTION="Ubuntu 8.04.1"
Думаю тут и так все понятно и комментировать нечего.



Если вы пишите скрипт, который должен что-либо сделать в зависимости от сборки линукса, то можете сделать это так (любой из вариантов на вкус и цвет):
$ cat /etc/*release* | grep DESCRIPTION | sed 's/^.*=//;s/"//g'
$ cat /etc/*release* | grep DESCRIPTION | sed 's/^.*=//' | tr -d '"'
$ cat /etc/*release* | awk -F= '/DESCRIPTION/{print $2}' | tr -d '"'
Теоретически это должно работать в любой сборке линукса.


Для убунту (и наверное для всех дистрибутивов собранных на Debian, проверить нет возможности) можно использовать команду:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 8.04.1
Release: 8.04
Codename: hardy


Чтобы вывести только поле "Description":
$ lsb_release -d | cut -f2
Ubuntu 8.04.1




UPD#1: Изменил тему, т.к. так более правильно :)
UPD#2: Из обсуждения данного поста на сайте ЛинСовет выяснилось, что lsb_release т.ж. есть и в RedHat подобный дистрибутивах. Так чтож "lsb_release -d | cut -f2" самый надежный метод :)
А вот
$ cat /etc/*release* | grep DESCRIPTION | sed 's/^.*=//;s/"//g'
$ cat /etc/*release* | grep DESCRIPTION | sed 's/^.*=//' | tr -d '"'
$ cat /etc/*release* | awk -F= '/DESCRIPTION/{print $2}' | tr -d '"'
на федоре, например, не прокатит, нужно юзать
$ cat /etc/*release*
т.к. тут просто строка в файле. Спасибо hubbitus'у =)
UPD#3: Все же вышел для меня жестокий облом с этой темой. Из обсуждений на сайте ЛинСовет выяснилось еще кое-что интересное:
$ cat /etc/issue
Ubuntu 8.04.1 \n \l
alexu утверждает что это работает во всех дистрибутивах Linux. Проверил на нескольких дистрах, которые мне доступны, + попросил нескольких знакомых, все подтвердилось. Для себя я это взял как оружее номер один, для выяснения дистра.
Ну а в *BSD системах - /etc/motd.