<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Free Runner &#187; security</title>
	<atom:link href="http://blog.lushpai.org/archives/tag/security/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.lushpai.org</link>
	<description>Блог свободного программиста</description>
	<lastBuildDate>Mon, 12 Jul 2010 23:12:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Bash Backup. Моменты.</title>
		<link>http://blog.lushpai.org/archives/163</link>
		<comments>http://blog.lushpai.org/archives/163#comments</comments>
		<pubDate>Fri, 26 Mar 2010 22:41:11 +0000</pubDate>
		<dc:creator>gwinn</dc:creator>
				<category><![CDATA[запись]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://blog.lushpai.org/?p=163</guid>
		<description><![CDATA[На днях пришлось писать скрипт для резервного копирования некоторых важных файлов на одном из серверов. Вся прелесть состояла в том, что резервирование должно было быть гибридным. Часть файлов нужно было хранить с накоплением, то есть при изменении файла, нужно было его копию в директории бекапа переименовать, а затем заново его сохранить в выше упомянутую директорию. [...]]]></description>
			<content:encoded><![CDATA[<p>На днях пришлось писать скрипт для резервного копирования некоторых важных файлов на одном из серверов. Вся прелесть состояла в том, что резервирование должно было быть гибридным. Часть файлов нужно было хранить с накоплением, то есть при изменении файла, нужно было его копию в директории бекапа переименовать, а затем заново его сохранить в выше упомянутую директорию. Другие файлы нужно было хранить только в виде последней версии, то есть просто перезаписывать то, что уже лежит в бекапе.</p>
<p>В принципе, скрипты бекапа &#8211; вещь, с которой рано или поздно (безусловно лучше, если рано) сталкивается любой системный администратор (кстати, я на некоторое время из веб разработчиков переквалифицировался в Linux администратора =) ). Полностью весь скрипт приводить смысла не вижу, а вот непосредственно те его части, которые реализуют копирование, выношу на суд читателя.</p>
<p><span id="more-163"></span></p>
<h5>Резервирование без накопления.</h5>
<p>Нас интересуют только файлы и директории, символические ссылки и прочие чудеса &#8211; нет.</p>
<p>
<pre style='color:#000000;background:#f1f0f0;'><span style='color:#400000; font-weight:bold; '>for</span> ELEMENT <span style='color:#400000; font-weight:bold; '>in</span> ${paths_o<span style='color:#806030; '>[</span><span style='color:#e60000; '>@</span><span style='color:#806030; '>]</span>}
    <span style='color:#400000; font-weight:bold; '>do</span>
        <span style='color:#400000; font-weight:bold; '>if</span> <span style='color:#806030; '>[</span> <span style='color:#44aadd; '>-e</span> $BACKUP_PATH$ELEMENT <span style='color:#806030; '>]</span><span style='color:#806030; '>;</span> <span style='color:#400000; font-weight:bold; '>then</span>
        <span style='color:#400000; font-weight:bold; '>if</span> <span style='color:#806030; '>[</span> $ELEMENT <span style='color:#44aadd; '>-nt</span> $BACKUP_PATH$ELEMENT <span style='color:#806030; '>]</span><span style='color:#806030; '>;</span> <span style='color:#400000; font-weight:bold; '>then</span>
            <span style='color:#400000; font-weight:bold; '>if</span> <span style='color:#806030; '>[</span> <span style='color:#44aadd; '>-s</span> $ELEMENT <span style='color:#806030; '>]</span><span style='color:#806030; '>;</span> <span style='color:#400000; font-weight:bold; '>then</span>
            <span style='color:#400000; font-weight:bold; '>if</span> <span style='color:#806030; '>[</span> -h $ELEMENT <span style='color:#806030; '>]</span><span style='color:#806030; '>;</span> <span style='color:#400000; font-weight:bold; '>then</span>
                <span style='color:#bb7977; font-weight:bold; '>continue</span><span style='color:#806030; '>;</span>
            <span style='color:#400000; font-weight:bold; '>else</span>
                <span style='color:#400000; font-weight:bold; '>if</span> <span style='color:#806030; '>[</span> <span style='color:#44aadd; '>-d</span> $ELEMENT <span style='color:#806030; '>]</span><span style='color:#806030; '>;</span> <span style='color:#400000; font-weight:bold; '>then</span>
                mkdir <span style='color:#44aadd; '>-p</span> <span style='color:#e60000; '>"</span><span style='color:#e60000; '>$BACKUP_TEMP</span><span style='color:#e60000; '>$ELEMENT</span><span style='color:#e60000; '>"</span><span style='color:#806030; '>;</span>
                cp <span style='color:#44aadd; '>-r</span> $ELEMENT $BACKUP_TEMP$<span style='color:#806030; '>(</span>dirname $ELEMENT<span style='color:#806030; '>)</span><span style='color:#806030; '>;</span>
                <span style='color:#400000; font-weight:bold; '>else</span>
                <span style='color:#400000; font-weight:bold; '>if</span> <span style='color:#806030; '>[</span> <span style='color:#44aadd; '>-f</span> $ELEMENT <span style='color:#806030; '>]</span><span style='color:#806030; '>;</span> <span style='color:#400000; font-weight:bold; '>then</span>
                    mkdir <span style='color:#44aadd; '>-p</span> $BACKUP_TEMP$<span style='color:#806030; '>(</span>dirname $ELEMENT<span style='color:#806030; '>)</span><span style='color:#806030; '>;</span>
                    cp $ELEMENT $BACKUP_TEMP$ELEMENT<span style='color:#806030; '>;</span>
                <span style='color:#400000; font-weight:bold; '>else</span>
                    <span style='color:#bb7977; font-weight:bold; '>continue</span><span style='color:#806030; '>;</span>
                <span style='color:#400000; font-weight:bold; '>fi</span><span style='color:#806030; '>;</span>
                <span style='color:#400000; font-weight:bold; '>fi</span><span style='color:#806030; '>;</span>
            <span style='color:#400000; font-weight:bold; '>fi</span><span style='color:#806030; '>;</span>
            <span style='color:#400000; font-weight:bold; '>fi</span><span style='color:#806030; '>;</span>
        <span style='color:#400000; font-weight:bold; '>fi</span><span style='color:#806030; '>;</span>
        <span style='color:#400000; font-weight:bold; '>else</span>
        <span style='color:#400000; font-weight:bold; '>if</span> <span style='color:#806030; '>[</span> -h $ELEMENT <span style='color:#806030; '>]</span><span style='color:#806030; '>;</span> <span style='color:#400000; font-weight:bold; '>then</span>
            <span style='color:#bb7977; font-weight:bold; '>continue</span><span style='color:#806030; '>;</span>
        <span style='color:#400000; font-weight:bold; '>else</span>
            <span style='color:#400000; font-weight:bold; '>if</span> <span style='color:#806030; '>[</span> <span style='color:#44aadd; '>-d</span> $ELEMENT <span style='color:#806030; '>]</span><span style='color:#806030; '>;</span> <span style='color:#400000; font-weight:bold; '>then</span>
            mkdir <span style='color:#44aadd; '>-p</span> <span style='color:#e60000; '>"</span><span style='color:#e60000; '>$BACKUP_TEMP</span><span style='color:#e60000; '>$ELEMENT</span><span style='color:#e60000; '>"</span><span style='color:#806030; '>;</span>
            cp <span style='color:#44aadd; '>-r</span> $ELEMENT $BACKUP_TEMP$<span style='color:#806030; '>(</span>dirname $ELEMENT<span style='color:#806030; '>)</span><span style='color:#806030; '>;</span>
            <span style='color:#400000; font-weight:bold; '>else</span>
            <span style='color:#400000; font-weight:bold; '>if</span> <span style='color:#806030; '>[</span> <span style='color:#44aadd; '>-f</span> $ELEMENT <span style='color:#806030; '>]</span><span style='color:#806030; '>;</span> <span style='color:#400000; font-weight:bold; '>then</span>
                mkdir <span style='color:#44aadd; '>-p</span> $BACKUP_TEMP$<span style='color:#806030; '>(</span>dirname $ELEMENT<span style='color:#806030; '>)</span><span style='color:#806030; '>;</span>
                cp $ELEMENT $BACKUP_TEMP$ELEMENT<span style='color:#806030; '>;</span>
            <span style='color:#400000; font-weight:bold; '>else</span>
                <span style='color:#bb7977; font-weight:bold; '>continue</span><span style='color:#806030; '>;</span>
            <span style='color:#400000; font-weight:bold; '>fi</span><span style='color:#806030; '>;</span>
            <span style='color:#400000; font-weight:bold; '>fi</span><span style='color:#806030; '>;</span>
        <span style='color:#400000; font-weight:bold; '>fi</span><span style='color:#806030; '>;</span>
        <span style='color:#400000; font-weight:bold; '>fi</span><span style='color:#806030; '>;</span>
    <span style='color:#400000; font-weight:bold; '>done</span><span style='color:#806030; '>;</span>
</pre>
</p>
<h5>Резервирование с накоплением</h5>
<p>В данном случае используем рекурсивную процедуру. Принцип тот же &#8211; только файлы и каталоги.</p>
<p><pre style='color:#000000;background:#f1f0f0;'>walk_tree<span style='color:#806030; '>()</span> <span style='color:#806030; '>{</span>
    a<span style='color:#806030; '>=</span><span style='color:#c00000; '>0</span><span style='color:#806030; '>;</span>
    ls <span style='color:#e60000; '>"</span><span style='color:#e60000; '>$1</span><span style='color:#e60000; '>"</span> <span style='color:#e34adc; '>|</span> <span style='color:#400000; font-weight:bold; '>while</span> IFS<span style='color:#806030; '>=</span> <span style='color:#bb7977; font-weight:bold; '>read</span> i<span style='color:#806030; '>;</span>
    <span style='color:#400000; font-weight:bold; '>do</span>
        <span style='color:#400000; font-weight:bold; '>if</span> <span style='color:#806030; '>[</span> <span style='color:#44aadd; '>-L</span> <span style='color:#e60000; '>"$(dirname </span><span style='color:#e60000; '>$1</span><span style='color:#40015a; '>/</span><span style='color:#e60000; '>$i</span><span style='color:#e60000; '>)"</span> <span style='color:#806030; '>]</span><span style='color:#806030; '>;</span> <span style='color:#400000; font-weight:bold; '>then</span>
        <span style='color:#bb7977; font-weight:bold; '>continue</span><span style='color:#806030; '>;</span>
        <span style='color:#400000; font-weight:bold; '>else</span>
        <span style='color:#400000; font-weight:bold; '>if</span> <span style='color:#806030; '>[</span> <span style='color:#44aadd; '>-d</span> <span style='color:#e60000; '>"$(dirname </span><span style='color:#e60000; '>$1</span><span style='color:#40015a; '>/</span><span style='color:#e60000; '>$i</span><span style='color:#e60000; '>)"</span> <span style='color:#806030; '>]</span><span style='color:#806030; '>;</span> <span style='color:#400000; font-weight:bold; '>then</span>
            a<span style='color:#806030; '>=</span>$<span style='color:#806030; '>(</span><span style='color:#806030; '>(</span>$a+<span style='color:#c00000; '>1</span><span style='color:#806030; '>)</span><span style='color:#806030; '>)</span><span style='color:#806030; '>;</span>
                paths<span style='color:#806030; '>[</span><span style='color:#e60000; '>$a</span><span style='color:#806030; '>]</span>=$1<span style='color:#40015a; '>/</span>$i<span style='color:#806030; '>;</span>
            walk_tree <span style='color:#e60000; '>"</span><span style='color:#e60000; '>$1</span><span style='color:#40015a; '>/</span><span style='color:#e60000; '>$i</span><span style='color:#e60000; '>"</span>
        <span style='color:#400000; font-weight:bold; '>else</span>
                a<span style='color:#806030; '>=</span>$<span style='color:#806030; '>(</span><span style='color:#806030; '>(</span>$a+<span style='color:#c00000; '>1</span><span style='color:#806030; '>)</span><span style='color:#806030; '>)</span><span style='color:#806030; '>;</span>
                paths<span style='color:#806030; '>[</span><span style='color:#e60000; '>$a</span><span style='color:#806030; '>]</span>=$i<span style='color:#806030; '>;</span>
        <span style='color:#400000; font-weight:bold; '>fi</span><span style='color:#806030; '>;</span>
        <span style='color:#400000; font-weight:bold; '>fi</span><span style='color:#806030; '>;</span>
    <span style='color:#400000; font-weight:bold; '>done</span><span style='color:#806030; '>;</span>

    <span style='color:#400000; font-weight:bold; '>for</span> element <span style='color:#400000; font-weight:bold; '>in</span> ${paths<span style='color:#806030; '>[</span><span style='color:#e60000; '>@</span><span style='color:#806030; '>]</span>}
    <span style='color:#400000; font-weight:bold; '>do</span>
        <span style='color:#400000; font-weight:bold; '>if</span> <span style='color:#806030; '>[</span> <span style='color:#44aadd; '>-L</span> $element <span style='color:#806030; '>]</span><span style='color:#806030; '>;</span> <span style='color:#400000; font-weight:bold; '>then</span>
                <span style='color:#bb7977; font-weight:bold; '>continue</span><span style='color:#806030; '>;</span>
            <span style='color:#400000; font-weight:bold; '>else</span>
            <span style='color:#400000; font-weight:bold; '>if</span> <span style='color:#806030; '>[</span> <span style='color:#44aadd; '>-f</span> $element <span style='color:#806030; '>]</span><span style='color:#806030; '>;</span> <span style='color:#400000; font-weight:bold; '>then</span>
                    <span style='color:#400000; font-weight:bold; '>if</span> <span style='color:#806030; '>[</span> <span style='color:#44aadd; '>-e</span> $BACKUP_PATH$element <span style='color:#806030; '>]</span><span style='color:#806030; '>;</span> <span style='color:#400000; font-weight:bold; '>then</span>
                        <span style='color:#400000; font-weight:bold; '>if</span> <span style='color:#806030; '>[</span> $element <span style='color:#44aadd; '>-nt</span> $BACKUP_PATH$element <span style='color:#806030; '>]</span><span style='color:#806030; '>;</span> <span style='color:#400000; font-weight:bold; '>then</span>
                    <span style='color:#400000; font-weight:bold; '>if</span> <span style='color:#806030; '>[</span> <span style='color:#44aadd; '>-s</span> $element <span style='color:#806030; '>]</span><span style='color:#806030; '>;</span> <span style='color:#400000; font-weight:bold; '>then</span>
                            mod<span style='color:#806030; '>=</span><span style='color:#000000; background:#ffffe8; '>`stat </span><span style='color:#44aadd; background:#ffffe8; '>-c</span><span style='color:#000000; background:#ffffe8; '> %y </span><span style='color:#000000; background:#ffffe8; '>$BACKUP_PATH</span><span style='color:#000000; background:#ffffe8; '>$element</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#e34adc; background:#ffffe8; '>|</span><span style='color:#000000; background:#ffffe8; '> cut </span><span style='color:#44aadd; background:#ffffe8; '>-d</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#e60000; background:#ffffe8; '>' '</span><span style='color:#000000; background:#ffffe8; '> -f1`</span><span style='color:#806030; '>;</span>
                            mkdir <span style='color:#44aadd; '>-p</span> $BACKUP_TEMP$<span style='color:#806030; '>(</span>dirname $element<span style='color:#806030; '>)</span><span style='color:#806030; '>;</span>
                        cp $BACKUP_PATH$element $BACKUP_PATH$element$mod<span style='color:#806030; '>;</span>
                        cp $element $BACKUP_TEMP$<span style='color:#806030; '>(</span>dirname $element<span style='color:#806030; '>)</span><span style='color:#806030; '>;</span>
                        <span style='color:#400000; font-weight:bold; '>fi</span><span style='color:#806030; '>;</span>
                <span style='color:#400000; font-weight:bold; '>fi</span><span style='color:#806030; '>;</span>
                <span style='color:#400000; font-weight:bold; '>else</span>
                mkdir <span style='color:#44aadd; '>-p</span> $BACKUP_TEMP$<span style='color:#806030; '>(</span>dirname $element<span style='color:#806030; '>)</span><span style='color:#806030; '>;</span>
                cp $element $BACKUP_TEMP$<span style='color:#806030; '>(</span>dirname $element<span style='color:#806030; '>)</span><span style='color:#806030; '>;</span>
                <span style='color:#400000; font-weight:bold; '>fi</span><span style='color:#806030; '>;</span>
            <span style='color:#400000; font-weight:bold; '>else</span>
                <span style='color:#400000; font-weight:bold; '>if</span> <span style='color:#806030; '>[</span> <span style='color:#44aadd; '>-d</span> $element <span style='color:#806030; '>]</span><span style='color:#806030; '>;</span> <span style='color:#400000; font-weight:bold; '>then</span>
                    mkdir <span style='color:#44aadd; '>-p</span> $BACKUP_TEMP$<span style='color:#806030; '>(</span>dirname $element<span style='color:#806030; '>)</span><span style='color:#806030; '>;</span>
                    <span style='color:#400000; font-weight:bold; '>else</span>
                    <span style='color:#400000; font-weight:bold; '>if</span> <span style='color:#806030; '>[</span> <span style='color:#44aadd; '>-L</span> $element <span style='color:#806030; '>]</span><span style='color:#806030; '>;</span> <span style='color:#400000; font-weight:bold; '>then</span>
                        <span style='color:#bb7977; font-weight:bold; '>continue</span><span style='color:#806030; '>;</span>
                    <span style='color:#400000; font-weight:bold; '>fi</span><span style='color:#806030; '>;</span>
                    <span style='color:#400000; font-weight:bold; '>fi</span><span style='color:#806030; '>;</span>
                <span style='color:#400000; font-weight:bold; '>fi</span><span style='color:#806030; '>;</span>
            <span style='color:#400000; font-weight:bold; '>fi</span><span style='color:#806030; '>;</span>
        <span style='color:#400000; font-weight:bold; '>done</span><span style='color:#806030; '>;</span>
<span style='color:#806030; '>}</span>
</pre>
</p>
<h5>p.s.</h5>
<p>В целом работает, хотя идей для модификации и улучшения уже просто целый вагон. Надеюсь кому-нибудь пригодится.</p>
<p>
<a href="http://blog.lushpai.org/wp-content/2010/03/3.png"><img src="http://blog.lushpai.org/wp-content/2010/03/3.png" alt="Работа в режиме &quot;backup&quot;" title="backup it!" width="578" height="344" class="aligncenter size-full wp-image-172" /></a>
</p>
<p>
<a href="http://blog.lushpai.org/wp-content/2010/03/2.png"><img src="http://blog.lushpai.org/wp-content/2010/03/2.png" alt="no parameter" title="no parameter" width="578" height="344" class="aligncenter size-full wp-image-171" /></a>
</p>
<p>
<a href="http://blog.lushpai.org/wp-content/2010/03/1.png"><img src="http://blog.lushpai.org/wp-content/2010/03/1.png" alt="backup help" title="backup help" width="578" height="344" class="aligncenter size-full wp-image-170" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lushpai.org/archives/163/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>SSH. Запоминаем пароль.</title>
		<link>http://blog.lushpai.org/archives/5</link>
		<comments>http://blog.lushpai.org/archives/5#comments</comments>
		<pubDate>Mon, 17 Mar 2008 11:20:56 +0000</pubDate>
		<dc:creator>gwinn</dc:creator>
				<category><![CDATA[запись]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://lushpai.net/archives/5</guid>
		<description><![CDATA[Те, кто частенько соединяется с удаленными серверами по ssh, знает, что если такие приложения как WinSCP (Windows), Наутилус (Gnome) или Krusader (KDE) умеют запоминать пароли, то вот с консолью дела обстоят не столь радужно. Конечно, рано или поздно, каждый находит для себя решение этой проблемы, и вот какое нашел я. Перво-наперво, нужно установить пакет expect_tcl. [...]]]></description>
			<content:encoded><![CDATA[<p align="left">Те, кто частенько соединяется с удаленными серверами по ssh, знает, что если такие приложения как <a href="http://winscp.net/eng/docs/lang:ru" target="_blank">WinSCP</a> (Windows),  <a href="http://www.gnome.org/projects/nautilus/" target="_blank">Наутилус</a> (Gnome) или <a href="http://www.krusader.org/" target="_blank">Krusader</a> (KDE) умеют запоминать пароли, то вот с консолью дела обстоят не столь радужно. Конечно, рано или поздно, каждый находит для себя решение этой проблемы, и вот какое нашел я. Перво-наперво, нужно установить пакет <a href="http://expect.nist.gov/" target="_blank">expect_tcl.</a> Далее остается лишь написать небольшой .sh скрипт, который позволит нам соединяться по ssh не вводя пароль каждый раз. Собственно, вот код :</p>
<blockquote>
<p align="left"><strong>#!/bin/bash</strong></p>
<p align="left"><strong>expect -c &raquo; spawn ssh $1@$2 -x &laquo;$4&#8243; expect &laquo;password:&raquo;send &laquo;$3r&raquo; interact &laquo;</strong></p>
</blockquote>
<p align="left">вызывать можно например так:</p>
<blockquote>
<p align="left"><strong>$ ssh.sh </strong><em>user host password command</em></p>
</blockquote>
<p align="left">или сделать ярлык в меню:</p>
<blockquote>
<p align="left"><strong>gnome-terminal -x /path/to/script/ssh.sh </strong><em>user host password command</em></p>
</blockquote>
<p align="left">правда есть один минус, передача 4-го параметра, то есть вызов удаленной команды, не всегда срабатывает.Вот собственно и все.<br />
p.s. за модернизацию скрипта спасибо <a href="http://nickm.moikrug.ru/" target="_blank">Николаю Мельникову</a>
</p>
<p align="left">
<p align="left"><strong>UPD</strong>: Описаный метод отнюдь не претендует на звание самого правильного и безопасного, более того, он не всегда удобен, лично я использую его в реализации собственной утилиты, о которой написал <a href="http://blog.lushpai.org/archives/17">вот тут</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lushpai.org/archives/5/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>
