Rsync и двоеточие

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

~> rsync -av 2015-07-31_01:32:46/ newdir/
ssh: Could not resolve hostname 2015-07-31_01: hostname nor servname provided, or not known
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: unexplained error (code 255) at io.c(226) [Receiver=3.1.1]

Все, что находится до двоеточия считается именем или адресом хоста и не резолвится.

Решить проблему можно тремя способами:

— указать полный путь к файлу или каталогу;
— добавить перед файлом или каталогом точку-слеш (./);
— добавить перед файлом или каталогом в одинарных кавычках pwd и слеш (`pwd`/).

~> rsync -av /home/username/2015-07-31_01:32:46/ newdir/
~> rsync -av ./2015-07-31_01:32:46/ newdir/
~> rsync -av `pwd`/2015-07-31_01:32:46/ newdir/

То же самое относится и к scp.


Теги: , , , , , ,

Отправка письма из 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

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

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

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

С Новым Годом!

Ну вы в курсе, да? Всего вам наилучшего, товарищи *NIX’оиды =)

С Новым Годом!


Теги: , , , ,

Видеозахват экрана в FreeBSD

Мне пока что ни разу не понадобился захват экрана в видео, но вдруг понадобится, пусть скрипт будет, есть не просит 🙂

Для начала нужно собрать порт с активной опцией X11GRAB:

~> make -C /usr/ports/multimedia/ffmpeg/ config install clean

Сам скрипт захвата видео:

#!/bin/sh
name="$(date +%F-%T)"
# Desktop
#ffmpeg -f oss -i /dev/dsp -acodec ac3 -ab 192k -f x11grab -s 1440x900 -r 30 -isync -i :0.0 -sameq -y -vcodec mpeg4 ~/desktop.${name}.mp4
#ffmpeg -f oss -i /dev/dsp -acodec ac3 -ab 128k -f x11grab -s 1440x900 -r 30 -g 120 -isync -i :0.0 -s 800x500 -sameq -y ~/desktop.${name}.mpg

#only video
ffmpeg -f x11grab -s 1440x900 -r 30 -g 120 -isync -i :0.0 -s 800x500 -sameq -y ~/desktop.${name}.mpeg

#video and sound
#ffmpeg -f oss -i /dev/dsp -acodec ac3 -ab 128k -f x11grab -s 1440x900 -r 30 -g 120 -isync -i :0.0 -s 800x500 -sameq -y ~/desktop.${name}.mpeg

# Webcam (not work - error open /dev/video0)
#ffmpeg -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 ~/desktop.${name}.mp4

via fidaj

похожий софт: recordmydesktop


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

Apple and iPhone vs Microsoft

http://russia.ru/video/zs_apple/

Петр Диденко жжот напалмом =)

— …решил пару мелких проблем, немного кисточкой поработал, – и все. При этом за кадром осталось то, что система естественно гораздо менее совершенна, чем Microsoft просто потому что разрабатывалась на пару десятков лет меньше.

Если “и все”, то почему Microsoft не может сделать таких же пару движений со своим продуктом, чтобы он перестал быть таким глючным и уязвимым? Может им не хватает такого человека, как Джобс? 😉

И вообще, хотелось бы поделиться с Петром замечательными ресурсами, называются они WikiPedia& Google, там можно найти и прочесть об истории семейства операционных систем UNIX, берущих свое начало с 1969 года (тогда как Microsoft основана в 1975 году), а также об историях постоянного воровства компанией Microsoft – всего, от идей до технических спецификаций.
Microsoft Surface vs Apple Rosie and Apple Vision – Youtube1
Microsoft Vista vs Apple Mac OS X – DeepApplei-ekb(+видео по ссылке ниже)
Microsoft Xbox vs SONY PlayStation 3 (Cell CPU) – Microsoft vs SONY.

Саша Пацай прав по поводу настройки интернета через телефон – на Виндовс это п-ц. Без пачки мануалов и гугления я не мог его настроить и не думаю, что сейчас смогу выпустить ноут в интернет без повторения гребли с настройками. У меня HTC Touch на Windows Mobile 6 Pro и  он работает (не виснет) только лишь потому, что я стараюсь не использовать его, кроме как для SMS и звонков 🙂

Ведущий тоже жжот напалмом, не прочитал мануал о телефоне и получил проблему на свою голову. Хотя, как пользователь других ОС я все-таки считаю недостатком, что нельзя напрямую стянуть с телефона файлы. Это архинеудобно по одной простой причине – нельзя слить необходимые данные на ПК с другой ОС или чужой ПК Apple БЕЗ настройки синхронизации. Маразм, да.

А вот по поводу русификации – я согласен с ведущим, ситуация говно 🙁

Почему так мало айфонов было продано на российском рынке? Да потому, что те, кто хотел купить айфон – уже купили его у серых дилеров 🙂

Я уверен, если бы белые поставщики или ОпСоСы имели желание и возможность продавать iPhone официально, то и официальная статистика более правильно отражала бы действительность.

То же самое касается и поставок компьютеров Apple в Россию и Украину.

И вообще, я уверен, что счастье Microsoft состоит лишь в том, что Mac OS X не так легкодоступна, как Windows (да-да, я имею в виду пиратов). Иначе MS камнем валилась бы на дно, как сейчас валится IE 5-6-7-8, потому что более менее продвинутые пользователи массово переходят на Chrome/WebKit/Firefox/Opera.

🙂


Теги: , , , , , ,

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

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

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}'

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

Интерактивное наблюдение

Все *nix’оиды знают команду top и аналоги – htop, mytop и т.д.  Аналогичны эти программы в своем принципе работы – постоянном (интерактивном) обновлении информации на экране.

А если нужно постоянно выводить на экран результат работы какой-то команлы или команд? Да еще и в удобном виде – с обновлением (очисткой) экрана. Как быть?

Способ #1

watch (для FreeBSD его родственник – gnu-watch)

Команда (gnu-)watch позволяет многократно запускать заданную команду или команды, выводя результат на экран. Примеры:

gnu-watch --differences=cumulative ls –la

Данная команда позволяет следить за файлами, при этом у измененных файлов будет подсвечен размер. Если не указывать cumulative, то изменение на экране будет подсвечено только один раз, при первом обнаруженном изменении во время обновления.
Я люблю наблюдать, как идет процесс сборки рейда:

gnu-watch -t gmirror status
Способ #2

работает везде при наличии bash

bash -c 'while true; do echo '^L'; gmirror status; echo; date; sleep 2; done'
# или так
bash -c 'while :; do clear; gmirror status; echo; date; sleep 2; done'

^L – в данном случае это !один! символ “Control-L”. Если вы просто нажмете эту комбинацию, то ничего не произойдет, точнее – вы очистите экран. Чтобы напечатался символ нужно прибегнуть к хитрости:

CTRL+V+L – о таком способе ввода непечатаемых символов я уже упоминал в этой статье.

Может пригодится 😉


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