Первоапрельское
2008
Блог свободного программиста
Те, кто частенько соединяется с удаленными серверами по ssh, знает, что если такие приложения как WinSCP (Windows), Наутилус (Gnome) или Krusader (KDE) умеют запоминать пароли, то вот с консолью дела обстоят не столь радужно. Конечно, рано или поздно, каждый находит для себя решение этой проблемы, и вот какое нашел я. Перво-наперво, нужно установить пакет expect_tcl. Далее остается лишь написать небольшой .sh скрипт, который позволит нам соединяться по ssh не вводя пароль каждый раз. Собственно, вот код :
#!/bin/bash
expect -c » spawn ssh $1@$2 -x «$4″ expect «password:»send «$3r» interact «
вызывать можно например так:
$ ssh.sh user host password command
или сделать ярлык в меню:
gnome-terminal -x /path/to/script/ssh.sh user host password command
правда есть один минус, передача 4-го параметра, то есть вызов удаленной команды, не всегда срабатывает.Вот собственно и все.
p.s. за модернизацию скрипта спасибо Николаю Мельникову
UPD: Описаный метод отнюдь не претендует на звание самого правильного и безопасного, более того, он не всегда удобен, лично я использую его в реализации собственной утилиты, о которой написал вот тут.
На днях озадачился небходимостью сгенерировать небольшой XML документ средствами Perl, но лезть в дебри CPAN, в поисках подходящих модулей стало лень. С другой стороны, обходиться банальным «print» тоже не хотелось, так как время от времени генерировать XML просто необходимо. Посему открыл текстовый редактор и начал ваять, а точнее доводить до ума некогда начатый, но так и не дописанный paсkage, по сути своей — простой генератор XML. Не на что выдающееся я естественно претендовать не собираюсь, но показать что в итоге получилось почему то захотелось.
Итак, сам pakage можно скачать тут, а вот простой пример того, что с ним можно делать:
#!/usr/bin/perl
use strict;
use base::MyXML;
our $top = MyXML->GXM(«1.0″,»utf-8″)->{«header»};
our $tag = MyXML->GXD(
«content»,
join(»,
MyXML->GXDM(«elem»,['type=app','name="Console"'],)->{«result»},
MyXML->GXDM(«elem»,['type=app','name="Editor"'],)->{«result»},
MyXML->GXDM(«elem»,['type=app','name="Player"'],)->{«result»},
),
['name="Soft"'],
)->{«result»}
open(FH,»>data.xml»);
print (FH $top.»n»);
print (FH $tag.»n»);
close(FH);
в итоге получился такой вот документ:
<?xml version=»1.0″ encoding=»utf-8″?>
<content name=»Soft»>
<elem type=»app» name=»Console» id=»1.1″ />
<elem type=»app» name=»Editor» id=»1.2″ />
<elem type=»app» name=»Player» id=»1.3″ />
</content>
На последок все же пару слов о MyXML. В распоряжении разработчика предоставляются 3 метода (пока 3
, а именно GXM(формирующий заголовок документа), GXD(формирующий открывающий, закрывающий теги, атрибуты по необходимости, и собственно, то, что между тегами заключено) и GXDM(формирующий «пустой тег» с атрибутами по необходимости).
Comment