<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-31402409</id><updated>2011-04-21T16:41:24.565-07:00</updated><category term='linux'/><category term='feodora'/><category term='Ubiquam'/><category term='Skylink'/><category term='Bluetooth'/><category term='Sky-Turbo'/><category term='Kubuntu'/><category term='интернет'/><title type='text'>Bookmarks-on-tranquilizers</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://connection-refused.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://connection-refused.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>...</name><uri>http://www.blogger.com/profile/13426531755795883117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-31402409.post-5402467291770397059</id><published>2007-05-07T17:29:00.000-07:00</published><updated>2007-05-07T17:33:11.899-07:00</updated><title type='text'>Переезд</title><content type='html'>Переезд!!&lt;br /&gt;&lt;br /&gt;Отныне блог будет доступен по более осмысленному адресу  http://alexey.sveshnikov.ru/blog, RSS здесь: &lt;a href="http://alexey.sveshnikov.ru/blog/feed/atom"&gt;http://alexey.sveshnikov.ru/blog/feed/atom&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Обновите ваши закладки :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31402409-5402467291770397059?l=connection-refused.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connection-refused.blogspot.com/feeds/5402467291770397059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31402409&amp;postID=5402467291770397059' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/5402467291770397059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/5402467291770397059'/><link rel='alternate' type='text/html' href='http://connection-refused.blogspot.com/2007/05/blog-post_07.html' title='Переезд'/><author><name>...</name><uri>http://www.blogger.com/profile/13426531755795883117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31402409.post-5118033174547908517</id><published>2007-05-07T17:19:00.000-07:00</published><updated>2007-05-07T17:29:44.857-07:00</updated><title type='text'>Новости про процесс Ганса Рейзера</title><content type='html'>В Wired появилась &lt;a href="http://www.wired.com/politics/law/news/2007/05/reiser"&gt;статья о процессе Ганса Рейзера&lt;/a&gt;. Расследование продолжается, но история в результате все больше запутывается.&lt;br /&gt;&lt;br /&gt;Появился еще один подозреваемый, Sean Sturgeon. Это человек, с которым Ганс был хорошо знаком. Он признался в убийстве девяти человек.&lt;br /&gt;&lt;br /&gt;Цитирую:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Sturgeon's answers in the 40-minute interview were frequently evasive[уклончивые], and he declined to answer specific questions about the alleged killings. "I have offered to be judged for my crimes," he said at one point. "I take responsibility for what I have done."&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Позже Sturgeon (Осетр по-русски, кстати) заявляет, что к убийству &lt;a href="http://www.ninareiser.com/"&gt;Нины Рейзер&lt;/a&gt; он не причатен и что готов пройти тест на детекторе лжи.&lt;br /&gt;&lt;br /&gt;Вобщем, до развязки этой истории еще очень далеко. Досадно это. Я нахожусь на другом конце Земли и поэтому мне приходится оперировать больше эмоциями, так вот, хотя в целом для Ганса дела не очень хорошо обстоят, хочется верить, что он этого не делал. Все-таки злой гений это больше персонаж из диснеевских мультиков, а он по ходу представляется именно таким.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;И, опять цитирую, с чего все началось:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Nina Reiser was last seen Sept. 3 at the home Hans Reiser shared with his mother in the Montclair area of Oakland, California. Her van turned up five days later, abandoned on a quiet residential street two miles from Reiser's home. Though no body has been found, Reiser was arrested Oct. 10 after the Oakland Police Department found small drops of blood in his house and in his Honda CRX. DNA testing tied the blood to Nina Reiser.&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31402409-5118033174547908517?l=connection-refused.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connection-refused.blogspot.com/feeds/5118033174547908517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31402409&amp;postID=5118033174547908517' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/5118033174547908517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/5118033174547908517'/><link rel='alternate' type='text/html' href='http://connection-refused.blogspot.com/2007/05/blog-post.html' title='Новости про процесс Ганса Рейзера'/><author><name>...</name><uri>http://www.blogger.com/profile/13426531755795883117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31402409.post-8247360849972454565</id><published>2007-03-07T11:26:00.000-08:00</published><updated>2007-03-07T11:43:09.583-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='feodora'/><title type='text'>Feodora Core</title><content type='html'>Недавно linux на моем ноутбуке упал. Зря я доверился ext2: корневая система рухнула после грубого выключения системы (причем сразу же после загрузки). Это стало поводом для продолжения экспериментов, на этот раз подопытным кроликом стала Feodora Core 6.&lt;br /&gt;После Kubuntu новых впечатлений - масса!!&lt;br /&gt;Во-первых, это GNOME, c которым я раньше особо и не сталкивался - я, конечно, его снесу через какое-то время, но что-то в нем все-таки есть, по крайней мере я начинаю понимать людей, которые с ним работают.&lt;br /&gt;Во-вторых, все очень быстро. Пока не понимаю, как такое может быть, но по ощущениям Open Office грузится в полтора-два раза быстрее.&lt;br /&gt;В-третьих, я еще не гуру линукса, для меня довольно важное значение имеет автоопределние оборудования и дефолтная конфигурация: BeryL из коробки - это клево!! И потом, наконец-то заработала функция перехода в спящий режим при закрывании крышки ноутбука!&lt;br /&gt;&lt;br /&gt;Но есть и минусы: yum после apt-get - штука очень тормозная. Может секунд 20 выполнять поисковый запрос и еще минуту - проверять зависимости. И еще, похоже, что тулзу для понижения тактовой частоты процессора придется искать самостоятельно - при полной зарядке аккумулятора прогнозируемое время работы - полтора часа, что в полтора раза меньше времени работы из-под ubuntu.&lt;br /&gt;&lt;br /&gt;Эх!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31402409-8247360849972454565?l=connection-refused.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connection-refused.blogspot.com/feeds/8247360849972454565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31402409&amp;postID=8247360849972454565' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/8247360849972454565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/8247360849972454565'/><link rel='alternate' type='text/html' href='http://connection-refused.blogspot.com/2007/03/feodora-core.html' title='Feodora Core'/><author><name>...</name><uri>http://www.blogger.com/profile/13426531755795883117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31402409.post-3815420312525033242</id><published>2007-01-02T05:13:00.000-08:00</published><updated>2007-01-02T05:35:37.655-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sky-Turbo'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubiquam'/><category scheme='http://www.blogger.com/atom/ns#' term='интернет'/><category scheme='http://www.blogger.com/atom/ns#' term='Skylink'/><category scheme='http://www.blogger.com/atom/ns#' term='Kubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='Bluetooth'/><title type='text'>Интернет от skylink в Linux (Kubuntu + Ubiquam U-300 через bluetooth)</title><content type='html'>В Linux просто замечательная поддержка bluetooth - интернет у меня заработал в течении 15 минут. Больше времени потребовалось на то, чтобы решиться :)&lt;br /&gt;&lt;br /&gt;А команды будет всего три:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;root@dainichi-laptop:~# sdptool search DUN&lt;br /&gt;Inquiring ...&lt;br /&gt;Searching for DUN on 00:16:39:ED:81:00 ...&lt;br /&gt;Service Name: QC Dial-up Networking&lt;br /&gt;Service RecHandle: 0x10000&lt;br /&gt;Service Class ID List:&lt;br /&gt;"Dialup Networking" (0x1103)&lt;br /&gt;Protocol Descriptor List:&lt;br /&gt;"L2CAP" (0x0100)&lt;br /&gt;"RFCOMM" (0x0003)&lt;br /&gt; Channel: 8&lt;br /&gt;Language Base Attr List:&lt;br /&gt;code_ISO639: 0x656e&lt;br /&gt;encoding:    0x6a&lt;br /&gt;base_offset: 0x100&lt;br /&gt;Profile Descriptor List:&lt;br /&gt;"Dialup Networking" (0x1103)&lt;br /&gt; Version: 0x0100&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Отсюда узнаем, что существует некое устройство с MAC 00:16:39:ED:81:00, которое предоставляет сервис доступа к сети на канале 8. Далее создаем rfcomm устройство - COM порт, работающий через bluetooth:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;root@dainichi-laptop:~# rfcomm bind 0 00:16:39:ED:81:00 8&lt;br /&gt;root@dainichi-laptop:~# dmesg | tail&lt;br /&gt;[17179616.448000] Bluetooth: L2CAP socket layer initialized&lt;br /&gt;[17179616.464000] Bluetooth: RFCOMM socket layer initialized&lt;br /&gt;[17179616.464000] Bluetooth: RFCOMM TTY layer initialized&lt;br /&gt;[17179616.464000] Bluetooth: RFCOMM ver 1.7&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Если команда rfcomm ничего не вывела на STDOUT, значит, все отлично и можно приступать к установлению PPP соединения. Я это сделал так:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;root@dainichi-laptop:~# kppp&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Уже в kppp добавил модем (устройство: /dev/rfcomm0; скорость: 115200; управление потоком: hardware), указал телефон (#777), аутентификацию (PAP-CHAP), и логин/пароль  (mobile/internet).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Собственно, с интернетом разобрались, напоследок немного увлекательнейших манов: sdptool, dund, hcitool, l2ping, rfcomm :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31402409-3815420312525033242?l=connection-refused.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connection-refused.blogspot.com/feeds/3815420312525033242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31402409&amp;postID=3815420312525033242' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/3815420312525033242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/3815420312525033242'/><link rel='alternate' type='text/html' href='http://connection-refused.blogspot.com/2007/01/skylink-linux-kubuntu-ubiquam-u-300.html' title='Интернет от skylink в Linux (Kubuntu + Ubiquam U-300 через bluetooth)'/><author><name>...</name><uri>http://www.blogger.com/profile/13426531755795883117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31402409.post-116690842055965869</id><published>2006-12-23T12:55:00.000-08:00</published><updated>2006-12-23T13:15:06.536-08:00</updated><title type='text'>Hint [10]</title><content type='html'>[10] Все мы с пеленок знаем, что &amp; значит запустить программу в фоновом режиме, но лично у меня случаи, когда такая форма запуска является оправданной встречаются редко. Хотя недавно я "открыл для себя" один из классов таких случаев - какие-либо действия с сетью, которые сами по себе не ресурсоемки, но могут выполняться долго вследствие больших таймаутов. &lt;br /&gt;&lt;br /&gt;Вот так я проверяю список хвостов на "пингуемость":&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cat proxies | (IFS=":\n"; while read ip port; do (if ping -w 1 -c 1 -q $ip&gt;/dev/null; then echo "$ip:$port"; else echo "bad: $ip:$port"; fi)&amp; done;) | tee proxies_pingable&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;В данном случае я запускаю в фоне сабшелл (if ping -w 1 -c 1 -q $ip&gt;/dev/null; then echo "$ip:$port"; else echo "bad: $ip:$port"; fi), потому скрипт приступает к пингу следующего хоста, не дожидаясь, когда завершится проверка предыдущего. Выигрыш по времени пропорционален количеству хостов - если их 100, то практически стократный!&lt;br /&gt;Правда, нужно быть аккуратным - если в списке 10 тысяч хостов, то это будет уже больше похоже на DoS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31402409-116690842055965869?l=connection-refused.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connection-refused.blogspot.com/feeds/116690842055965869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31402409&amp;postID=116690842055965869' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/116690842055965869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/116690842055965869'/><link rel='alternate' type='text/html' href='http://connection-refused.blogspot.com/2006/12/hint-10.html' title='Hint [10]'/><author><name>...</name><uri>http://www.blogger.com/profile/13426531755795883117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31402409.post-116683999547917778</id><published>2006-12-22T17:50:00.000-08:00</published><updated>2007-09-04T03:55:01.284-07:00</updated><title type='text'>HTTP сервер размером в 222 байта :)</title><content type='html'>В продолжение &lt;a href="http://connection-refused.blogspot.com/2006/12/hint-9-swiss-army-knife.html#links"&gt;предыдущей идеи&lt;/a&gt; с передачей файлов по HTTP. Я не удержался и написал вполне полноценный (для нужд раздачи файлов на соседний компьютер) HTTP сервер:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;while true; do nc -vv -l -p 8080 -c '( read a b c; file=`echo $b | sed 's/[^a-z0-9.]//g'`; if [ a$file = "a" ]; then ( ls | (while read f; do echo "&amp;lt;a href=$f&amp;gt;$f&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;"; done) ); else cat $PWD/$file; fi )'; sleep 1; done&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;(все это - одна команда, должна вводиться в одну строку. Тестировалось в linux/bash 3.1.17)&lt;br /&gt;&lt;br /&gt;Вот и все :) Правда, на этот раз я опять решил отказаться от заголовков ответа, т.к. это слишком усложнит "команду", но при желании их можно взять из &lt;a href="http://connection-refused.blogspot.com/2006/12/hint-9-swiss-army-knife.html#links"&gt;предыдущего&lt;/a&gt; примера. Этот сервер отдает все файлы, которые есть в текущем каталоге и пытается противодействовать попыткам его сменить. В случае, если запрашивается корневая директория, то управление передается своеобразному mod_index - т.е. выводится список файлов-ссылок. В конце добавлена задержка в 1 сек для того, чтобы была возможность убить его нажатием Ctrl-C.&lt;br /&gt;&lt;br /&gt;Воистину, netcat одна из моих любимых программ!&lt;br /&gt;Буду рад услышать замечания относительно сервера :)&lt;br /&gt;&lt;br /&gt;p.s. Кто теперь осмелится заявить, что я не извращенец? :))&lt;br /&gt;p.p.s. HTTP server bash netcat shell&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;UPD: &lt;/b&gt;новая версия сервера доступна &lt;a href="http://alexey.sveshnikov.ru/blog/2007/08/30/bash-httpd-2/"&gt;здесь&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31402409-116683999547917778?l=connection-refused.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connection-refused.blogspot.com/feeds/116683999547917778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31402409&amp;postID=116683999547917778' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/116683999547917778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/116683999547917778'/><link rel='alternate' type='text/html' href='http://connection-refused.blogspot.com/2006/12/http-222.html' title='HTTP сервер размером в 222 байта :)'/><author><name>...</name><uri>http://www.blogger.com/profile/13426531755795883117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31402409.post-116682257738475543</id><published>2006-12-22T12:56:00.000-08:00</published><updated>2006-12-22T17:49:06.416-08:00</updated><title type='text'>hint [9] swiss army knife</title><content type='html'>Еще один очень простой способ передавать файлы между компьютерами:&lt;br /&gt;на сервере &lt;br /&gt;&lt;code&gt;nc -l -p 8080 &lt; file&lt;/code&gt;&lt;br /&gt;на клиенте достаточно в браузере набрать http://192.168.0.123:8080&lt;br /&gt;Собственно, все. Вообще, теоретически, работать это не должно, т.к. нет заголовков сервера - Status, Content-type и проч. Но работает, это факт. &lt;br /&gt;Впрочем, чтобы никто не смог сказать, что в юниках в командной строки нельзя сделать HTTP сервер, вот полная реализация: &lt;br /&gt;&lt;code&gt;&lt;br /&gt;(echo -e "HTTP/1.1 200\nContent-Disposition: attachment; filename=gena_na.png\nContent-Type: application/octet-stream\nConnection: close\n"; cat mrxvt_screen2.png) | nc -vv -l -p 8080&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;(набирать это каждый раз утомительно, но ничто не мешает сделать скрипт)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31402409-116682257738475543?l=connection-refused.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connection-refused.blogspot.com/feeds/116682257738475543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31402409&amp;postID=116682257738475543' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/116682257738475543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/116682257738475543'/><link rel='alternate' type='text/html' href='http://connection-refused.blogspot.com/2006/12/hint-9-swiss-army-knife.html' title='hint [9] swiss army knife'/><author><name>...</name><uri>http://www.blogger.com/profile/13426531755795883117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31402409.post-116678012873484965</id><published>2006-12-22T01:33:00.000-08:00</published><updated>2006-12-22T12:56:22.356-08:00</updated><title type='text'>Редактирование множетва файлов (diff, patch)</title><content type='html'>В случае, если необходимо сделать мелкие исправления сразу в множестве не идеинтичных файлов, могут очень помочь утилиты diff/patch.&lt;br /&gt;&lt;br /&gt;Например, сегодня нужно было исправить e-mail адреса в конфигах десяти разных инсталляциях одной программы. Можно было ручками пройтись и тупо редактировать файлы, но это не интересно. Вот, как это можно сделать:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;mkdir _wrk &amp;&amp; cd _wrk - &lt;i&gt;создать временный каталог&lt;/i&gt;&lt;br /&gt;cp ~/installation1/file . - &lt;i&gt;скопировать в него один из файлов.&lt;/i&gt;&lt;br /&gt;cp file file.bak - &lt;i&gt;сохранить старую версию&lt;/i&gt;&lt;br /&gt;vim file -&lt;i&gt; внести необходимые изменения&lt;/i&gt;&lt;br /&gt;diff file.bak file &gt; ~/patch -&lt;i&gt; создать патч.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;cd ~ -&lt;i&gt; перейти в каталог, в котором наохдятся все инсталляции&lt;/i&gt;&lt;br /&gt;find -name &lt;i&gt;file&lt;/i&gt; -print0 | xargs -n1 -J % echo "patch " % " ~/patch" &gt; script &lt;i&gt;найти все файлы, которые нужно отредактировать и сохранить скрипт, который сделает все необходимые изменения&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;cat script  -&lt;i&gt; убедиться, что не нашлось ничего лишнего (например, тот же файл, но в бекапах)&lt;/i&gt;&lt;br /&gt;sh script - &lt;i&gt;поехали!&lt;/i&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Далее, необходимо убедиться в том, что все ок и удалить *.orig файлы (резервные копии, оставленные программой patch. Сделать это можно командой find -name file.orig -rm).&lt;br /&gt;&lt;br /&gt;При составлении патча нужно быть внимательным, т.к. легко перепутать исходный и резервный файлы и получить "перевернутый" патч, который будет пытаться делать в исходном файле изменения, которые необходимо сделать в отредактированном для получения исходного.  Впрочем, программа patch корректно обрабатывает эту ситуацию и не даст испортить файл. Но все равно, лучше сразу сделать все нормально.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31402409-116678012873484965?l=connection-refused.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connection-refused.blogspot.com/feeds/116678012873484965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31402409&amp;postID=116678012873484965' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/116678012873484965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/116678012873484965'/><link rel='alternate' type='text/html' href='http://connection-refused.blogspot.com/2006/12/diff-patch.html' title='Редактирование множетва файлов (diff, patch)'/><author><name>...</name><uri>http://www.blogger.com/profile/13426531755795883117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31402409.post-116465424489763210</id><published>2006-11-27T09:22:00.000-08:00</published><updated>2006-11-27T12:11:21.653-08:00</updated><title type='text'>mrxvt</title><content type='html'>Какая программа самая важная на *NIX десктопе? Правильно, терминалка!&lt;br /&gt;&lt;br /&gt;Про нее и поговорим. &lt;br /&gt;&lt;br /&gt;Исторически сложилось так, что моей первой любовью после освоения иксов стал Konsole. Динамически изменяемая кодировка, удобные настройки из меню - то, за что я продолжаю любить его и сейчас. Но у него есть и серьезный минус - скорость. На работе у меня довольно старый десктоп - P3-900, на нем переключение между 12-тью вкладками занимает какое-то время - немного, но все-таки слегка раздражает. Это было толчком к тому, чтобы отправиться на поиски альтернатив. Требования к ним такие: поддержка табов, несложное конфигурировние, очень желателен "broadcast" режим (когда все, что пишется на одну консоль дублируется на все остальные), скорость, желательно отсутсвие привязки к библиотекам вроде qt или gtk. &lt;br /&gt;&lt;br /&gt;Когда я нашел mrxvt я был на седьмом небе от счастья. Однократного беглого прочтения мана был достаточно для того, чтобы написать сносный конфиг и начать наслаждаться жизнью. Проще показать скриншот (27Kb, 1600x1200):&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://mahoro.nm.ru/images/mrxvt_vim.png" target="_blank"&gt;&lt;img width="200"style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px;" src="http://mahoro.nm.ru/images/mrxvt_vim.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Любимая цветовая схема, табы, между которыми программа переключается молниеносно, даже если она запущена удаленно. Это скриншот моего домашнего десктопа, на работе wm - enlightenment, там заголовок окна либо узкий и незаметный, либо вообще приложение работает в full-screen. Из того, что не получилось сделать "с разбега" - автоматическое переименование табов. &lt;br /&gt;&lt;br /&gt;Но есть и минусы. Если использовать mrxvt совместно со screen, то они подвисают, оба, хотя последний все-таки поддается реанимации. Впрочем, так как я уже успел влюбиться в эту программу, буду пытаться заставить все это нормально работать - собирать из исходников свежую версию mrxvt, экспериментировать с screen..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31402409-116465424489763210?l=connection-refused.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connection-refused.blogspot.com/feeds/116465424489763210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31402409&amp;postID=116465424489763210' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/116465424489763210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/116465424489763210'/><link rel='alternate' type='text/html' href='http://connection-refused.blogspot.com/2006/11/mrxvt.html' title='mrxvt'/><author><name>...</name><uri>http://www.blogger.com/profile/13426531755795883117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31402409.post-116374847454887841</id><published>2006-11-16T23:14:00.000-08:00</published><updated>2006-11-20T01:46:08.173-08:00</updated><title type='text'>Hints [5..8]</title><content type='html'>[5]. Допустим, есть огромный (5Gb) файл, из которого нужно извлечь все строки, содержащие слово "error", а также посчитать md5 и количество строк. Можно сделать это  в пять приемов и потратить полчаса, но есть способ проще и быстрее:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#cat big_file | tee &gt;(md5) &gt;(wc -l) | grep "error" &gt; big_file_errors&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Т.е. все нужные действия производятся за один цикл чтения! &lt;br /&gt;&lt;br /&gt;Таким же образом можно скопировать файл с удаленного хоста и одновременно посчитать md5:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#ssh remote_host "cat /home/user/file" | tee &gt;(md5) &gt; file&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;(в linux вместо md5 нужно писать md5sum)&lt;br /&gt;&lt;br /&gt;[6]. Если есть открытый ssh-сеанс на удаленной машине, можно поднять туннель, прямо в этом же сеансе. Комбинация клавиш "~C" позволяет отредактировать командную строку. Например, если написать "-D 1080", то будет поднят прокси на 1080-м порту.&lt;br /&gt;&lt;br /&gt;[7]. При работе с лог-файлами в sh-скриптах может понадобиться преобразовать дату из human-readable формата в unixtime. Делается это так:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#date -j -f "%d/%m/%Y %H:%M:%S" "18/08/2006 16:43:02" "+%s"&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Опция -j запрещает команде date делать попытки установить дату. &lt;br /&gt;-f - формат даты в строке, которую следует разобрать&lt;br /&gt;"+%s" - отобразить дату в формате unixtime. Если этот аргумент опустить, то дата будет выведена в стандартном UTC формате (пятница, 18 августа 2006 г. 16:43:02 (MSD))&lt;br /&gt;&lt;br /&gt;[8]. Во FreeBSD есть утилита bdes, позволяющая (де)криптовать файлы из командной строки. &lt;br /&gt;&lt;code&gt;&lt;br /&gt;#cat file | bdes &gt; file.cripted&lt;br /&gt;Enter key: &lt;passphrase here&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Также есть утилита enigma, но криптостойкость ее алгоритмов очень низка.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31402409-116374847454887841?l=connection-refused.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connection-refused.blogspot.com/feeds/116374847454887841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31402409&amp;postID=116374847454887841' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/116374847454887841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/116374847454887841'/><link rel='alternate' type='text/html' href='http://connection-refused.blogspot.com/2006/11/hints-58.html' title='Hints [5..8]'/><author><name>...</name><uri>http://www.blogger.com/profile/13426531755795883117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31402409.post-116254707262670894</id><published>2006-11-03T01:40:00.000-08:00</published><updated>2006-11-03T03:54:20.476-08:00</updated><title type='text'>Hints [1..4]</title><content type='html'>[1]. Если в баше запущена интерактивная команда (не демон), которая выполняется долго, можно узнать ее состояние, нажав Ctrl-T.&lt;br /&gt;Например:&lt;br /&gt;&lt;code&gt;cat access_log | perl -pe 's/.*"(POST|GET.+?)"/$1/g;' &gt; urls&lt;br /&gt;[Ctrl-T]&lt;br /&gt;load: 2.72  cmd: perl 9210 [running] 1.11u 2.44s 10% 3188k&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;[2]. Если написать&lt;br /&gt;&lt;code&gt;#mysql -u user -ppassword base&lt;/code&gt;&lt;br /&gt;То выполнив ps axl можно увидеть пароль.&lt;br /&gt;Если передавать его не через командную строку, а через переменную окружения MYSQL_PWD, то другим пользователям пароль виден не будет:&lt;br /&gt;&lt;code&gt;MYSQL_PWD=passsword mysql -u user base&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Но от рута не спрячешься:&lt;br /&gt;&lt;code&gt;#ps axe&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;[3]. Во FreeBSD случайные пароли можно сгенерировать следующей командой:&lt;br /&gt;&lt;code&gt;#jot -r -c 8 a z | rs -g 0 8&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;[4]. Если наблюдать за файлом с помощью командый tail -f file, а файл периодически ротируется, то наблюдение остановится. Нужно использоватеь -F, чтобы tail отслеживал изменение дескриптора файла с заданным именем. BTW, в последних версиях FreeBSD команда tail позволяет указывать несколько файлов в аргументе -f.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31402409-116254707262670894?l=connection-refused.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connection-refused.blogspot.com/feeds/116254707262670894/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31402409&amp;postID=116254707262670894' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/116254707262670894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/116254707262670894'/><link rel='alternate' type='text/html' href='http://connection-refused.blogspot.com/2006/11/hints-14.html' title='Hints [1..4]'/><author><name>...</name><uri>http://www.blogger.com/profile/13426531755795883117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31402409.post-116170252971999221</id><published>2006-10-24T07:27:00.000-07:00</published><updated>2006-10-24T08:18:34.550-07:00</updated><title type='text'>Сохранение POST-запросов в apache</title><content type='html'>В некоторые моменты чувствую себя очень неуютно из-за того, что нет возможности посмотреть, что конкретно делают с моим сервером некоторые персоны. Я долго искал возможность логгировать все, в том числе и POST запросы клиентов и нашел способ - через &lt;a href="http://www.modsecurity.org"&gt;mod_security&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Устанавливается он элементарно apxs -cia mod_security.c (см &lt;a href="http://www.modsecurity.org/documentation/modsecurity-apache/1.9.3/html-multipage/02-installation.html#N1008C"&gt;документацию&lt;/a&gt;, правда, для его работы в наиболее удобном, "Concurrent", режиме логгирования, нужен модуль unique_id. После установи модуля следует добавить следующую секцию в httpd.conf:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;IfModule mod_security.c&amp;gt;&lt;br /&gt;    SecAuditEngine On&lt;br /&gt;&lt;br /&gt;# У mod_security есть два механизма логгирования, Concurrent - более быстрый и продвинутый.&lt;br /&gt;    SecAuditLogType Concurrent&lt;br /&gt;&lt;br /&gt;# Здесь будет храниться индекс - файл, по структуре похожий на access_log + идентификаторы, по которым можно найти полную информацию в StorageDir&lt;br /&gt;    SecAuditLog /var/log/www/audit/index&lt;br /&gt;&lt;br /&gt;# Тут хранятся все данные запросов. Каждый запрос в отдельном файле. Запросы разнесены по каталогам (вместе все запросы одной транзакции, вместе все транзакции одного дня)&lt;br /&gt;    SecAuditLogStorageDir /var/log/www/audit/data/&lt;br /&gt;&lt;br /&gt;# Наиболее полное логгирование (&lt;a href="http://www.modsecurity.org/documentation/modsecurity-apache/1.9.3/html-multipage/07-logging.html#N10A01"&gt;man&lt;/a&gt;)&lt;br /&gt;    SecAuditLogParts ABCDEFGHZ&lt;br /&gt;&lt;br /&gt;# Добавить обработку POST данных. &lt;br /&gt;    SecFilterScanPOST On&lt;br /&gt;    SecFilterEngine On&lt;br /&gt;&lt;br /&gt;# Следующие строки нужны для сохранения загруженных на сервер файлов:&lt;br /&gt;    SecUploadDir /var/log/www/audit/upload&lt;br /&gt;    SecUploadKeepFiles On&lt;br /&gt;&lt;br /&gt;&amp;lt;/IfModule&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Включать это имеет смысл при подозрении, что кто-то пытается использовать вашу систему не по назначению, теперь любой шаг проходимца будет записан.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;p.s. Работоспособность конфига проверялась в apache 1.3.37, mod_security 1.9.4, но работать должно и в 2.0/2.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31402409-116170252971999221?l=connection-refused.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connection-refused.blogspot.com/feeds/116170252971999221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31402409&amp;postID=116170252971999221' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/116170252971999221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/116170252971999221'/><link rel='alternate' type='text/html' href='http://connection-refused.blogspot.com/2006/10/post-apache.html' title='Сохранение POST-запросов в apache'/><author><name>...</name><uri>http://www.blogger.com/profile/13426531755795883117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31402409.post-116033441395666556</id><published>2006-10-08T11:36:00.000-07:00</published><updated>2006-11-08T11:16:54.973-08:00</updated><title type='text'>KOI8-R локаль в [K]Ubuntu</title><content type='html'>&lt;img src="http://photos1.blogger.com/blogger/4957/3389/1600/ruslinux.2.jpg" border="0" alt="" style="float: right; heigth: 200px;" /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;UPD: обновлено для Ubuntu 6.10&lt;/b&gt;&lt;/p&gt;&lt;p&gt;"А по улицам там ходят медведи с балалайками и разговаривают на KOI8-R" (почти &lt;a href="http://bash.org.ru/quote.php?num=423"&gt;BOR&lt;/a&gt;). Так вот, я и есть такой медведь. И когда мне дают дистрибутив с локалью UTF8 по умолчанию, я буду все переделывать. Для себя и для других медведей - инструкция:&lt;/p&gt; &lt;p&gt;а) Все начинается с генерации локали ru_RU-KOI8-R, делается это командой locale-gen. В качестве парамета ей целесообразно указать язык (ru), иначе она будет генерировать локали всех языков (/usr/share/i18n/locales/*), но только для кодировки UTF-8. Для языка ru будут сгенерированы следующие локали:&lt;br /&gt;&lt;code&gt;#cat /var/lib/locales/supported.d/ru&lt;br/&gt;ru_RU.UTF-8 UTF-8&lt;br/&gt;ru_UA.UTF-8 UTF-8&lt;/code&gt;&lt;br /&gt;Следующими командами можно заставить сгенерировать ее локаль для кодировки KOI8-R:&lt;br /&gt;&lt;code&gt;#sudo -s sh -c 'echo "ru_RU.KOI8-R KOI8-R" &gt;&gt; /var/lib/locales/supported.d/ru'&lt;br /&gt;#sudo locale-gen ru&lt;br /&gt;Generating locales...&lt;br /&gt;ru_RU.KOI8-R... done&lt;br /&gt;ru_RU.UTF-8... done&lt;br /&gt;ru_UA.UTF-8... done&lt;br /&gt;Generation complete.&lt;/code&gt;&lt;/p&gt;&lt;p&gt;б) Далее, обновляем переменные окружения. Имя конфиг-файла зависит от версии Ubuntu:&lt;br /&gt;Для Ubuntu &lt;6.10 &lt;code&gt;sudo vim /etc/environment&lt;/code&gt;&lt;br /&gt;Ubuntu 6.10 &lt;code&gt; sudo vim /etc/default/locale&lt;/code&gt;&lt;br /&gt;В нем пишем: &lt;code&gt;LANG="ru_RU.KOI8-R"&lt;br /&gt;LANGUAGE="ru_RU:ru:en_GB:en"&lt;/code&gt;&lt;br /&gt;С русификацией иксов покончено&lt;/p&gt;&lt;p&gt;в) Приступаем к консоли. Пишем:&lt;br /&gt;&lt;code&gt;apt-get install console-cyrillic&lt;/code&gt;&lt;br /&gt;В файл .profile добавляем:&lt;br /&gt;&lt;code&gt;loadkeys /usr/share/console-cyrillic/ru-koi8-r.kmap&lt;br /&gt;consolechars -f /usr/share/console-cyrillic/UniCyr_8x14.psf -m /usr/share/console-cyrillic/koi8-r.acm.gz&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Готово.&lt;br/&gt;У меня заработало все, кроме mcedit, который пришлось пересобрать. (В Kubuntu 6.10 заработал и mcedit)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31402409-116033441395666556?l=connection-refused.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connection-refused.blogspot.com/feeds/116033441395666556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31402409&amp;postID=116033441395666556' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/116033441395666556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/116033441395666556'/><link rel='alternate' type='text/html' href='http://connection-refused.blogspot.com/2006/10/koi8-r-kubuntu.html' title='KOI8-R локаль в [K]Ubuntu'/><author><name>...</name><uri>http://www.blogger.com/profile/13426531755795883117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31402409.post-115692609770826888</id><published>2006-08-29T23:32:00.000-07:00</published><updated>2006-10-07T02:29:29.746-07:00</updated><title type='text'>ssh и анонимность</title><content type='html'>Сегодня обнаружил, что текстовое поле в конце файла id_rsa.pub - просто комментарий. Это значит, что после копирования его на удаленный хост в authorized_keys можно заменить свой настоящий логин и имя хоста на строку "тут был Вася" и никто никогда не поймет, кто такой Вася и как он сюда попал. &lt;br /&gt;И еще. Можно работать на удаленном хосте, не светясь ни в auth.log, ни в `who` ни в `last`, без возможности посмотреть, что творится в консоли через watch - для этого достаточно запускать ssh-сессию так: ssh user@host "bash".&lt;br /&gt;&lt;br /&gt;Мораль здесь одна: если у человека есть ssh аккаунт на машине, то контроллировать его действия практически невозможно.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31402409-115692609770826888?l=connection-refused.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connection-refused.blogspot.com/feeds/115692609770826888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31402409&amp;postID=115692609770826888' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/115692609770826888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/115692609770826888'/><link rel='alternate' type='text/html' href='http://connection-refused.blogspot.com/2006/08/ssh.html' title='ssh и анонимность'/><author><name>...</name><uri>http://www.blogger.com/profile/13426531755795883117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31402409.post-115572384719908087</id><published>2006-08-16T01:23:00.000-07:00</published><updated>2006-10-08T22:29:57.216-07:00</updated><title type='text'>шпаргалка по RCS</title><content type='html'>&lt;p&gt;Если не бояться страшных аббревиатур, то можно обнаружить очень полезные вещи у себя под носом. RCS - элементарная штука.&lt;/p&gt;&lt;p&gt;Для чего она нужна я думаю объяснять никому не надо. А для раобты с ней используются всего пять команд: ci (импорт), co (экспорт), rscdiff, rlog и rcs (тюнинг, настройка). &lt;/p&gt;&lt;p&gt;RCS поддерживает работу нескольких пользователей с одним файлом, но мне она не нужна. Поэтому мой рецепт для работы следующий:&lt;br /&gt;&lt;br /&gt;1. &lt;b&gt;#ls -R &gt; file&lt;/b&gt; - это файл, с которым будем работать.&lt;br /&gt;2. &lt;b&gt;#mkdir RCS&lt;/b&gt; - здесь будет располагаться RCS репозиторий.&lt;br /&gt;3. &lt;b&gt;#ci -l file&lt;/b&gt; - так файл сохраняется в RCS (почему -l - см. ниже)&lt;br /&gt;4. &lt;b&gt;#rcs -U file&lt;/b&gt; - установка постоянной блокировки - однопользовательский режим работы.&lt;br /&gt;4. &lt;b&gt;#vi file&lt;/b&gt; - редактируем файл.&lt;br /&gt;5. &lt;b&gt;#rcsdiff file&lt;/b&gt; - смотрим различия между сохраненной в RCS версией файла и текущей.&lt;br /&gt;6. &lt;b&gt;#ci -l file&lt;/b&gt; - сохраняем в RCS новую версию файла (при этом нас попросят ввести комментарий к версии)&lt;br /&gt;7. &lt;b&gt;#rlog file&lt;/b&gt; - просмотр changelog файла.&lt;br /&gt;&lt;br /&gt;Это все!&lt;/p&gt; &lt;p&gt;Теперь несколько слов про опции. Практически для каждой команды можно указать параметр -r N.N - номер ревизии. Так, co -r 1.1 извлечет файл с номером версии 1.1, а ci -r 2.0 сохранит файл под версией 2.0. Иногда полезно выполнить rcsdiff -r 1.1 -r 1.2 file (сравнение двух версий, находящихся в репозитории) или rcsdiff -r 1.2 file (сравнение текущей версии с версией 1.2)&lt;/p&gt;  &lt;p&gt;По умолчанию "ci" _перемещает_ файлы в репозиторий, а "co" извлекает их в режиме read only (т.е. права доступа 444 и не установлена блокировка, т.е. невозможно будет сохранить изменения). Опция -u для ci эквивалентна последовательному вызову ci file&amp;&amp;co file, а -l - ci file&amp;&amp;co file&amp;&amp;chmod 644 file&amp;&amp;rcs -l file. Т.е. файл сохраняется в RCS и извлекается, готовый к редактированию. При установленном sticky locking -u ведет себя так же как и -l.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Дальнейшее чтение: rcsintro(1), rcs(1), co(1), ci(1).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31402409-115572384719908087?l=connection-refused.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connection-refused.blogspot.com/feeds/115572384719908087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31402409&amp;postID=115572384719908087' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/115572384719908087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/115572384719908087'/><link rel='alternate' type='text/html' href='http://connection-refused.blogspot.com/2006/08/rcs.html' title='шпаргалка по RCS'/><author><name>...</name><uri>http://www.blogger.com/profile/13426531755795883117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31402409.post-115468655389093248</id><published>2006-08-04T03:04:00.000-07:00</published><updated>2006-08-04T05:03:26.276-07:00</updated><title type='text'>subshell в PERL</title><content type='html'>&lt;p&gt;Моя задача сегодня - сделать так, чтобы один из скриптов имел возможность выполнять какие-либо команды на локальной или удаленной машине. Причем не просто команды, а инлайн перл- и шелл-скрипты (генерируемые на лету), причем их довольно много, а выполнять надо часто, поэтому system() и `` отпадают сразу хотя бы из соображений быстродействия. &lt;br /&gt;&lt;br /&gt;Итак, в глубинах CPAN отыскалось следующее: &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;IPC::Open2&lt;/b&gt;: Вроде бы получалось запускать (в режиме неблокирующего чтения), но это довольно сложно: во-первых, надо было еще обойти все глюки с буфферизацией ввода-вывода и не наплодить при этом своих, и во-вторых у меня не получилось корректно завершить процесс - хотя бы перехватить Ctrl-C&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Expect.pm&lt;/b&gt;: Практически идеальный вариант. Все программирование сводится к установке своих обработчиков на появление тех или инных сообщений от запущенной программы. В будущем я скорей всего еще воспользуюсь этим модулем, но в данном случае он не подходит, поскольку для его работы нужен отдельный pty, а этот ресурс может и не быть доступен в тех услових, в которых придется работать моей программе.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;IPC::Session&lt;/b&gt;: Это обертка вокруг IPC::Open3, которая с точки зрения пользователя ведет себя как Excpect.pm - это мой выбор! Я пока не знаю, чего я лишился, отказавшись от Excpect, который работает через отдельный pty, но пока мне это кажется самым удобным вариантом. &lt;img src="http://www.fishingmagic.com/news/images/editors-choice.jpg" width="40" height="40"&gt;:)&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Net::SSH::Perl&lt;/b&gt;: к сожалению, этот модуль не заработал на моей машине (FreeBSD 4.11) - зависает во время тестирования один из зависимых модулей. По идее, Net::SSH - это аналог open3, но работающий с удаленной консолью, а Net::SSH::Perl - это IPC::Session-подобный интерфейс. Количество зависимостей и размер Bundle::SSH устрашают, но, судя по документации - вполне подходящий вариант.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31402409-115468655389093248?l=connection-refused.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connection-refused.blogspot.com/feeds/115468655389093248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31402409&amp;postID=115468655389093248' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/115468655389093248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/115468655389093248'/><link rel='alternate' type='text/html' href='http://connection-refused.blogspot.com/2006/08/subshell-perl.html' title='subshell в PERL'/><author><name>...</name><uri>http://www.blogger.com/profile/13426531755795883117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31402409.post-115460204085869042</id><published>2006-08-03T03:11:00.000-07:00</published><updated>2006-08-30T07:42:48.116-07:00</updated><title type='text'>ФС и партиции</title><content type='html'>Теперь я знаю, почему ставить *nix даже на десктоп нужно в разные разделы. Разносить /, /var и /tmp по разным разделам - это минимум. &lt;br /&gt;&lt;br /&gt;На моем рабочем компьютере сегодня начались какие-то проблемы с ФС (линукс, установленный в один ext3 раздел). Для того, чтобы натравить fsck на корневой раздел надо, по идее, сначала сделать "mount -o remount,ro /", а это невозможно - "mount: / is busy". Вот и придется решать проблему перезагрузкой, хоть это и противоречит моим убеждениям..&lt;br /&gt;&lt;br /&gt;Впрочем, что делать, если бы я разбил диск и проблемы начались в разделе /var - вопрос открытый..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31402409-115460204085869042?l=connection-refused.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connection-refused.blogspot.com/feeds/115460204085869042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31402409&amp;postID=115460204085869042' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/115460204085869042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/115460204085869042'/><link rel='alternate' type='text/html' href='http://connection-refused.blogspot.com/2006/08/blog-post.html' title='ФС и партиции'/><author><name>...</name><uri>http://www.blogger.com/profile/13426531755795883117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31402409.post-115340031150282093</id><published>2006-07-20T05:49:00.000-07:00</published><updated>2006-07-20T05:58:31.510-07:00</updated><title type='text'></title><content type='html'>Свершилось :)&lt;br/&gt;Я созрел до того, чтобы завести свой блог, в котором буду собирать свои букмарки - технические проблемы, которые мне удалось решить и с которыми есть шанс столкнуться в будущем.&lt;br/&gt;&lt;br/&gt;Если конкретнее, то речь пойдет о UNIX, высоконагруженных веб-сервера, кластерах. Немного о MySQL, немного о PERL/PHP.&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31402409-115340031150282093?l=connection-refused.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://connection-refused.blogspot.com/feeds/115340031150282093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31402409&amp;postID=115340031150282093' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/115340031150282093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31402409/posts/default/115340031150282093'/><link rel='alternate' type='text/html' href='http://connection-refused.blogspot.com/2006/07/blog-post.html' title=''/><author><name>...</name><uri>http://www.blogger.com/profile/13426531755795883117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
