Обновить все Ryby gem’ы

Обновить сразу все установленные gem’ы одной строчкой:

gem update `gem list | cut -d ' ' -f 1`

Теги: , , , ,

WYSINWYC — What you see is not what you copy

В сети появилось несколько сообщений об интересной уязвимости: при копировании текста с веб-сайта можно скопировать скрытый текст, который может выполнить что угодно. При вставке текста вы его можете увидеть, но не сможете отменить его исполнение. Примечательно, что при выделении строки тройным кликом, строка со скрытым текстом не выделяется по-нормальному, выделяется только кусок строки. В общем, доверяй, да проверяй, самым надежным все же остается ручной ввод команд.


Теги: , , , , , ,

Единорог, какаяющий радужками

unicornlike

Хотите радугу в консоли? Нет ничего проще:

~> gem install lolcat
~> cd /usr/ports/*/cowsay && make install clean
~> rehash
~> fortune | cowsay -f turtle | lolcat

Конечно, если у вас вдруг не установлен Ruby и gem, то придется чуть дольше повозиться.

Цитата о шоколаде как раз в тему. Розетка отменила мои заказы, сделал заказы в Соколе, сэкономил гривен 40, купил себе шоколадку Classic Wheels =) Мелочь, а приятно))


Теги: , , , , , , , , , ,

Colored less, grep and ls

В одной старой заметке я рассказывал, как раскрасить вывод ls в tcsh (csh). Все работает хорошо до тех пор, пока вы не перенаправите вывод команды ls через пайп | другой команде, например less.

Раскрашенный вывод содержит специальные Escape-последовательности, которые обозначают начало и конец блока текста, который нужно, например, выделить, раскрасить или подчеркнуть. Если передать такой текст команде, которая его не понимает (или не отображает без специального ключа), она выведет на экран или в файл все эти добавленные символы.

Раскрашиваем less и more (colored less and more)

less и more поддерживают отображение раскрашенного вывода, но чтобы они его отображали корректно, т.е. в раскрашенном виде, нужен ключ –R:

<command> | less -R
<command | more -R

Можно добавить в файл настроек .cshrc:

alias less less -R

less (он же more*) еще умеет отображать man в раскрашенном виде (по умолчанию, там есть раскрашивание). man использует more для отображения вывода:

     -P pager  Specify which pager to use.  By default, man uses ``more -s''.
               This option overrides the PAGER environment variable.

* убедитесь сами, less и more – один и тот же файл:

ls -laio /usr/bin/less /usr/bin/more

Для того, чтобы man был раскрашен в цвета, добавьте в .cshrc строки:

Читать остальную часть заметки »

Теги: , , , , , , , , , , , , , , , , , , , , ,

Отправка письма из shell

Как отправить письмо с вложением из оболочки UNIX? Есть несколько вариантов, я рассмотрю самые простые, – системными средствами и сторонним ПО.

mail + uuencode

Почти наверняка самый рабочий способ на любой системе.

~> ( echo "body text message" ; echo ; cat file.txt | uuencode file.txt ) | mail -s 'Subject' to@domain.tld

в почтовый ящик придет сообщение в виде:

To: to@domain.tld
Subject: Subject
Message-Id: <20111205165235.0DB932ECAC@dom.tld>
Date: Mon,  5 Dec 2011 16:52:35 +0000 (UTC)
From: sender@domain.tld (sender)

body text message

begin 644 file.txt
M+W-B:6XO;61M9G,@+7,@-#`Y-DT@+6D@,3`R-"`M=R!M>7-Q;#IM>7-Q;"`M
M<"`W-S<@;60P("]M>7-Q;%]T;7`*(R,M+2TM+2TC(PT*26YC;W)R96-T(&EN
...
M;F1E>"YP:'`[(&-D("T[(&QS("UL82`D:2]I;F1E>"YP:'`[(&1O;F4*(R,M
)+2TM+2TC(PH*
`
end

Плюсы: универсальный способ, не требует установки дополнительного ПО

Минусы: не все почтовые клиенты понимают этот формат и письмо возможно придется раскодировывать. Если вы пользуетесь почтой Гугла (GMail) – вам повезло, такой формат он понимает и файл можно будет скачать как обычный прикрепленный файл.

mail + base64
~> cat file.txt | base64 | mail -s 'Subject' to@dom.tld
~> cat file.txt | uuencode -m file.txt | mail -s 'Subj' to@dom.tld

Плюсы: файл в письме отправится

Минусы: письмо наверняка будет не понято почтовым клиентом и вложение будет просто выведено в виде текста, который нужно дополнительно распаковывать. GMail такие письма не понимает.

sendmail
~> ( cat header ; cat ssh.txt | base64 ) | /usr/sbin/sendmail -t
~> ( cat header ; cat ssh.txt | uuencode -m ssh.txt ) | /usr/sbin/sendmail -t
~>
~> ( cat header ; cat ssh.txt | uuencode ssh.txt ) | /usr/sbin/sendmail -t
# это не правильно, но GMail понимает и такой формат

В файл header предварительно внесены необходимые заголовки:

~> cat header
Subject: With attachment
From: me@dom.tld
To: to@domain.tld
Content-Type: text/plain; charset=UTF-8
Content-Disposition: attachment; filename="file.txt"
Content-Transfer-Encoding: base64

Здесь мы явно указываем кодировку файла (UTF-8), имя файла, которое будет показываться в письме (может не совпадать с именем файла, который мы кодируем) и метод кодирования (base64). В третьем примере файл будет закодирован в uuencode, это тоже может вызвать сложности у почтовых клиентов. uuencode –m, в отличие от base64, помечает начало и конец закодированных данных, так же, как и просто uuencode. В первом случае начало данных будет помечено строкой:

begin-base64 644 file.txt

конец:

====

во втором случае:

begin 644 file.txt

конец:

end

Плюсы: письмо понимается большинством почтовых клиентов

Читать остальную часть заметки »

Теги: , , , , , , , , ,

rsync — памятка

%> rsync -av user@IP:/remote/path/ /local/path2
# так скопируются файлы из /remote/path/ в /local/path2
%> rsync -av user@IP:/remote/path /local/path2
# а так - в /local/path2 будет каталог path

Ключи:

  • -a – "архивный режим" – сохранение атрибутов файлов (владелец, права и т.п.)
  • -z – компрессия (сжатие)
  • -v – вывод подробностей
  • —progress – показывать сколько осталось времени на передачу файла
  • -H – сохранить хардлинки
  • —exclude – исключить файлы (не передаваать), например, исключить каталог и файлы определенного типа:
    —exclude ‘- cgi-bin/*’ —exclude ‘*.tgz’

Теги: , , , , ,

Поиск в файлах

Вопрос о том, как найти подстроку или строку в файле, поднимается часто и найти на него ответ довольно просто. Так, например, можно искать сторонний код во взломанных файлах:

find . -name "*.*htm*" -exec grep -i "iframe" {} \; -print
find . -name "*.*htm*" -exec grep -i "iframe" '{}' \; -print
find /home -name '*.htm*' -exec grep -H 'fromCharCode' \{\} \;

Так можно удалить из очереди postfix письма с определенным текстом (спам-рассылку, например):

find /var/spool/postfix/deferred/ -name "*" -exec grep -i "SOMESPAM" {} \; |\
awk -F / '{print $7}' | awk '{print $1}' | postsuper -d -

А как найти файлы, в которых определенная строка не встречается?

Можно так:

find . -name "*.html" -print0 | xargs -0 grep -c "string" | grep ":0" | cut -d : -f 1

где “string” – строка, которой в файлах нет.

cut просто отрезает имя файла от количества нулевых вхождений подстроки “string”, если кому-то по душе awk, используйте в пайпе:

awk -F : '{print $1}'

Теги: , , , , , , , , ,