<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Комментарии к записи: Угадывание мыслей и выполнение несуществующих команд средствами bash</title>
	<atom:link href="http://bappoy.pp.ru/2008/11/17/quick-call-ssh.html/feed" rel="self" type="application/rss+xml" />
	<link>http://bappoy.pp.ru/2008/11/17/quick-call-ssh.html</link>
	<description>Линуксоид на велосипеде с моторчиком</description>
	<lastBuildDate>Mon, 06 Feb 2012 10:47:56 +0400</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Автор: bappoy</title>
		<link>http://bappoy.pp.ru/2008/11/17/quick-call-ssh.html/comment-page-1#comment-13027</link>
		<dc:creator>bappoy</dc:creator>
		<pubDate>Mon, 06 Feb 2012 10:47:56 +0000</pubDate>
		<guid isPermaLink="false">http://bappoy.pp.ru/?p=336#comment-13027</guid>
		<description>Первоначальная идея была в том, чтобы вообще не вводить команду ssh. А для автодополнения ssh действительно существует множество вариантов.</description>
		<content:encoded><![CDATA[<p>Первоначальная идея была в том, чтобы вообще не вводить команду ssh. А для автодополнения ssh действительно существует множество вариантов.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: mrAibo</title>
		<link>http://bappoy.pp.ru/2008/11/17/quick-call-ssh.html/comment-page-1#comment-13026</link>
		<dc:creator>mrAibo</dc:creator>
		<pubDate>Mon, 06 Feb 2012 10:39:04 +0000</pubDate>
		<guid isPermaLink="false">http://bappoy.pp.ru/?p=336#comment-13026</guid>
		<description>Можно проще:
_ssh_complete () 
{
local cur
_get_comp_words_by_ref cur
COMPREPLY=( $( compgen -W &quot;$(echo $(sed &#039;s/[, ].*//&#039; &lt; ~/.ssh/known_hosts &#124; sort -u))&quot; -- &quot;$cur&quot; ) )
}
complete -F _ssh_complete ssh

или из хистори
complete -W &quot;$(echo $(grep &#039;^ssh &#039; .bash_history &#124; sort -u &#124; sed &#039;s/^ssh //&#039;))&quot; ssh</description>
		<content:encoded><![CDATA[<p>Можно проще:<br />
_ssh_complete ()<br />
{<br />
local cur<br />
_get_comp_words_by_ref cur<br />
COMPREPLY=( $( compgen -W &laquo;$(echo $(sed &#8217;s/[, ].*//&#8217; &lt; ~/.ssh/known_hosts | sort -u))&quot; &#8212; &quot;$cur&quot; ) )<br />
}<br />
complete -F _ssh_complete ssh</p>
<p>или из хистори<br />
complete -W &quot;$(echo $(grep &#039;^ssh &#039; .bash_history | sort -u | sed &#039;s/^ssh //&#039;))&quot; ssh</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: bappoy</title>
		<link>http://bappoy.pp.ru/2008/11/17/quick-call-ssh.html/comment-page-1#comment-3796</link>
		<dc:creator>bappoy</dc:creator>
		<pubDate>Tue, 09 Dec 2008 08:57:11 +0000</pubDate>
		<guid isPermaLink="false">http://bappoy.pp.ru/?p=336#comment-3796</guid>
		<description>Pers, написать можно на чем угодно, я лишь продемонстрировал proof of concept. Мне вот perl+bash нравится, вам -- awk, кто-то на python все перепишет...</description>
		<content:encoded><![CDATA[<p>Pers, написать можно на чем угодно, я лишь продемонстрировал proof of concept. Мне вот perl+bash нравится, вам &#8212; awk, кто-то на python все перепишет&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Pers</title>
		<link>http://bappoy.pp.ru/2008/11/17/quick-call-ssh.html/comment-page-1#comment-3795</link>
		<dc:creator>Pers</dc:creator>
		<pubDate>Tue, 09 Dec 2008 08:37:08 +0000</pubDate>
		<guid isPermaLink="false">http://bappoy.pp.ru/?p=336#comment-3795</guid>
		<description>А зачем надо именно Perl-овые regex&#039;ы? egrep вполне справится с поставленной задачей... А лучше, IMHO, вообще обойтись одним запуском awk (не проверял, т.к. bash не пользуюсь, но должно работать):

$ cat x.awk
#!/usr/bin/awk
BEGIN {
    FS=&quot;.&quot;;
    IPD=&quot;^[1-9][0-9]?&#124;1[0-9][0-9]&#124;2([0-4][0-9]&#124;5[0-5])$&quot;;
}
NF == 1 &amp;&amp; \$1 ~ IPD {
    print \&quot;ssh 192.168.20.\&quot; \$0;
}
NF == 2 &amp;&amp; \$1 ~ IPD &amp;&amp; \$2 ~ IPD {
    print \&quot;ssh 192.168.\&quot; \$0;
}
NF == 4 &amp;&amp; \$1 ~ IPD &amp;&amp; \$1 ~ IPD &amp;&amp; \$1 ~ IPD &amp;&amp; \$1 ~ IPD {
    print \&quot;ssh \&quot; $0;
}
$ cat .bashrc
command_not_found_handle () {
CMD=&quot;`echo $1 &#124; x.awk`&quot;
if [ X&quot;$CMD&quot; != X ]; then
    $CMD
    return $?
fi
return 127</description>
		<content:encoded><![CDATA[<p>А зачем надо именно Perl-овые regex&#8217;ы? egrep вполне справится с поставленной задачей&#8230; А лучше, IMHO, вообще обойтись одним запуском awk (не проверял, т.к. bash не пользуюсь, но должно работать):</p>
<p>$ cat x.awk<br />
#!/usr/bin/awk<br />
BEGIN {<br />
    FS=&raquo;.&raquo;;<br />
    IPD=&raquo;^[1-9][0-9]?|1[0-9][0-9]|2([0-4][0-9]|5[0-5])$&raquo;;<br />
}<br />
NF == 1 &amp;&amp; \$1 ~ IPD {<br />
    print \&raquo;ssh 192.168.20.\&raquo; \$0;<br />
}<br />
NF == 2 &amp;&amp; \$1 ~ IPD &amp;&amp; \$2 ~ IPD {<br />
    print \&raquo;ssh 192.168.\&raquo; \$0;<br />
}<br />
NF == 4 &amp;&amp; \$1 ~ IPD &amp;&amp; \$1 ~ IPD &amp;&amp; \$1 ~ IPD &amp;&amp; \$1 ~ IPD {<br />
    print \&raquo;ssh \&raquo; $0;<br />
}<br />
$ cat .bashrc<br />
command_not_found_handle () {<br />
CMD=&raquo;`echo $1 | x.awk`&raquo;<br />
if [ X"$CMD" != X ]; then<br />
    $CMD<br />
    return $?<br />
fi<br />
return 127</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Юрий</title>
		<link>http://bappoy.pp.ru/2008/11/17/quick-call-ssh.html/comment-page-1#comment-3257</link>
		<dc:creator>Юрий</dc:creator>
		<pubDate>Tue, 18 Nov 2008 11:56:40 +0000</pubDate>
		<guid isPermaLink="false">http://bappoy.pp.ru/?p=336#comment-3257</guid>
		<description>Для ssh уже всё изобретено и максимально удобно. Стремясь сократить длину вводимых команд вы уходите от семантической связи команды и того, что вы желаете чтобы эта команда делала. Возникает путаница. Ценность данной статьи локализована в этом механизме: command_not_found_handle. До угадывания мыслей далеко... ;-)</description>
		<content:encoded><![CDATA[<p>Для ssh уже всё изобретено и максимально удобно. Стремясь сократить длину вводимых команд вы уходите от семантической связи команды и того, что вы желаете чтобы эта команда делала. Возникает путаница. Ценность данной статьи локализована в этом механизме: command_not_found_handle. До угадывания мыслей далеко&#8230; ;-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: XoRe</title>
		<link>http://bappoy.pp.ru/2008/11/17/quick-call-ssh.html/comment-page-1#comment-3252</link>
		<dc:creator>XoRe</dc:creator>
		<pubDate>Tue, 18 Nov 2008 07:08:36 +0000</pubDate>
		<guid isPermaLink="false">http://bappoy.pp.ru/?p=336#comment-3252</guid>
		<description>Параметры можно передавать через подчеркивание или другой хитрый символ.
Например:

Можно эту штуку немного обуниверсалить и добавить команды не только для ssh.
А чтобы не было пересечений с нормальными командами, можно, например, использовать какой-нибудь хитрый символ в начале команды.
Например @.

Пример:
@m - будет значить &quot;tail -f /var/log/messages&quot;
@m_xxx - будет значить &quot;tail -f /var/log/messages &#124; grep xxx&quot;

Ну и сделать ssh таким способом:
@1_user
@22.15_seconduser
@127.0.0.1_root

И т.д.</description>
		<content:encoded><![CDATA[<p>Параметры можно передавать через подчеркивание или другой хитрый символ.<br />
Например:</p>
<p>Можно эту штуку немного обуниверсалить и добавить команды не только для ssh.<br />
А чтобы не было пересечений с нормальными командами, можно, например, использовать какой-нибудь хитрый символ в начале команды.<br />
Например @.</p>
<p>Пример:<br />
@m &#8211; будет значить &laquo;tail -f /var/log/messages&raquo;<br />
@m_xxx &#8211; будет значить &laquo;tail -f /var/log/messages | grep xxx&raquo;</p>
<p>Ну и сделать ssh таким способом:<br />
@1_user<br />
@22.15_seconduser<br />
@127.0.0.1_root</p>
<p>И т.д.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Юрий</title>
		<link>http://bappoy.pp.ru/2008/11/17/quick-call-ssh.html/comment-page-1#comment-3220</link>
		<dc:creator>Юрий</dc:creator>
		<pubDate>Mon, 17 Nov 2008 16:33:41 +0000</pubDate>
		<guid isPermaLink="false">http://bappoy.pp.ru/?p=336#comment-3220</guid>
		<description>А почему не обойтись только ~/.ssh/config в данном примере!? Помимо части IP можно использовать псевдонимы для разных машин...например :

Hostname CVS
Host 192.168.20.249
Port 22
User vbrednikov

К тому же можно назначить несколько псевдонимов на одну машину...

На мой взгляд в некоторых случаях было бы удобнее использовать apt-file search  для поиска неустановленных пакетов с вызываемыми приложениями... ;-)</description>
		<content:encoded><![CDATA[<p>А почему не обойтись только ~/.ssh/config в данном примере!? Помимо части IP можно использовать псевдонимы для разных машин&#8230;например :</p>
<p>Hostname CVS<br />
Host 192.168.20.249<br />
Port 22<br />
User vbrednikov</p>
<p>К тому же можно назначить несколько псевдонимов на одну машину&#8230;</p>
<p>На мой взгляд в некоторых случаях было бы удобнее использовать apt-file search  для поиска неустановленных пакетов с вызываемыми приложениями&#8230; ;-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Dr.AKULAvich</title>
		<link>http://bappoy.pp.ru/2008/11/17/quick-call-ssh.html/comment-page-1#comment-3212</link>
		<dc:creator>Dr.AKULAvich</dc:creator>
		<pubDate>Mon, 17 Nov 2008 09:58:51 +0000</pubDate>
		<guid isPermaLink="false">http://bappoy.pp.ru/?p=336#comment-3212</guid>
		<description>Классный хак для баша! Можно легко адаптировать под свои нужды. В закладки, как говорится :)</description>
		<content:encoded><![CDATA[<p>Классный хак для баша! Можно легко адаптировать под свои нужды. В закладки, как говорится :)</p>
]]></content:encoded>
	</item>
</channel>
</rss>

