Отправка письма из 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
Плюсы: письмо понимается большинством почтовых клиентов
Читать остальную часть заметки »Теги: attach, attachement, FreeBSD, linux, mail, shell, ssh, unix, вложение, консоль
csh in single mode on FreeBSD
Если вы любите оболочку csh и редактор ee (Easy Editor), возможно вы сталкивались со следующей проблемой. При загрузке в однопользовательском режиме (4 – single mode), требуется ввести путь к оболочке, по умолчанию это /bin/sh. Если вы вводите /bin/csh – он ругается на невозможность открыть /etc/termcap. Когда вы пытаетесь редактировать в редакторе ee какой-нибудь файл, текст на консоли выглядит как сплошное месиво.
Красная таблетка
Лечится это очень легко. Достаточно указать правильный тип терминала:
setenv TERM cons25
Все, теперь, даже несмотря на то, что терминал не подхватил настройки и украшательства из файла .cshrc, csh жив и вполне юзабелен.
Теги: console, csh, ee, env, FreeBSD, setenv, shell, single, ssh, TERM, консоль, сингл, терминал
Оповещение о логине в ssh
В блоге itblog.suпопалась заметка об оповещении по почте о входе в консоль.
echo ‘ALERT – Root Shell Access on:’ `date` `who` | mail -s “Alert: Root Access from `who | awk ‘{print $6}’`” user@dom.dom
Вспомнил, что у меня давно используется такая штука. Ну, мало ли, вдруг найдется мегахацкер, который взломает сервер =). Только у меня немного не так:
echo “ALERT – Root Shell Access on: `date; echo; who | bwtail -1`” | mail -s “Root From: `who | bwtail -1`” root@domain.com
who может вывалить пакаван данных о логинах, но они мне не нужны, т.к. замысел в оповещении о последнем логине, поэтому я отрезаю одну строку с помощью tail.
Что такое bwtail? =) Это черно-белая версия tail (по сути просто хардлинк на tail), который у меня сделан цветным:
# from .cshrc
alias tail /root/bin/coloredtail.sh
Вот так:
~> cat /root/bin/coloredtail.sh
#!/bin/sh/usr/bin/tail $@ | /usr/local/bin/colorize
Теги: alert, bwtail, console, FreeBSD, itblog, itblog.su, mail, root, ssh, tail, who, консоль, оповещение, рут, хардлинк
Чистка файлов от iframe вставок
По мотивам предыдущей заметки =)
Итак, если ваш сайт взломан или подобран пароль к вашему фтп-аккаунту и в некоторых (или во всех) файлах присутствует вражеский код iframe – самое время заняться чисткой.
Обнаружение противника
Для начала вражеский код нужно обнаружить. Самый безопасный и правильный подход – найти подозрительные участки кода в зараженных файлах и детерминировать их как вредоносные.
find . -name “*.php*” -or -name “*.*htm*” -exec grep “iframe” {} \; -print | less
В результате вы увидите код ифреймов и пути к зараженным файлам:
<iframe src=”site.ru” width=”0″></iframe>
/root/temp/3/1.htm
<iframe src=”site.ru” width=”0″></iframe>
/root/temp/3/1.shtml
<iframe src=”site.ru” width=”0″></iframe>
/root/temp/3/1.html
Если не хотите видеть путь к файлам (в принципе, на данном этапе он и не нужен), уберите ключ -print.
Читать остальную часть заметки »
Теги: console, find, FreeBSD, grep, iframe, sed, shell, ssh, взлом, вирусы, трояны, файлы, фтп, хостинг, чистка кода
Настраиваемое приветствие в консоли
Каждый раз, когда вы логинитесь по ssh на сервер или компьютер, вы видите унылое говно одну и ту же картину:
Last login: Mon Aug 17 15:02:25 2009 from ip.com
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.FreeBSD x.y-RELEASE-pZ (KERNEL) #A: Thu Apr 17 11:21:34 EDT 2008
Welcome to FreeBSD!
For information on the web, visit us at www.pcbsd.org
“man tuning” gives some tips how to tune performance of your FreeBSD system.
— David Scheidt <dscheidt@tumbolia.com>
Т.е., информацию Last login, копирайт, содержимое /etc/motd (версию системы) и какой-нибудь fortune. Скучно? Скучно!
Кастрация Кастомизация
“Проснись, Нео!”

Читать остальную часть заметки »
Теги: bash, bashrc, console, csh, cshrc, customization, fortune, FreeBSD, hushlogin, linux, login, logout, Matrix, motd, shell, ssh, tcsh, unix, Welcome, кастомизация, консоль, Матрица, Нео
В поисках точки G
Знакi
Есть определенная группа символов, которые называются непечатаемые символы, но которые в принципе можно напечатать с клавиатуры, увидеть и даже услышать. А если у вас есть замечательный редактор Notepad++, то вы можете видеть эти символы в красивом обозначении. особо большой пользы от этих символов нет, но есть скрытые таланты.
Точка G
Один из самых интересных непечатаемых символов – BEL. Он же – ^G. Но как набрать его с клавиатуры? Очень просто. На системе Windows нужно просто нажать CTRL+G в командной строке. В *NIX-системе (Linux/MacOS X/FreeBSD/etc.): CTRL+V+G.
А что он делает? BEL – от слова “bell” – звонок. Печать этого символа в консоль побуждает систему издать системным динамиком “пик”.
Чтобы пикнуть в системе Windows:
echo ^G
*NIX в текущей консоли (не важно, удаленный сервер/компьютер или тот, за которым вы сидите или вы вообще в PuTTy на Виндовс):
echo ^G
Если вы залогинены на удаленный компьютер, пикнуть системным динамиком того компьютера можно так (FreeBSD):
echo ^G > /dev/console
Вместо ^G можно использовать \a:
printf "\a"
Отключить пикание системным динамиком в FreeBSD можно так:
echo “hw.syscons.bell=0” >> /etc/sysctl.conf
Возбуждение. Пробуждение.
Читать остальную часть заметки »Теги: alarm, bat, bel, bell, cmd, console, cron, crontab, FreeBSD, G, linux, Mac OS X, notepadpp, shell, ssh, tabs, Windows, батник, будильник, Виндовс, задача, командная строка, крон, непечатаемый, непечатаемый символ, точка G


